Java Web应用的开发

 

安装IDE
我使用的是 Eclipse Java EE IDE for Web Developers(去Eclipse官网下载即可)
Eclipse Java EE IDE for Web Developers

新建Dynamic Web project
点击File->new->Dynamic Web project
Dynamic Web project
第一次是没有Tomcat的,需要到Tomcat官网下载相应版本,然后解压到本地。在项目Target runtime里绑定自己下载的Tomcat文件目录。
Dynamic Web project

之后点击Next,到下面这个界面勾选Web.xml
勾选Web.xml

当时我也是参考了如下的代码,才成功搭建完成。
一张图看懂Android注册登录+服务端

一张图看懂Android注册登录+服务端

我们的数据处理与上面安卓的服务器处理类似

以下是我们项目的结构,主要是我展开的文件夹需要注意
项目的结构
首先我们先新建两个类,代码如下:
数据库连接与处理类
DBManager.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.iot.database;//自己的包
import java.sql.*;
import com.mysql.jdbc.Connection;

public class DBManager {
public final static String TABLE_NAME = "heartbeat";
public Statement getStatement() {
Connection connection = null;
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8", "账号", "密码");//填写自己服务器上的对应的数据库、账号、密码

stmt = connection.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return stmt;
}



public ResultSet query(String sql) {
ResultSet rst = null;
Statement stmt = getStatement();
System.out.println("stmt = " + stmt);
try {
rst = stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rst;
}

public int update(String sql) {
Statement stmt = getStatement();
int result = 0;
try {
result = stmt.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}

以上唯一注意的地方是数据库的连接,注意填写正确的数据库名、账号、密码

自己的接受客服端请求处理类我这里demo是插入类
新建Servlet类注意是Servlet类
Insert.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.iot.servlet;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.iot.database.DBManager;

public class Insert extends HttpServlet {
private final static long serialVersionUID = 1L;
public Insert() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8" );
DataOutputStream dos = new DataOutputStream(response.getOutputStream());
String requestcode=request.getParameter("r");//r代表请求码

switch(requestcode) {
//请求码0表示只插入最新的一次数据
case "0":
String heartbeat0 = request.getParameter("h");//h代表心跳
String result0 = doInsertHeartBeat(heartbeat0);
System.out.println("result = " + result0);
dos.writeUTF(result0);
break;
//请求码1表示实时更新数据
case "1":
String heartbeat1 = request.getParameter("h");//h代表心跳
String result1 = doUpdateHeartBeat(heartbeat1);
System.out.println("result = " + result1);
dos.writeUTF(result1);
break;
default:
break;
}

}

//0

private String doInsertHeartBeat(String heartbeat)
{
HashMap<String, Object> result = new HashMap<String, Object>();
String sql = "INSERT INTO `heartbeat` (`id`, `heartbeat`, `datetime`) VALUES ('1', "+"'" + heartbeat + "', CURRENT_TIMESTAMP);" ;
System.out.println("url = " + sql);
DBManager db = new DBManager();
int executeResult = db.update(sql);

if(executeResult == 0) {
result.put("result_code", 2);
} else {
result.put("result_code", 0);
}

return (new Gson()).toJson(result);
}


//1
private String doUpdateHeartBeat(String heartbeat)
{
HashMap<String, Object> result = new HashMap<String, Object>();
String sql = "UPDATE `realtimeheartbeart` SET `heartbeat`="+heartbeat+",`datetime`=CURRENT_TIMESTAMP WHERE id=1" ;
System.out.println("url = " + sql);
DBManager db = new DBManager();
int executeResult = db.update(sql);

if(executeResult == 0) {
result.put("result_code", 2);
} else {
result.put("result_code", 0);
}

return (new Gson()).toJson(result);
}



public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);

}
public void init() throws ServletException {
// Put your code here
}

}

我加入了请求码,客户端在发送请求的时候,以json的方式发送请求码,我这里首先解析请求码然后处理相应的操作,具体客户端代码后面会有相关代码展示。其实json格式是真的方便,嘻嘻!

然后在WEBContent的lib添加两个jar库 点击下载两个jar文件

最后修改WEB.html
在前加入以下代码

1
2
3
4
5
6
7
8
9
10
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Insert</servlet-name>
<servlet-class>com.iot.servlet.Insert</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Insert</servlet-name>
<url-pattern>/servlet/Insert</url-pattern>
</servlet-mapping>

我的web.xml
具体的名字看自己的类名,我的为Insert,我的链接为:/servlet/Insert。

然后运行,可以看到访问这个servlet类的URL,(记住这个Url这个就是你给客户端的请求url)
由于我没有连接服务器所运行后是如下界面,
运行后
基本成功!!!只剩下部署到服务器上了!
请看下一篇文章。