前言

本章内容适合初学者(本人也是初学者)。

上一章内容(http://www.cnblogs.com/vanezkw/p/6414392.html)是在浏览器中显示Hello World,今天我们要讲的是把Hello World这样的字符串从数据库里面取出来(比较接近实际开发)。

准备工作

1、安装mysql。

2、安装mysql可视化工具Navicat。(由于本人偏好,所以暂时用这个可视化工具)。

3、Intellij安装mysql jdbc驱动。

4、在GlassFish中加入mysql jdbc驱动。

安装启动mysql

1、下载地址https://www.mysql.com/downloads/ (虽然你可以搜到很多下载的渠道,但是建议在官方下载,你懂的)。

2、根据提示进行安装配置。(这不是重点,不清楚的自己google)。

3、如果出现安装不上那应该是系统权限问题,采用系统管理员权限安装就可以了。(我在win10下进行安装遇到了权限问题)。

4、启动mysql服务。

5、加入测试数据。数据库我们命名成RESTful,加一个表Product,里面包括4个字段:id、name、cover、price。具体如图:

为了方便测试就先加了一条记录。

安装Navicat

我们用Navicat进行可视化操作,当然你可以直接在mysql提供的工具或命令行进行数据操作。

1、下载地址https://www.navicat.com/download,至于是否付费或者破解就看你自己了,你懂的。

2、根据提示进行安装。

Intellij安装mysql jdbc驱动

1、在Intellij在主菜单中选择View|Tool Windows|Databases。

2、右边弹出Database栏目,选择上面的“+”,依次选择DataSource|MySQL,此时弹出一个Data Source and Drive的对话框。

3、点击左上方“+”,选择MySQL。根据提示填写右边的字段。

4、点击右边面板的Driver:MySQL,下载MySQL驱动。

在GlassFish中加入mysql jdbc驱动。

1、把mysql的驱动(eg:mysql-connector-java-5.1.35-bin.jar)放入..\glassfish4\glassfish\lib (具体参考你的GlassFish的安装目录)。

编码

1、加入mysql驱动jar包。

2、目录结构如下:

3、目录结构介绍。bo里面是实体类,dao是数据库相关的操作类(为了方便理解流程所以不涉及ORM之类的东西)。下面来看看每个类的具体情况:

BoProduct.java

package bo;

/**
* Created by Administrator on 2017/2/19 0019.
*/
public class BoProduct {
private int id;
private String name;
private String cover;
private long price; public BoProduct(int id, String name, String cover, long price) {
this.id = id;
this.name = name;
this.cover = cover;
this.price = price;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getCover() {
return cover;
} public void setCover(String cover) {
this.cover = cover;
} public long getPrice() {
return price;
} public void setPrice(long price) {
this.price = price;
} @Override
public String toString() {
return "BoProduct{" +
"id=" + id +
", name='" + name + '\'' +
", cover='" + cover + '\'' +
", price=" + price +
'}';
}
}

DbConnection.java

package dao;

/**
* Created by Administrator on 2017/2/19 0019.
*/ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class DbConnection { public Connection getConnection() throws Exception {
try {
String connectionURL = "jdbc:mysql://localhost:3306/RESTful";
Connection connection = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
return connection;
} catch (SQLException e) {
e.printStackTrace();
throw e;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}

DbProductManager.java

package dao;

import bo.BoProduct;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2017/2/19 0019.
*/
public class DbProductManager { public List<BoProduct> getAllProduct() {
List<BoProduct> reuslt = null;
DbConnection database = new DbConnection();
Connection connection = null;
try {
connection = database.getConnection();
PreparedStatement ps = connection
.prepareStatement("SELECT * FROM product");
ResultSet rs = ps.executeQuery();
reuslt = new ArrayList<>();
while (rs.next()) {
BoProduct item = new BoProduct(rs.getInt("id"),rs.getString("name"),rs.getString("cover"),rs.getLong("price"));
reuslt.add(item);
}
} catch (Exception e) {
e.printStackTrace();
}
return reuslt;
}
}

HelloWorld.java

import bo.BoProduct;
import dao.DbProductManager; import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List; /**
* Created by Administrator on 2017/2/18 0018.
*/
@Path("/helloworld")
public class HelloWorld {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getClichedMessage() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("data being\n");
DbProductManager dbProductManager = new DbProductManager();
List<BoProduct> allProduct = dbProductManager.getAllProduct();
if (null != allProduct && !allProduct.isEmpty()) {
for (BoProduct item : allProduct) {
stringBuilder.append(item.toString()).append("\n");
}
}
stringBuilder.append("data end\n");
return stringBuilder.toString();
}
}

MyApplication

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set; /**
* Created by Administrator on 2017/2/18 0018.
*/
//Defines the base URI for all resource URIs.
@ApplicationPath("/")
//The java class declares root resource and provider classes
public class MyApplication extends Application {
//The method returns a non-empty collection with classes, that must be included in the published JAX-RS application
@Override
public Set<Class<?>> getClasses() {
HashSet h = new HashSet<Class<?>>();
h.add(HelloWorld.class);
return h;
}
}

运行程序

1、点击运行按钮。

2、此时IDE为你做了一些你并不需要关系的事情(非业务的):编译并部署到服务器,启动浏览器。

3、此时看到浏览器如下显示则说明你成功了。

总结

1、基本流程已经跑起来,后期需求学习的目前比较流行的一些框架。

2、下一个版本我们使用ORM框架来写数据库这一部分。

3、本人初学服务器相关知识,有错误的地方欢迎各位读者指出纠正,如果你对android开发感兴趣请加qq群196761677、311536202。

一个RESTful+MySQL程序的更多相关文章

  1. 基于SpringBoot开发一个Restful服务,实现增删改查功能

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  2. 使用python的Flask实现一个RESTful API服务器端[翻译]

    最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文将会使用python的Flask框架轻松实现一个RESTful的服务 ...

  3. 01@MySQL_Course_LabVIEW+MySQL程序开发

    LabVIEW+MySQL程序开发 大数据时代,LabVIEW程序开发怎么能少了数据库这一强大的工具,然而大多数的LabVIEW工程师对于数据库的概念了解比较少,所以本课程重点介绍如何利用MySQL, ...

  4. 通过beego快速创建一个Restful风格API项目及API文档自动化

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  5. 在Windows下设置环境变量 运行mysql程序变得更容易

    在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND   为了让运行m ...

  6. 使用python的Flask实现一个RESTful API服务器端

    使用python的Flask实现一个RESTful API服务器端 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文 ...

  7. MFC通过ODBC连接Mysql程序

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...

  8. 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】

    前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优 ...

  9. 如何快速地开发一个微信小程序

    如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...

随机推荐

  1. [转]解决Maven报错"Plugin execution not covered by lifecycle configuration"

    [转]解决Maven报错"Plugin execution not covered by lifecycle configuration" 导入Myabtis源码后,POM文件会报 ...

  2. 关于css中的border

    我一直以为css中的border是正方形的 像这样 因为我平时用的时候都是 border:1px solid #000,都是同一个颜色所以看不出来 当我给每一个边分别设置颜色的时候才发现 他们是以梯形 ...

  3. 【转】安卓布局:layout_weight的理解

    android:layout_weight详细分析介绍: 布局文件是:<?xml version="1.0" encoding="utf-8"?>& ...

  4. PHP下的命令行执行

    PHP 的命令行模式 以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数. Usage: php [options] [ ...

  5. MySQL-基本sql命令

    关于环境的搭建和数据库的连接,我直接跳过,假设电脑上已经安装好了MySQL的环境,接下来直接进行数据库的操作:(虽然数据库不区分大小写,但是本文约定:命令用大写,用户变量和字段用小写) 1.创建数据库 ...

  6. java和Ajax

    原博(实在太啰嗦了):https://netbeans.org/kb/docs/web/ajax-quickstart_zh_CN.html 1.Ajax的基本原理 Ajax 代表异步 JavaScr ...

  7. php redis 函数手册

    Redis::__construct构造函数$redis = new Redis();connect, open 链接redis服务参数host: string,服务地址port: int,端口号ti ...

  8. Selenium关于Page Objects

    介绍页面对象设计模式.一个页面对象表示在你测试的web页面用户交互的界面. 使用页面对象模式的有点: 创建可重用的代码可以在多个测试用例中使用 减少重复的代码量 如果用户界面改变,只需要修改一个地方 ...

  9. Strut、Spring、Hibernate如何实现资源整合(SSH)呢?

    Strut.Spring.Hibernate如何实现资源整合(SSH)呢? 其实很简单,我们从Spring与Hibernate的整合中可以看出来,由Spring的配置文件来管理Hiberbate的配置 ...

  10. 基于监听的事件处理——Activity本身作为事件监听器

    这种形式使用Activity本身作为监听器类,可以直接在Activity类中定义事件处理方法,这种形式非常简洁.但这种做法有两个缺点: 这种形式可能造成程序结构混乱,Activity的主要职责应该是完 ...