且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

通过录入用户信息实例—体验JavaBean与Servlet在JSP中应用的两种不同的实现过程

更新时间:2022-09-10 08:01:29

在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>

最后运行页面:


通过录入用户信息实例—体验JavaBean与Servlet在JSP中应用的两种不同的实现过程

显示

通过录入用户信息实例—体验JavaBean与Servlet在JSP中应用的两种不同的实现过程




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>


最后运行:

通过录入用户信息实例—体验JavaBean与Servlet在JSP中应用的两种不同的实现过程

显示

通过录入用户信息实例—体验JavaBean与Servlet在JSP中应用的两种不同的实现过程


本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1351666,如需转载请自行联系原作者