用servlet实现一个注册的小功能 ,后台获取数据。
注册页面:
注册页面代码 :
<!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一致,约定要优于编码
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页面(后台接收数据方法一)
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); } }
得到的数据:
接收方法二:
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
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框架就是使用这个来获取表单数据的哦!)
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流来进行接收(一般字符串啥的不用这个方法,一般是文件上传下载时候才会使用这种方法)因为接收到的字符串各种乱码,编码问题解决不好
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); } }
得到的结果:(各种乱码 。。。。)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
unity的错误解决办法:NullReferenceException: Object reference not set to an instance of an object;tiny proje
Hadoop 之 HDFS (HDFS 数据流的 读写 流程)
听说你一读Spring源码就懵逼?我帮你把架子搭好了,你填就行!
首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)
[JVM学习之路]一、初识JVM,了解其结构、模型及生命周期
网友评论