请求参数获取

用户通过浏览器向服务器发送请求,有get和post两种方式,那么我们怎么获得提交的参数呢?

方式一  getQueryStringh()和getInputStream()

1.get方式提交

System.out.println("get方式提交");
String value=req.getQueryString();
System.out.println(value);

这种方式是通过getQueryString方法获取get方式提交的参数,得到的结果类似于name=test&pwd=123这种形式

2.post方式提交

System.out.println("post方式提交");
InputStream in=req.getInputStream();
byte[] bytes=new byte[1024];
int len=0;
while ((len=in.read(bytes))!=-1){
    System.out.println(new String(bytes,0,len));
}
这种方式是通过getInputStream方法获取post方式提交的参数,得到的结果 类似于name=test&pwd=123这种形式

注意:第一种方式是get用getQueryString方法获取参数,而post方式用getInputStream方法获取参数,两种方法不通用,即get方式提交参数不能用getInputStream方法获取,同样的,post方式提交参数不能用getQueryString方法获取

方法二 getParameter()

使用getParameter方法获取参数可以获取post方式提交的参数,也可以获取get方式提交的参数,是一种通用的方法,但是这样方法只能获取单个参数的值,如果参数值有两个或两个以上,那么只能获取第一个值(例如复选框)

1.getParameter("name"):name是参数名,该方法跟根据参数名获取参数值

2.getParameterNames():获取所有的参数名,结果是一个Enumeration类型的数据。

3.getParameterValues():获取参数名对应的所有参数值

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    /**
     * getMethod():获取请求方式(get或post)
     */
    System.out.println(req.getMethod()+"方式提交");
    /**
     * getParameter()这个方法是根据名字获得值
     */
    String name=req.getParameter("name");
    String pwd=req.getParameter("pwd");
    System.out.println(name+"="+pwd);

    System.out.println("-------------------------");
    /**
     * getParameterNames():获取所有的名字,结果是一个Enumeration
     */
    Enumeration<String> enums=req.getParameterNames();
    //上面的两种方法只能获取单个的值,如果有复选框或者其他的多值,就不适合了
    while (enums.hasMoreElements()){
        String enumName=enums.nextElement();//获取名字
        //可以拿到复选框的值
        if ("hobit".equals(enumName)){
            System.out.print(enumName+":");
            String[] hobits=req.getParameterValues("hobit");
            for (String hobit:hobits){
                System.out.print(hobit+" ");
            }
            System.out.println();
        }
        else {
            String enumValue=req.getParameter(enumName);//根据名字获取值
            System.out.println(enumName+"="+enumValue);
        }
    }

简单的说一下,我这里名字为hobit的是一个复选框,表示爱好,允许用户选择多个爱好,所以这里就使用getParameterValues方法获取该参数对应的所有参数值。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HttpServletRequest是Java Servlet API中的一个接口,用于获取HTTP请求的信息。可以通过HttpServletRequest对象获取请求参数获取请求参数的方法: 1. getParameter(String name):获取单个请求参数的值。 2. getParameterValues(String name):获取多个请求参数的值,返回一个字符串数组。 3. getParameterMap():获取所有请求参数的键值对,返回一个Map对象。 4. getQueryString():获取请求参数的原始字符串。 例如,以下代码可以获取名为“username”的请求参数的值: String username = request.getParameter("username"); 如果有多个名为“hobby”的请求参数,可以使用以下代码获取它们的值: String[] hobbies = request.getParameterValues("hobby"); 如果要获取所有请求参数的键值对,可以使用以下代码: Map<String, String[]> paramMap = request.getParameterMap(); 如果要获取请求参数的原始字符串,可以使用以下代码: String queryString = request.getQueryString(); ### 回答2: HTTP协议中,客户端(浏览器)发送请求时,会携带请求参数,用于向服务端(Web应用)传递数据。而在Java Web开发中,我们可以使用HttpServletRequest对象获取请求参数。 HttpServletRequest接口是Java Servlet规范中的一个接口,它代表了客户端发送的HTTP请求。该接口中提供了获取请求参数的方法,主要有以下几种方式: 1.通过getParameter方法获取请求参数。该方法的参数是一个String类型的key,用于指定需要获取参数名,该方法返回一个String类型的值,代表该参数名所对应的值。 例如,在如下的HTTP请求中,如果需要获取参数名为“username”的值,可通过如下方式进行: GET /test.jsp?username=zhangsan HTTP/1.1 Host: localhost:8080 //Java代码 String username = request.getParameter("username"); 2.通过getParameterValues方法获取请求参数。该方法用于获取一个参数名对应的多个值,返回值类型是一个String类型的数组。 例如,在如下的HTTP请求中,如果需要获取参数名为“hobby”的多个值,可通过如下方式进行: GET /test.jsp?hobby=sports&hobby=music HTTP/1.1 Host: localhost:8080 //Java代码 String[] hobbies = request.getParameterValues("hobby"); 3.通过getParameterMap方法获取所有请求参数。该方法返回一个Map对象,其中key为参数名,value为该参数名对应的值(数组类型)。 例如,在如下的HTTP请求中,如果需要获取所有参数,可通过如下方式进行: GET /test.jsp?username=zhangsan&age=20&hobby=sports&hobby=music HTTP/1.1 Host: localhost:8080 //Java代码 Map<String, String[]> parameterMap = request.getParameterMap(); 需要注意的是,在获取请求参数时,需要注意编码问题。因为HTTP请求中的参数值都是以URL编码(URL Encode)后的形式传递的,所以需要通过request.setCharacterEncoding方法进行解码,以避免出现中文乱码等问题。例如: //设置请求参数编码格式,一般为"UTF-8"或"GBK" request.setCharacterEncoding("UTF-8"); 综上所述,获取请求参数是Java Web开发中非常常见的一个需求,我们可以通过HttpServletRequest接口提供的一系列方法来实现。在实际开发中,需根据具体情况选择合适的方法进行使用。 ### 回答3: 在Web开发中,HttpServletRequest是一个很重要的接口,它是代表客户端发出的HTTP请求的接口,其中我们可以通过HttpServletRequest获取请求参数。 我们一般在Java Servlet开发中使用HttpServletRequest对象得到HTTP请求的方法参数,其中包括GET、POST方式的请求数据。HttpServletRequest对象内部有一个Map对象,它是由请求参数(request parameter)所组成,我们可以通过调用request.getParameter(name)方法得到请求参数的值。 获取请求参数的第一步,我们需要先获取HttpServletRequest对象。在Java Servlet中,我们可以使用request对象来获取HttpServletRequest对象,代码如下: HttpServletRequest request = (HttpServletRequest) req; 获取请求参数的第二步,我们需要获取请求参数的名称和值,代码如下: String name = request.getParameter("name"); String age = request.getParameter("age"); 在获取参数时,需要根据具体的参数类型进行转换,例如将字符串类型的参数转换成数字等。 HttpServletRequest也提供了许多其他的方法,可以更方便地进行参数获取、属性的设置等操作。例如,我们还可以用代码request.getAttribute("name")获取请求属性的值。 总之,通过HttpServletRequest对象获取请求参数是Java Servlet开发中的一个重要环节,它可以为我们更方便地处理用户请求提供帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值