首页 > 编程知识 正文

servlet接收表单数据(servlet请求处理方式)

时间:2023-05-03 13:41:35 阅读:68268 作者:495

文章目录-1、中文乱码问题解决0、简介1、getParameter从参数名称获取参数值2、getParameterValues从参数名称获取参数值数组3、getParameterNames均为

-1、解决中文乱码问题

开始之前,解决中文乱码的问题。 Tomcat 8以上解决了GET方式的中文乱码问题,但没有解决开机自检方式的乱码。 只需在代码中添加一行。

request.setcharacterencoding (utf-8 ); 没关系

0、概要进入正题,下表介绍了获取请求参数的常用方法。

方法说明从stringgetparameter[stringname]参数名称中获取参数值string [ ] getparameter values [ string name ] 从参数名称获取参数值数组enumerationstringgetparametername获取所有请求参数的名称MapString,String[] getParameterMap ) )获取所有参数

formaction=' request demo4' method=' post ' input type=' text ' name=' username ' placeholder='用户名' br input type=游戏input type=' checkbox ' name=' hobby ' value='学习'学习brinputtype

1、getParameter从参数名称中获取的参数值如下图所示。

其中红色框为参数名称,蓝色框为值

使用getParameter获取所有用户输入的值。 代码如下。

@ web servlet (/requestdemo4) ) publicclassrequestdemo4extends http servlet { protectedvoiddopost } httpservletrequestrequestrequest htpservletretretred eption,ioexception(/0,解决中文乱码问题的request.setcharacterencoding (utf-8 ) )。 system.out.println('1,从参数名称中获取参数值:'); //1、参数名称到参数值string username=request.getparameter (' username ); 系统. out.println (username : ) username ); string password=request.getparameter (' password ); system.out.println (password 3360 ) password ); string hobby1=request.getparameter (' hobby ); system.out.println(hobby: ) hobby1); } protectedvoiddoget (httpservletrequestrequest,http servlet响应) throws ServletException,io exception { this .

单击“提交”后,执行结果如下:

虽然两个复选框都被选中,但可以看到,以getParameter方式仅获取第一个复选框的值显然不符合我们的要求

2、从getParameterValues参数名获取参数值数组为了解决上述问题,引入了一种叫getParameterValues的方法,该方法返回参数值数组

根据上面的情况,只为复选框编写代码。

@ web servlet (/request demo4) ) publicclassrequestdemo4extends https

ervlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); System.out.println("2、根据参数名称获取参数值的数组:"); //2、根据参数名称获取参数值的数组 String[] hobbies = request.getParameterValues("hobby"); for (String hobby : hobbies) { System.out.println("hobby : " + hobby); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}

得到的结果是:

成功解决!

3、getParameterNames 获取所有请求参数的名称

getParameterNames方法返回的是Enumeration类型,下面实现一下:

@WebServlet("/requestDemo4")public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); //3、获取所有请求参数的名称 System.out.println("3、获取所有请求参数的名称"); Enumeration<String> parameterNames = request.getParameterNames(); while(parameterNames.hasMoreElements()){ String name = parameterNames.nextElement(); String value = request.getParameter(name); System.out.println(name + " : " + value); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}

复选框全选,实现效果:

这个方法的好处是,不需要知道参数名称,就可以直接枚举出所有的参数名称和参数值,如果参数太多,用上面的通过参数名称获取值代码会变得很多很冗余;但是它有一个致命的缺点就是:它只能获取复选框选中的第一个值…………………………

请继续往下看第四个方法:

4、getParameterMap 获取所有参数的Map集合

第四种方法完美解决了上面的问题,它返回Map<String,String[]>,所以只需要遍历Map就好了,实现一下:

@WebServlet("/requestDemo4")public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); System.out.println("-----------------------------------------------------"); //4、获取所有参数的Map集合 System.out.println("4、获取所有参数的Map集合"); Map<String, String[]> parameterMap = request.getParameterMap(); Set<String> keySet = parameterMap.keySet(); for(String name : keySet){ String[] strings = parameterMap.get(name); System.out.print(name + ": "); for (String value : strings){ System.out.print(value + " "); } System.out.println(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}

复选框全选,结果如下:

Bingo!!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。