servelt如何获取jsp表单里的数据

先看一下jsp的表单里有哪些数据:

 1 <form name="regForm" action="servlet/RegServlet" method="post" >
 2               <table border="0" width="800" cellspacing="0" cellpadding="0">
 3                 <tr>
 4                     <td class="lalel">用户名:</td>
 5                     <td class="controler"><input type="text" name="username" /></td>
 6                 </tr>
 7                 <tr>
 8                     <td class="label">密码:</td>
 9                     <td class="controler"><input type="password" name="mypassword" ></td>
10                     
11                 </tr>
12                 <tr>
13                     <td class="label">确认密码:</td>
14                     <td class="controler"><input type="password" name="confirmpass" ></td>
15                     
16                 </tr>
17                 <tr>
18                     <td class="label">电子邮箱:</td>
19                     <td class="controler"><input type="text" name="email" ></td>
20                     
21                 </tr>
22            

只是部分代码,说明一下流程。

jsp表单数据里有用户名username;密码mypassword;邮箱email。

第一,需要有一个实体类专门放数据(项目里的model?)

这个类是一个javabean,有属性变量(对应表单里的数据);有针对属性变量的get和set方法。

 1 //用户实体类
 2 public class Users {
 3 
 4     private String username; //用户名
 5     private String mypassword; //密码
 6     private String email; //电子邮箱
 7 
 8     public Users()
 9     {
10         
11     }
12     
13     public String getUsername() {
14         return username;
15     }
16     public void setUsername(String username) {
17         this.username = username;
18     }
19     public String getMypassword() {
20         return mypassword;
21     }
22     public void setMypassword(String mypassword) {
23         this.mypassword = mypassword;
24     }
25     public String getEmail() {
26         return email;
27     }
28     public void setEmail(String email) {
29         this.email = email;
30     }
31 }

(可以只写属性,然后通过   右键---Source--生成getter和setter自动创建get和set方法)

第二  servelt赋值给实体类

1. 创建一个servelt

  Jsp的表单里的<form   name=” …”    action=”这里是servelt的url,一般就是  包名/servelt类名”   method=”get/post”>。上面的代码里是  servlet/RegServlet

2. Servlet里要重写doGet(),doPost() 

  表单的提交方法Method=post时:

           doGet(){  里面就直接写doPost(request,response); }

           doPost(){这里new一个第一步里的实体类,声明对应的变量}

 39         Users u = new Users();  //用来存放数据的实体类Users
 40         String username,mypassword,email; //  对应的属性变量的声明,用来接收表单数据。
  1 public class RegServlet extends HttpServlet {
  2 
  3     public RegServlet() {
  4         super();
  5     }
  6 
  7     public void destroy() {
  8         super.destroy(); // Just puts "destroy" string in log
 10     }
 11 
 18     public void doGet(HttpServletRequest request, HttpServletResponse response)
 19             throws ServletException, IOException {
 20 
 21         doPost(request,response);
 22     }
 23 
 34     public void doPost(HttpServletRequest request, HttpServletResponse response)
 35             throws ServletException, IOException {
 36 
 37         request.setCharacterEncoding("utf-8");   //防止中文乱码
 38         
 39         Users u = new Users();  //用来存放数据的实体类Users
 40         String username,mypassword,email; //  对应的属性变量的声明,用来接收表单数据。
        46         try
 47         {
 48             username = request.getParameter("username"); //通过request.getParamater ()获取表单穿进来的值。
 49             mypassword = request.getParameter("mypassword");             
51
email = request.getParameter("email"); 52 introduce = request.getParameter("introduce"); 53 birthday = sdf.parse(request.getParameter("birthday")); 64 u.setUsername(username); 65 u.setMypassword(mypassword); 67 u.setEmail(email); 79 80 //把注册成功的用户对象保存在session中 81 request.getSession().setAttribute("regUser", u); 82 //跳转到注册成功页面 83 request.getRequestDispatcher("../userinfo.jsp").forward(request,response); 84 } 85 catch(Exception ex) 86 { 87 ex.printStackTrace(); 88 } 89 90 91 } 92 98 public void init() throws ServletException { 99 // Put your code here 100 } 101 102 }

(代码不全,只是说明一下流程)

3. 然后取值

  通过request.getParamater ()获取表单穿进来的值。字符串的话用request.getParamaterValues()。

  然后用实体类的set方法赋值:

   

  所以流程就是创建一个存放表单数据的实体类,servelt里new一个实体类的对象,通过request.getParamater ()获取表单的数据,然后通过实体类对象的set方法把数据存放到对象的属性变量里

4. 然后页面跳转

 

  这里用的是服务器内部跳转, 因为servelt这个Java文件和要跳转的jsp不在一个目录,所以地址里有”   ../”,回退到根目录

  跳转之前先保存这个表单对象,也就是上面那句request.getSession().setAttribute("regUser", u)。

    

  这个regUser是一个id,目标页面获取值得时候要用

5. 目标页面获取数据

  目标页面代码
  

 1 <jsp:useBean  id="regUser" class="entity.Users" scope="session"/>   
 2      <table width="600" cellpadding="0" cellspacing="0" border="1">
 3         <tr>
 4           <td class="title">用户名:</td>
 5           <td class="content">&nbsp;<jsp:getProperty name="regUser" property="username"/></td>
 6         </tr>
 7         <tr>
 8           <td class="title">密码:</td>
 9           <td class="content">&nbsp;<jsp:getProperty name="regUser" property="mypassword"/></td>
10         </tr>
11         <tr>
12           <td class="title">E-mail:</td>
13           <td class="content">&nbsp;<jsp:getProperty name="regUser" property="email"/></td>
14         </tr>

  

  使用jsp:useBean 动作标签。<jsp:useBean id="regUser" class="entity.Users" scope="session"/> 里的  id和前面servelt里保存到session里时的id对应,class就是实体类的名(包名/类名),范围scope就是  session。

  通过jsp:getProperty标签获取属性数据: <jsp:getProperty name="regUser" property="mypassword"/></td>  。 name是javabeans的名,property就是属性值。

自此,从一个jsp页面传入的数据,通过一个存放数据的javabean实体类,一个servelt,把数据传入到了目标页面(实际上也未必需要传入到一个页面,只是这个例子里是在目标页面获取数据并显示,实际上也可能是传入到其他地方)。

 

  

猜你喜欢

转载自www.cnblogs.com/youwuyi/p/10250050.html