用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