JavaWeb篇_10——HttpServletRequest对象

HttpServletRequest对象

HttpServletRequest对象代表客户端浏览器的请求,当客户端浏览器通过HTTP协议访问服务器时,HTTP请求中的所有信息都会被Tomcat所解析并封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

获取请求信息

req.getRequestURL()

返回客户端浏览器发出请求时的完整URL。

req.getRequestURI()

返回请求行中指定资源部分。

req.getRemoteAddr()

返回发出请求的客户机的IP地址。

req.getLocalAddr()

返回WEB服务器的IP地址。

req.getLocalPort()

返回WEB服务器处理Http协议的连接器所监听的端口。

java 复制代码
package com.java;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class GetRequestInfoServlet extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


       //获取请求的完整url
       String RequestURL = req.getRequestURL().toString();

       //获取请求的URI
       String requestURI = req.getRequestURI();

       //获取发出请求的客户机的IP地址。
       String clientAddr = req.getRemoteAddr();

       //获取服务端所在的IP地址
       String serverAddr = req.getLocalAddr();

       //获取WEB服务器处理Http协议的连接器所监听的端口。
       int localPort = req.getLocalPort();

       PrintWriter printWriter = resp.getWriter();
       printWriter.println("URL:"+RequestURL);
       printWriter.println("URI:"+requestURI);
       printWriter.println("clientAddr:"+clientAddr);
       printWriter.println("serverAddr:"+serverAddr);
       printWriter.println("localPort:"+localPort);
       printWriter.flush();
       printWriter.close();
   }
}
xml 复制代码
    <servlet>
        <servlet-name>getRequestInfoServlet</servlet-name>
        <servlet-class>com.java.GetRequestInfoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>getRequestInfoServlet</servlet-name>
        <url-pattern>/getRequestInfo.do</url-pattern>
    </servlet-mapping>

获取请求表单数据

根据key获取指定value

req.getParameter("key");

根据key获取对应的value,返回一个字符串。

java 复制代码
String str = req.getParameter("key");

GetRequestDataServlet.java

java 复制代码
package com.java;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class GetRequestDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取用户名
        String userName = req.getParameter("userName");
        //获取用户名密码
        String userPwd = req.getParameter("userPwd");

        PrintWriter pw = resp.getWriter();
        pw.println("userName:"+userName);
        pw.println("userPwd:"+userPwd);
        pw.flush();
        pw.close();
    }
}

addUser.html

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="getRequestData.do" method="post">
        <input type="text" name="userName"/></br>
        <input type="password" name="userPwd"/></br>
        <input type="submit" value="OK"/>
    </form>
</body>
</html>

web.xml

xml 复制代码
    <servlet>
        <servlet-name>getRequestDataServlet</servlet-name>
        <servlet-class>com.java.GetRequestDataServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>getRequestDataServlet</servlet-name>
        <url-pattern>/getRequestData.do</url-pattern>
    </servlet-mapping>
获取复选框(checkbox组件)中的值

req.getParameterValues("checkboxkey");

获取复选框(checkbox组件)中的值,返回一个字符串数组。

java 复制代码
String[] userlikes = req.getParameterValues("checkboxkey");

GetRequestDataServlet.java

java 复制代码
public class GetRequestDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取用户名
        String userName = req.getParameter("userName");
        //获取用户名密码
        String userPwd = req.getParameter("userPwd");
        //获取复选框数据
        String[] arr = req.getParameterValues("userLike");

        List<String> list = Arrays.asList(arr);

        PrintWriter pw = resp.getWriter();
        pw.println("userName: "+userName);
        pw.println("userPwd: "+userPwd);
        pw.println("userLike: "+list);
        pw.flush();
        pw.close();
    }
}

addUser.html

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="getRequestData.do" method="post">
        用户名:<input type="text" name="userName"/></br>
        密 码:<input type="password" name="userPwd"/></br>
        爱好:<input type="checkbox" name="userLike" value="sport"/>体育
             <input type="checkbox" name="userLike" value="music"/>音乐
             <input type="checkbox" name="userLike" value="Art"/>艺术<br/>
        <input type="submit" value="OK"/>
    </form>
</body>
</html>
获取所有提交数据的key

req.getParameterNames()

获取请求中所有数据的key,该方法返回一个枚举类型。

java 复制代码
Enumeration<String> parameterNames = req.getParameterNames();
java 复制代码
//获取表单中所有的Key值
        Enumeration<String> parameterNames = req.getParameterNames();
        List<String> paraList =new ArrayList<>();
        while (parameterNames.hasMoreElements()){
            paraList.add(parameterNames.nextElement());
        }
java 复制代码
pw.println("names: "+paraList);
使用Map结构获取提交数据

req.getParameterMap()

获取请求中所有的数据并存放到一个Map结构中,该方法返回一个Map,其中key为String类型value为String[]类型。

java 复制代码
Map<String, String[]> parameterMap = req.getParameterMap()
java 复制代码
//获取请求中所有的数据
       Map<String, String[]> parameterMap = req.getParameterMap();
       Iterator<Map.Entry<String, String[]>> iterator = parameterMap.entrySet().iterator();
java 复制代码
while (iterator.hasNext()){
            Map.Entry<String, String[]> entry = iterator.next();
            String key = entry.getKey();
            String[] value = entry.getValue();
            pw.println(key + " = " + Arrays.asList(value));
        }
相关推荐
Jarlen7 分钟前
将本地离线Jar包上传到Maven远程私库上,供项目编译使用
java·maven·jar
蓑 羽12 分钟前
力扣438 找到字符串中所有字母异位词 Java版本
java·算法·leetcode
Reese_Cool20 分钟前
【C语言二级考试】循环结构设计
android·java·c语言·开发语言
严文文-Chris1 小时前
【设计模式-享元】
android·java·设计模式
Flying_Fish_roe1 小时前
浏览器的内存回收机制&监控内存泄漏
java·前端·ecmascript·es6
c#上位机1 小时前
C#事件的用法
java·javascript·c#
【D'accumulation】2 小时前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
试行2 小时前
Android实现自定义下拉列表绑定数据
android·java
茜茜西西CeCe2 小时前
移动技术开发:简单计算器界面
java·gitee·安卓·android-studio·移动技术开发·原生安卓开发