在java web的学习过程里面,javabean和servlet都是比较重要的两部分内容。在开发中javabean可以用来实现一些业务逻辑或者封装一些业务的对象;而Servlet不但可以用来处理HTTP请求中的业务逻辑,还可以输出HTML代码来显示指定页面。下面就通过录入用户信息实例展开详细的分析,以便更方便体验JavaBean与Servlet在JSP页面中应用的两种不同的实现过程
JavaBean
在JSP页面中应用JavaBean主要通过JSP动作标签<jsp:useBean>、<jsp:getProperty>、<jsp:setProperty>来实现对JavaBean对象的操作。
先来了解一下学习JavaBean中有几个比较重要的知识点:
setXXX()方法//提供为JavaBean中的属性赋值的方法
getXXX()方法//提供公共的访问方法
<jsp:useBean>:实例化javaBean对象
<jsp:getProperty>:获取JavaBean的属性信息。
<jsp:setProperty>:对JavaBean的属性在JSP页面中赋值
本实例中实现档案管理系统,在其中录入用户信息功能。其开发步骤如下:
(1)创建一个Person类,将其放置在com.lxy.bean包中,实现对用户信息封装。在person类中包含4个属性.
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
|
package
com.lxy.bean;
public
class
Person {
private
String name;
private
int
age;
private
String sex;
private
String add;
public
String getName(){
return
name;
}
public
void
setName(String name){
this
.name=name;
}
public
int
getAge(){
return
age;
}
public
void
setAge(
int
age){
this
.age=age;
}
public
String getSex(){
return
sex;
}
public
void
setSex(String sex){
this
.sex=sex;
}
public
String getAdd(){
return
add;
}
public
void
setAdd(String add){
this
.add=add;
}
}
|
(2)创建程序的主页面index.jsp,放置录入用户信息的表单。(提示:表单属性名称最好设置成为JavaBean中的属性名称,这样就可以通过“<jsp:setProperty property="*">”的形式来接收所有参数,减少代码量。如果将年龄文本框name属性设置为age,它对应Person类的age.)
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
|
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030"
>
<
title
>添加用户信息</
title
>
</
head
>
<
body
>
<
form
action
=
"deal.jsp"
method
=
"post"
>
<
table
align
=
"center"
width
=
"400"
height
=
"200"
border
=
"1"
>
<
tr
>
<
td
align
=
"center"
colspan
=
"2"
height
=
"40"
>
<
b
>添加用户信息</
b
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>姓 名:
</
td
>
<
td
><
input
type
=
"text"
name
=
"name"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>年 龄:
</
td
>
<
td
><
input
type
=
"text"
name
=
"age"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>性 别:
</
td
>
<
td
><
input
type
=
"text"
name
=
"sex"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>住 址:
</
td
>
<
td
><
input
type
=
"text"
name
=
"add"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"center"
colspan
=
"2"
>
<
input
type
=
"submit"
value
=
"添加"
>
</
td
>
</
tr
>
</
table
>
</
form
>
</
body
>
</
html
>
|
(3)创建deal.jsp的处理页,用于对index.jsp页面中表单的提交请求处理。该页面将获取表单所提交的所有信息,然后将获取的用户信息输出到页面中。
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
|
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030"
>
<
title
>处理页</
title
>
</
head
>
<
body
>
<%request.setCharacterEncoding("GB18030"); %> //通过request的setCharacterEncoding()方法指定编码格式进行解决乱码问题
<
jsp:useBean
id
=
"person"
class
=
"com.lxy.bean.Person"
scope
=
"page"
>
<
jsp:setProperty
name
=
"person"
property
=
"*"
/>
</
jsp:useBean
>
<
table
align
=
"center"
width
=
"400"
>
<
tr
>
<
td
align
=
"right"
>姓 名:
</
td
>
<
td
><
jsp:getProperty
property
=
"name"
name
=
"person"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>年 龄:
</
td
>
<
td
><
jsp:getProperty
property
=
"age"
name
=
"person"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>性 别:
</
td
>
<
td
><
jsp:getProperty
property
=
"sex"
name
=
"person"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>住 址:
</
td
>
<
td
><
jsp:getProperty
property
=
"add"
name
=
"person"
/>
</
td
>
</
tr
>
</
table
>
</
body
>
</
html
>
|
最后运行页面:
显示
Servlet
Servlet与JavaBean的方法有比较大的区别。
实现用户信息的添加功能,并创建字符编码过滤器,避免中文乱码现象的产生。
(1)创建字符编码过滤器对象,其名称为CharactorFilter类。该类实现了javax.servlet.Filter接口,并在doFilter()方法中对请求中的字符编码格式进行设置:
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
|
package
com.lixiyu;
import
java.io.IOException;
import
javax.servlet.Filter;
import
javax.servlet.FilterChain;
import
javax.servlet.FilterConfig;
import
javax.servlet.ServletException;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
public
class
CharactorFilter
implements
Filter{
String encoding=
null
;
//字符编码
public
void
destroy(){
encoding=
null
;
}
public
void
doFilter(ServletRequest request,ServletResponse response
,FilterChain chain)
throws
IOException,ServletException{
if
(encoding!=
null
){
//判断字符编码是否为空
request.setCharacterEncoding(encoding);
//设置request的编码格式
response.setContentType(
"text/html;charset="
+encoding);
//设置response字符编码格式
}
chain.doFilter(request, response);
//传递到下一过滤器
}
public
void
init(FilterConfig filterConfig)
throws
ServletException{
encoding=filterConfig.getInitParameter(
"encoding"
);
//获取初始化参数
}
}
|
(2)创建了过滤器对象之后,需要对过滤器进行一定的配置才可以正常使用:
1
2
3
4
5
6
7
8
9
10
11
12
|
<
filter
>
<
filter-name
>CharactorFilter</
filter-name
>
<
filter-class
>com.lixiyu.CharactorFilter</
filter-class
>
<
init-param
>
<
param-name
>encoding</
param-name
>
<
param-value
>UTF-8</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>CharactorFilter</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
|
技巧:在web.xml文件中配置过滤器,其过滤器的URL映射可以使用正则表达式进行配置,如果上面中使用的“/*”来匹配所有请求。
(3)创建AddServlet类,继承HttpServlet,是处理添加用户信息请求的Servlet对象:
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
|
package
com.lixiyu;
import
java.io.IOException;
import
java.io.PrintWriter;
import
javax.servlet.ServletException;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AddServlet
*/
public
class
AddServlet
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public
AddServlet() {
super
();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
//处理GET请求
// TODO Auto-generated method stub
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
//处理POST请求
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
//获取PrintWriter
String name=request.getParameter(
"name"
);
//获取用户信息
String age=request.getParameter(
"age"
);
String sex=request.getParameter(
"sex"
);
String add=request.getParameter(
"add"
);
out.print(
"<h2>用户信息添加成功</h2><hr>"
);
//输出用户信息
out.print(
"姓名:"
+name+
"<br>"
);
out.print(
"年龄:"
+age+
"<br>"
);
out.print(
"性别:"
+sex+
"<br>"
);
out.print(
"地址:"
+add+
"<br>"
);
out.flush();
//刷新流
out.close();
//关闭流
}
}
|
AddServlet类主要通过doPost()方法实现添加图书管理信息请求的处理,其方式是将所获取的信息数据直接输出到页面中。
(4)在web.xml中对Servlet进行配置:
1
2
3
4
5
6
7
8
|
<
servlet
>
<
servlet-name
>AddServlet</
servlet-name
>
<
servlet-class
>com.lixiyu.AddServlet</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>AddServlet</
servlet-name
>
<
url-pattern
>/AddServlet</
url-pattern
>
</
servlet-mapping
>
|
(5)创建index.jsp的页面,用于放置表单:
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
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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
>添加用户信息</
title
>
</
head
>
<
body
>
<
form
action
=
"AddServlet"
method
=
"post"
>
<
table
align
=
"center"
border
=
"1"
width
=
"350"
>
<
tr
>
<
td
class
=
"2"
align
=
"center"
colspan
=
"2"
>
<
h2
>添加用户信息</
h2
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>姓 名:</
td
>
<
td
>
<
input
type
=
"text"
name
=
"name"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>年 龄:</
td
>
<
td
>
<
input
type
=
"text"
name
=
"age"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>性 别:</
td
>
<
td
>
<
input
type
=
"text"
name
=
"sex"
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
>地 址:</
td
>
<
td
>
<
input
type
=
"text"
name
=
"add"
>
</
td
>
</
tr
>
<
tr
>
<
td
class
=
"2"
align
=
"center"
colspan
=
"2"
>
<
input
type
=
"submit"
value
=
"添 加"
>
</
td
>
</
tr
>
</
table
>
</
form
>
</
body
>
</
html
>
|
最后运行:
显示
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1351666,如需转载请自行联系原作者