servlet如何获取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//⽤户实体类
2public class Users {
3
4private String username; //⽤户名
5private String mypassword; //密码
6private String email; //电⼦邮箱
7
8public Users()
9 {
10
11 }
12
13public String getUsername() {
14return username;
15 }
16public void setUsername(String username) {
17this.username = username;
18 }
19public String getMypassword() {
20return mypassword;
jsp创建21 }
22public void setMypassword(String mypassword) {
24 }
25public String getEmail() {
26return email;
27 }
28public void setEmail(String 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; // 对应的属性变量的声明,⽤来接收表单数据。
1public class RegServlet extends HttpServlet {
2
3public RegServlet() {
4super();
5 }
6
7public void destroy() {
8super.destroy(); // Just puts "destroy" string in log
10 }
11
18public void doGet(HttpServletRequest request, HttpServletResponse response)
19throws ServletException, IOException {
20
21 doPost(request,response);
22 }
23
34public void doPost(HttpServletRequest request, HttpServletResponse response)
35throws ServletException, IOException {
36
37 request.setCharacterEncoding("utf-8"); //防⽌中⽂乱码
38
39 Users u = new Users(); //⽤来存放数据的实体类Users
40 String username,mypassword,email; // 对应的属性变量的声明,⽤来接收表单数据。
46try
47 {
48 username = Parameter("username"); //通过Paramater ()获取表单穿进来的值。
49 mypassword = Parameter("mypassword");
51 email = Parameter("email");
52 introduce = Parameter("introduce");
53 birthday = sdf.Parameter("birthday"));
64 u.setUsername(username);
65 u.setMypassword(mypassword); 67 u.setEmail(email); 79
80//把注册成功的⽤户对象保存在session中
81 Session().setAttribute("regUser", u);
82//跳转到注册成功页⾯
83 RequestDispatcher("../userinfo.jsp").forward(request,response);
84 }
85catch(Exception ex)
86 {
87 ex.printStackTrace();
88 }
89
90
91 }
92
98public void init() throws ServletException {
99// Put your code here
100 }
101
102 }
(代码不全,只是说明⼀下流程)
3. 然后取值
通过Paramater ()获取表单穿进来的值。字符串的话⽤ParamaterValues()。
然后⽤实体类的set⽅法赋值:
所以流程就是创建⼀个存放表单数据的实体类,servelt⾥new⼀个实体类的对象,通过Paramater ()获取表单的数据,然后通过实体类对象的set⽅法把数据存放到对象的属性变量⾥。
4. 然后页⾯跳转
这⾥⽤的是服务器内部跳转,因为servelt这个Java⽂件和要跳转的jsp不在⼀个⽬录,所以地址⾥有” ../”,回退到根⽬录
跳转之前先保存这个表单对象,也就是上⾯那句Session().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"> <jsp:getProperty name="regUser" property="username"/></td>
6</tr>
7<tr>
8<td class="title">密码:</td>
9<td class="content"> <jsp:getProperty name="regUser" property="mypassword"/></td>
10</tr>
11<tr>
12<td class="title">E-mail:</td>
13<td class="content"> <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,把数据传⼊到了⽬标页⾯(实际上也未必需要传⼊到⼀个页⾯,只是这个例⼦⾥是在⽬标页⾯获取数据并显⽰,实际上也可能是传⼊到其他地⽅)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论