0
点赞
收藏
分享

微信扫一扫

请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收

小布_cvg 2022-03-30 阅读 106


本系列博客汇总在这里:请求对象 request 和响应对象 response 汇总


目录

  • ​​一、HttpServletRequest 获取参数​​
  • ​​二、单值参数的接收过程说明​​
  • ​​三、多值参数的接收​​
  • ​​四、以上操作完整源码​​

一、HttpServletRequest 获取参数

  1. HttpServletRequest 获取参数方法
    可以使用 HttpServletRequest 获取客户端的请求参数,相关方法如下:
    (1)String getParameter(String name):通过指定名称获取参数值;
    (2)String[] getParameterValues(String name):通过指定名称获取参数值数组,有可能一个名字对应多个值,例如表单中的多个复选框使用相同的 name 时;
    (3)Enumeration getParameterNames():获取所有参数的名字;
    (4)Map getParameterMap():获取所有参数对应的 Map,其中 key 为参数名,value 为参数值。

  2. 传递参数的方式
    传递参数的方式:GET 和 POST。
    (1)GET:
    ① 地址栏中直接给出参数:http://localhost/param/ParamServlet?p1=v1&p2=v2;
    ② 超链接中给出参数:<a href=” http://localhost/param/ParamServlet?p1=v1&p2=v2”>???</a>
    ③ 表单中给出参数:<form method=”GET” action=”ParamServlet”>…
    ④ Ajax 暂不介绍
    (2)POST:
    ① 表单中给出参数:…
    ② Ajax 暂不介绍

  3. 单值参数的接收
    (1)单值参数包括单选,单值下拉框,文本,隐藏域
    (2)无论是 GET 还是 POST,获取参数的方法是相同的。
    示例

    String s1 = request.getParameter(“p1”);//返回v1
    String s2 = request.getParameter(“p2”);//返回v2

    (3)通过地址栏访问
    HelloServlet(源码见文末)请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_java
    web.xml
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_java_02
    部署项目以后启动 tomcat,地址栏访问 http://localhost/reqresp_demo2/hello?name=weiyuxuan&age=21
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_html_03
    (4)通过链接访问
    新建 html 文件(源码见文末)
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_html_04
    重启 tomcat 测试
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_单值传递_05
    (5)通过表单访问
    HelloServlet(源码见文末)
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_单值传递_06
    web.xml
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_java_07
    结果
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_xml_08
    注意:当我们选择多个 爱好 选项的时候,可以观察到只能接收到一个值,更多详见多值参数的接收

二、单值参数的接收过程说明

请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_单值传递_09

三、多值参数的接收

多值参数主要就是多选 checkbox

  • 例如在注册表单中,如果让用户填写爱好,那么爱好可能就是多个。那么hobby参数就会对应多个值:
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_html_10
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_xml_11

四、以上操作完整源码

  • HelloServlet

    package com.wyx.servlet;
    import java.io.IOException;
    import java.util.Enumeration;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class HelloServlet extends HttpServlet
    {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
    /**
    * 单值接收
    */
    // 根据请求中的key来获得值
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    String gender = request.getParameter("gender");
    String job = request.getParameter("job");
    String introduce = request.getParameter("introduce");
    // 不适合接收多选,它只能接收到多选中的第一个
    String favor = request.getParameter("favor");

    System.out.println(name);
    // 数据类型转换
    System.out.println(new Integer(age));
    System.out.println(gender);
    System.out.println(job);
    System.out.println(introduce);
    System.out.println(favor);
    System.out.println("---------------------------------------");

    /**
    * 多值接收
    */
    // 接收多选
    String[] vals = request.getParameterValues("favor");
    for (String val : vals)
    {
    System.out.print(val + ",");
    }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
    {
    doGet(req, resp);
    }
    }
  • web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.wyx.servlet.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    </web-app>
  • 1.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>a链接request接收参数</h1>
    <hr>
    <a href="/reqresp_demo2/hello?name=weiyuxuan&age=21">点击</a>
    <hr>
    <h1>表单方式来提交数据</h1>
    <form action="/reqresp_demo2/hello" method="post">
    姓名:<input name="name" type="text"><br>
    年龄:<input name="age" type="text"><br>
    性别:<input name="gender" type="radio" value="1">&nbsp;
    <input name="gender" type="radio" value="0">
    <br>
    职位:<select name="job">
    <option value="1">教授</option>
    <option value="2">副教授</option>
    </select>
    <br>
    简介:<textarea rows="10" cols="20" name="introduce"></textarea>
    <br>
    爱好:<input name="favor" type="checkbox" value="1">篮球&nbsp;
    <input name="favor" type="checkbox" value="2">足球&nbsp;
    <input name="favor" type="checkbox" value="3">羽毛球&nbsp;
    <br>
    <input type="submit" value="提交">
    </form>
    </body>
    </html>

    工程文件下载,本文件没有多值参数传递的代码(上面源码里面有),请自行添加,如下图:
    请求对象 request 和响应对象 response(3)_ HttpServletRequest 获取参数_单值参数接收_html_10

如有错误,欢迎指正!



举报

相关推荐

Request对象和Response对象

0 条评论