前言

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

上一章内容(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. 以太网数据包、IP包、TCP/UDP 包的结构(转)

    源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Head ...

  2. 图解 Monad

    原文地址: http://www.ruanyifeng.com/blog/2015/07/monad.html

  3. 【转】Linux目录下/dev/shm的理解和使用

    一般来说,现场部署  都要根据内存的大小来设定/dev/shm的大小,大部分使用的是默认的值! Linux目录下/dev/shm的理解和使用 [日期:2014-05-16] 来源:Linux社区  作 ...

  4. java和Ajax

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

  5. 得到css style

    //根据ID返回dom元素 2 var $ = function(id){return document.getElementById(id);} 3 //返回dom元素的当前某css值 4 var ...

  6. js 验证文本框只能输入数字和小数点

    第一步.添加js方法 function check(e) {     var re = /^\d+(?=\.{0,1}\d+$|$)/     if (e.value != "") ...

  7. 天兔(Lepus)监控系统慢查询分析平台安装配置

    被监控端要安装pt工具 [root@HE1~]## yum -y install perl-IO-Socket-SSL [root@HE1~]## yum -y install perl-DBI [r ...

  8. Windows Server 2008 R2防火墙入站规则

    一般服务器的端口都设置了外网无法访问,iis中创建的网站外网也是访问不了的,需要创建指定端口的入站规则后方可访问. 方法/步骤     服务器管理器-->配置-->高级安全windows防 ...

  9. LazyInitializationException--由于session关闭引发的异常

    1,页面中进行person.department.departmentName的读取 2,Action 中只读取了person,事务作用在Service的方法中 3,后台会有org.hibernate ...

  10. Redis缓存数据之简单逻辑

    并发不高的情况: 读: 读redis->没有,读DataBase->把DB数据写回redis,有的话直接从redis中取: 写: 写DataBase->成功,再写redis: 并发高 ...