上一篇完成Java Web开发平台的搭建,现在可以开始在本地编写代码。

2.1 开发环境的搭建

本地开发环境的搭建可以参考Tomcat安装及配置教程

2.2 编写代码

2.2.1

这里使用的是Head First Servlets & JSP 第三章中的示例代码。

进入Window—>Open Perspective,选择“Java EE”。

新建Dynamic Web Project,填写Project name为:Beer。

  • 在src目录下新建类

新建类1

  • 包名为:com.example.model,类名为:BeerExpert

新建类2

  • 代码如下:
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
package com.example.model;
import java.util.*;
public class BeerExpert{
public List getBrands(String color){
List<String> brands = new ArrayList<String>();
if(color.equals("amber")){
brands.add("Jack Amber");
brands.add("Red Moose");
}
else{
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
return brands;
}
}
  • 同样在src目录下新建类,包名为:com.example.web,类名为:BeerSelect。
  • 代码如下:
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
package com.example.web;
import com.example.model.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class BeerSelect extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
request.setAttribute("styles", result);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
}
}
  • 类似地在WebContent目录下新建HTML,文件名为:form。

  • 代码如下:

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Beer</title>
</head>
<body>
<h1 align = "center">Beer Selection Page</h1>
<form method = "POST"
action = "SelectBeer.do">
Select beer characteristics<br/>
Color:
<select name = "color" size = "1">
<option value = "light">light</option>
<option value = "amber">amber</option>
<option value = "brown">brown</option>
<option value = "dark">dark</option>
</select>
<br/><br/>
<input type = "SUBMIT">
</form>
</body>
</html>
  • 类似地在WebContent目录下新建JSP,文件名为:result。

  • 代码如下:

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
<%@ page language="java" contentType="text/html; charset=UTF-81" pageEncoding="UTF-8" import = "java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Result</title>
</head>
<body>
<h1 align = "center">Beer Recommendations JSP</h1>
<%
List styles = (List)request.getAttribute("styles");
Iterator it = styles.iterator();
while(it.hasNext()){
out.println("<br/>try: " + it.next());
}
%>
</body>
</html>
  • 类似地在WebContent/WEB-INF目录下新建web.xml。

  • 代码如下:

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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Beer</display-name>
<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>form.html</welcome-file>
</welcome-file-list>
</web-app>

2.2.2

这里依照web.xml的内容分析一下上述代码。

  • <welcome-file>标签指定form.html文件为初始文件。form中,<select>标签指定了一个下拉列表,包含“beer characteristics——color”,选项经SelectBeer.do提交。
  • 综合<servlet><servlet-mapping>标签指定SelectBeer.do为com.example.web.BeerSelect。
  • BeerSelect得到提交的参数“color”,传递给BeerExpert中的getBrands()函数,得到相应的返回值result。
  • 返回值result经迭代器由JSP页面显示。

2.3 本地运行测试

  • 如2.2创建工程Beer后,进入Run As,选择Run on Server。

运行方式

  • 选择本地的Tomcat(若服务器未启动,会提示启动服务器)。

选择本地服务器

  • 页面显示form.html的内容。

form的内容

  • 点击“提交”,按钮页面显示result.jsp的内容。

result的内容

  • 本地运行测试成功。