Servlet的5种方式实现表单提交,后台获取表单数据

来源:互联网 发布:淘宝店铺怎么打开 编辑:程序博客网 时间:2024/05/18 22:45

注册页面的代码

<!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>

用户信息类

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

接收方式一

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

接收方式三 利用反射

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 工具来进行封装数据

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流来进行接收(一般字符串啥的不用这个方法,一般是文件上传下载时候才会使用这种方法)因为接收到的字符串各种乱码,编码问题解决不好…看了一下果然很多乱码!算了不写了

原创粉丝点击