Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

网友投稿 286 2023-05-13


Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

用servlet实现一个注册的小功能 ,后台获取数据。

注册页面:

注册页面代码 :

用户名:

密码:

性别:


爱好:足球

篮球

排球

羽毛球

所在城市:


人员实体类: 注意:人员实体类要与表单中的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");

DRlvXu//获取传过来的表单数据,根据表单中的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 names = request.getParamhttp://eterNames();

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 map = request.getParameterMap();

for(Map.Entry 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.Enumerationhttp://;

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);

}

}

得到的结果:(各种乱码 。。。。)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:强大的 Angular 表单验证功能详细介绍
下一篇:深入理解react
相关文章

 发表评论

暂时没有评论,来抢沙发吧~