Servlet中URL请求参数获取

本文介绍了如何使用Servlet获取HTTP请求中的参数,包括通过request.getParameter()获取单一参数,利用request.getParameterNames()遍历所有参数名称,使用request.getParameterMap()获取所有参数及其值的映射集合,以及如何处理同名参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                        本篇介绍servle请求参数获取,整理记录自己的学习笔记。



       //获取单一参数,request.getParameter()返回为一个String类型

         System.out.println(request.getParameter("name")+request.getParameter("password"));

       //request.getParameterNames()返回一个枚举类型

       Enumeration<String> paramName = request.getParameterNames();
      while (paramName.hasMoreElements()) {
            String string = (String) paramName.nextElement();
            System.out.println(string+":"+request.getParameter(string));
        }

      //request.getParameterMap()返回一个Map<String,String[]>

   Map<String,String[]> paramMap =request.getParameterMap();
f or (String key : paramMap.keySet()) {
            System.out.println(key+":"+Arrays.toString(paramMap.get(key)));
        }

//获取多个同名参数值,多用于多选项获取。
System.out.println(Arrays.toString(request.getParameterValues("name")));

URL访问只能触发get请求,参数随URL携带

post请求可以通过F orm的method选项来设定。post 的请求:参数不随URL携带。

这边也记录下请求转发和重定向

//请求转发,url不变。等于一次请求,服务器行为
/     request.getRequestDispatcher("login.html").forward(request, response);

//重定向->URL变化,等于发起了两次,客户端行为
    response.sendRedirect("login.html");

### Servlet 中 HTTP 请求参数的作用 HTTP 请求参数用于客户端向服务器传递数据。这些参数可以附加在 URL 后面作为查询字符串,也可以放在请求体中。对于 GET 请求来说,参数通常位于 URL 的查询部分;而对于 POST 请求,则更多情况下是在请求体内携带。 #### 参数的主要作用如下: - **表单提交**:当网页上的 HTML 表单被提交给服务器处理时,表单字段的数据会被编码成键值对的形式并发送到指定的目标地址。 - **动态页面生成**:Web 应用程序可以根据接收到的不同参数来决定要显示的内容或执行的操作。 - **状态管理**:某些应用可能利用隐藏域或其他机制,在多个请求之间保持特定的状态信息。 --- ### 如何在 Servlet获取 HTTP 请求参数 为了能够读取来自客户端的请求参数,在 Java Servlet API 中提供了 `HttpServletRequest` 接口及其相关的方法。具体而言,可以通过以下几种方式来取得不同类型的请求参数: #### 使用 `getParameter(String name)` 方法 这是最常用的手段之一,适用于大多数场景下的简单参数提取。此方法接收一个表示参数名称的字符串,并返回对应的值(如果存在的话),其结果总是以 `String` 形式呈现[^3]。 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 假设有一个名为 'username' 的参数 String username = request.getParameter("username"); } ``` #### 处理多值参数 有时同一个名字可能会对应多个值,比如复选框控件就经常如此设置。此时应该调用 `getParameterValues(String name)` 来获得所有的匹配项组成的数组。 ```java // 对于具有相同名目的多项选择列表或多选按钮组 String[] hobbies = request.getParameterValues("hobby"); if (hobbies != null && hobbies.length > 0){ for (String hobby : hobbies){ System.out.println(hobby); } } ``` #### 解析复杂结构化数据 针对 AJAX 调用或者其他形式上传送过来较为复杂的 JSON 或 XML 数据流的情况,就需要先解析整个输入流再从中抽取所需的信息了。这涉及到更高级别的序列化/反序列化进程以及第三方库的支持。 ```java BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuilder jsonInputString = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { jsonInputString.append(line); } ObjectMapper objectMapper = new ObjectMapper(); Map<String,Object> map = objectMapper.readValue(jsonInputString.toString(), Map.class); for (Map.Entry<String, Object> entry : map.entrySet()){ System.out.println(entry.getKey() + ":" + entry.getValue()); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值