用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