Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例
来源:互联网 发布:ecshop php 编辑:程序博客网 时间:2024/06/05 00:44
用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
<!DOCTYPE html>
<
html
>
<
head
>
<
meta
charset
=
"UTF-8"
>
<
title
>Insert title here</
title
>
</
head
>
<
body
>
<
form
action
=
"/RequestDemo/RequestDemo3"
method
=
"post"
>
用户名:<
input
type
=
"text"
name
=
"userName"
><
br
/>
密码:<
input
type
=
"text"
name
=
"pwd"
><
br
/>
性别:<
input
type
=
"radio"
name
=
"sex"
value
=
"男"
checked
=
"checked"
>男
<
input
type
=
"radio"
name
=
"sex"
value
=
"女"
>女<
br
/>
爱好:<
input
type
=
"checkbox"
name
=
"hobby"
value
=
"足球"
>足球
<
input
type
=
"checkbox"
name
=
"hobby"
value
=
"篮球"
>篮球
<
input
type
=
"checkbox"
name
=
"hobby"
value
=
"排球"
>排球
<
input
type
=
"checkbox"
name
=
"hobby"
value
=
"羽毛球"
>羽毛球<
br
/>
所在城市:<
select
name
=
"city"
>
<
option
>---请选择---</
option
>
<
option
value
=
"bj"
>北京</
option
>
<
option
value
=
"sh"
>上海</
option
>
<
option
value
=
"sy"
>沈阳</
option
>
</
select
>
<
br
/>
<
input
type
=
"submit"
value
=
"点击注册"
>
</
form
>
</
body
>
</
html
>
人员实体类: 注意:人员实体类要与表单中的name一致,约定要优于编码
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
package
com.chensi.bean;
//实体类中的字段要与表单中的字段一致,约定优于编码
public
class
User {
private
String userName;
private
String pwd;
private
String sex;
private
String[] hobby;
private
String city;
public
String getUserName() {
return
userName;
}
public
void
setUserName(String userName) {
this
.userName = userName;
}
public
String getPwd() {
return
pwd;
}
public
void
setPwd(String pwd) {
this
.pwd = pwd;
}
public
String getSex() {
return
sex;
}
public
void
setSex(String sex) {
this
.sex = sex;
}
public
String[] getHobby() {
return
hobby;
}
public
void
setHobby(String[] hobby) {
this
.hobby = hobby;
}
public
String getCity() {
return
city;
}
public
void
setCity(String city) {
this
.city = city;
}
}
接收方法一: 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
package
com.chensi;
import
java.io.IOException;
import
java.util.Iterator;
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 获得填写的表单数据
*/
@WebServlet
(
"/RequestDemo3"
)
public
class
RequestDemo3
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"UTF-8"
);
//获取传过来的表单数据,根据表单中的name获取所填写的值
String userName = request.getParameter(
"userName"
);
String pwd = request.getParameter(
"pwd"
);
String sex = request.getParameter(
"sex"
);
String[] hobbys = request.getParameterValues(
"hobby"
);
System.out.println(userName);
System.out.println(pwd);
System.out.println(sex);
for
(
int
i =
0
; hobbys!=
null
&&i < hobbys.length; i++) {
System.out.println(hobbys[i]+
"\t"
);
}
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
}
得到的数据:
接收方法二:
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
package
com.chensi;
import
java.io.IOException;
import
java.util.Enumeration;
import
java.util.Iterator;
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 获得填写的表单数据
*/
@WebServlet
(
"/RequestDemo3"
)
public
class
RequestDemo3
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"UTF-8"
);
//获取传过来的表单数据,根据表单中的name获取所填写的值
Enumeration<String> names = request.getParameterNames();
while
(names.hasMoreElements()) {
String strings = (String) names.nextElement();
String[] parameterValues = request.getParameterValues(strings);
for
(
int
i =
0
;parameterValues!=
null
&&i < parameterValues.length; i++) {
System.out.println(strings+
":"
+parameterValues[i]+
"\t"
);
}
}
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
}
得到的数据:
接收方法三: 利用反射赋值给User
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package
com.chensi;
import
java.beans.IntrospectionException;
import
java.beans.PropertyDescriptor;
import
java.io.IOException;
import
java.lang.reflect.InvocationTargetException;
import
java.lang.reflect.Method;
import
java.util.Enumeration;
import
java.util.Iterator;
import
java.util.Map;
import
javax.servlet.ServletException;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
com.chensi.bean.User;
/**
* Servlet 获得填写的表单数据
*/
@WebServlet
(
"/RequestDemo3"
)
public
class
RequestDemo3
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"UTF-8"
);
//获取传过来的表单数据,根据表单中的name获取所填写的值
try
{
User u =
new
User();
System.out.println(
"数据封装之前: "
+u);
//获取到表单数据
Map<String, String[]> map = request.getParameterMap();
for
(Map.Entry<String,String[]> m:map.entrySet()){
String name = m.getKey();
String[] value = m.getValue();
//创建一个属性描述器
PropertyDescriptor pd =
new
PropertyDescriptor(name, User.
class
);
//得到setter属性
Method setter = pd.getWriteMethod();
if
(value.length==
1
){
setter.invoke(u, value[
0
]);
}
else
{
setter.invoke(u, (Object)value);
}
}
System.out.println(
"封装数据之后: "
+u);
}
catch
(IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
}
得到的结果:
接收方法四:使用apache 的 BeanUtils 工具来进行封装数据(ps:这个Benautils工具,Struts框架就是使用这个来获取表单数据的哦!)
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
50
51
52
package
com.chensi;
import
java.beans.IntrospectionException;
import
java.beans.PropertyDescriptor;
import
java.io.IOException;
import
java.lang.reflect.InvocationTargetException;
import
java.lang.reflect.Method;
import
java.util.Enumeration;
import
java.util.Iterator;
import
java.util.Map;
import
javax.servlet.ServletException;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.beanutils.BeanUtils;
import
com.chensi.bean.User;
/**
* Servlet 获得填写的表单数据
*/
@WebServlet
(
"/RequestDemo3"
)
public
class
RequestDemo3
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"UTF-8"
);
//获取传过来的表单数据,根据表单中的name获取所填写的值
//方法四:使用beanUtil来封装User类
User u =
new
User();
System.out.println(
"没有使用BeanUtil封装之前: "
+u);
try
{
BeanUtils.populate(u, request.getParameterMap());
System.out.println(
"使用BeanUtils封装之后: "
+u);
}
catch
(IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
}
得到的结果:
接收方法 方式五: 使用inputStream流来进行接收(一般字符串啥的不用这个方法,一般是文件上传下载时候才会使用这种方法)因为接收到的字符串各种乱码,编码问题解决不好
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.chensi;
import
java.beans.IntrospectionException;
import
java.beans.PropertyDescriptor;
import
java.io.IOException;
import
java.lang.reflect.InvocationTargetException;
import
java.lang.reflect.Method;
import
java.util.Enumeration;
import
java.util.Iterator;
import
java.util.Map;
import
javax.servlet.ServletException;
import
javax.servlet.ServletInputStream;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.beanutils.BeanUtils;
import
com.chensi.bean.User;
/**
* Servlet 获得填写的表单数据
*/
@WebServlet
(
"/RequestDemo3"
)
public
class
RequestDemo3
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"UTF-8"
);
//获取传过来的表单数据,根据表单中的name获取所填写的值
response.setContentType(
"text/html;charset=UTF-8"
);
//获取表单数据
ServletInputStream sis = request.getInputStream();
int
len =
0
;
byte
[] b =
new
byte
[
1024
];
while
((len=sis.read(b))!=-
1
){
System.out.println(
new
String(b,
0
, len,
"UTF-8"
));
}
sis.close();
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
}
得到的结果:(各种乱码 。。。。)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
原文链接:http://www.cnblogs.com/zhanghaoliang/p/5622900.html
如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!!
阅读全文
0 0
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例
- Servlet的5种方式实现表单提交,后台获取表单数据
- springmvc后台获取表单提交的数据方式
- 表单数据提交方式,及后台获取数据方式
- Servlet获取表单提交过来的数据
- 用servlet实现一个注册功能 ,后台获取数据
- servlet获取表单提交的所有数据名称和值
- servlet笔记(三)获取表单提交数据
- 小程序 —— 提交表单清除数据功能的实现
- Servlet获取表单数据-实例讲解
- 表单提交servlet的两种解决乱码方式
- Servlet获取表单数据
- servlet获取表单数据
- servlet获取表单数据
- Servlet获取表单数据
- servlet获取表单数据
- servlet 获取表单数据
- 修复TortoiseGit文件夹和文件图标不显示问题
- 树莓派-wiringPi-优先级&中断&线程
- JAVA的CAS
- 前端——小知识积累
- 11.23学习计划
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例
- 科技论文写作和发表规则
- linux
- A valid provisioning profile for this executable was not found.
- 【C++的探索路5】类的基础拓展与this指针
- linux解决cpu hight问题
- 带flag标准位的冒泡排序
- Linux文件操作
- MySQL(一)数据库概念