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

简介:

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

最后运行页面:


wKioL1LVPpLx4JNLAAEjlCMskAw630.jpg

显示

wKiom1LVPqejO8nFAADcB5hZfvo730.jpg




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 >


最后运行:

wKiom1LWXAiyBRK6AAEqMVbOuB8889.jpg

显示

wKioL1LWW_yhJzB_AAEBZ9e47fk370.jpg


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


相关文章
|
9月前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
106 5
|
9月前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
210 1
|
5月前
|
前端开发 小程序 Java
探索研究Servlet 实例
【9月更文挑战第23天】
40 11
|
8月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
159 10
|
8月前
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。
113 7
|
8月前
|
前端开发 小程序 Java
深入解析Java Servlet与JSP:构建高效服务器端应用
【6月更文挑战第23天】Java Servlet和JSP是Web开发的关键技术,用于构建高效服务器端应用。Servlet处理HTTP请求,执行业务逻辑,而JSP专注于动态HTML生成。两者结合,借助MVC架构,实现逻辑与视图分离,提高代码可读性和性能。尽管有新框架出现,Servlet和JSP仍是许多项目的基础。
153 7
|
8月前
|
SQL JSON Java
老程序员分享:Jsp分页实例
老程序员分享:Jsp分页实例
46 0
|
8月前
|
Java API
JSP 教程 之 JSP JavaBean 4
**JSP JavaBean教程摘要:** JavaBean是遵循JavaBean规范的特殊Java类,用于JSP中。`jsp:getProperty`读取属性(getter),`jsp:setProperty`设置属性(setter)。
43 0
|
8月前
|
Java API
JSP 教程 之 JSP JavaBean 3
**JSP JavaBean教程简述:** JavaBean是遵循JavaBean规范的特殊Java类,用于JSP中。`&lt;jsp:useBean&gt;`标签声明并实例化Bean,如`&lt;jsp:useBean id=&quot;date&quot; class=&quot;java.util.Date&quot; scope=&quot;page&quot;/&gt;`。`scope`决定Bean的作用域,`id`是变量名。示例显示日期:`&lt;%= date %&gt;`,输出如`Tue Jun 28 15:22:24 CST 2016`。
34 0
|
8月前
|
Java API
JSP 教程 之 JSP JavaBean 2
**JSP JavaBean 简介** JavaBean 是遵循特定规范的 Java 类,用于封装数据和业务逻辑。`StudentsBean.java` 示例展示了属性(firstName, lastName, age)及对应的 getter 和 setter 方法。编译得到 `StudentBean.class`,常放于 `/WebContent/WEB-INF/classes/包路径/` 下,以供JSP使用。
43 0