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

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


一、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(源码见文末)在这里插入图片描述
    web.xml
    在这里插入图片描述
    部署项目以后启动 tomcat,地址栏访问 http://localhost/reqresp_demo2/hello?name=weiyuxuan&age=21
    在这里插入图片描述
    (4)通过链接访问
    新建 html 文件(源码见文末)
    11111
    重启 tomcat 测试
    在这里插入图片描述
    (5)通过表单访问
    HelloServlet(源码见文末)
    在这里插入图片描述
    web.xml
    在这里插入图片描述
    结果
    在这里插入图片描述
    注意:当我们选择多个 爱好 选项的时候,可以观察到只能接收到一个值,更多详见多值参数的接收

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

在这里插入图片描述

三、多值参数的接收

多值参数主要就是多选 checkbox

  • 例如在注册表单中,如果让用户填写爱好,那么爱好可能就是多个。那么hobby参数就会对应多个值:
    在这里插入图片描述
    在这里插入图片描述

四、以上操作完整源码

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

    工程文件下载,本文件没有多值参数传递的代码(上面源码里面有),请自行添加,如下图:
    在这里插入图片描述

如有错误,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值