一.前端页面
<%--
Created by IntelliJ IDEA.
User: WHW
Date: 2019/7/21
Time: 10:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<fieldset>
<button><a href="http://127.0.0.1:8080/rrr/user?username=Jhon&password=10">GetRequest</a></button>
</fieldset>
<fieldset>
<form action="http://127.0.0.1:8080/rrr/user" method="post">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="text" name="password"/><br/>
<input type="submit" value="提交">
</form>
</fieldset>
</body>
</html>
二.webxml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>controller.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
</web-app>
三.Servlet类的配置
package controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @Author weihuanwen
* @Date 2019/7/22 19:18
* @Version 1.0
*/
public class UserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL ::: "+requestURL);
String requestURI = request.getRequestURI();
System.out.println("requestURI ::: "+requestURI);
String queryString = request.getQueryString();
System.out.println("queryString ::: "+queryString);
String pathInfo = request.getPathInfo();
System.out.println("pathInfo ::: "+pathInfo);
String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr ::: "+remoteAddr);
String remoteHost = request.getRemoteHost();
System.out.println("remoteHost ::: "+remoteHost);
int remotePort = request.getRemotePort();
System.out.println("remotePort ::: "+remotePort);
String localAddr = request.getLocalAddr();
System.out.println("localAddr ::: "+localAddr);
String localName = request.getLocalName();
System.out.println("localName ::: "+localName);
Map<String, String[]> parameterMap = request.getParameterMap();
for (String key : parameterMap.keySet()) {
for (String value : parameterMap.get(key)) {
System.out.println("[key:value] ::: ["+key+":"+value+"]");
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
四.测试
1.工程启动后网页界面如下:
2.点击GetRequest按钮,控制台输出如下:
requestURL ::: http://127.0.0.1:8080/rrr/user
requestURI ::: /rrr/user
queryString ::: username=Jhon&password=10
pathInfo ::: null
remoteAddr ::: 127.0.0.1
remoteHost ::: 127.0.0.1
remotePort ::: 51406
localAddr ::: 127.0.0.1
localName ::: www.howie.com
[key:value] ::: [username:Jhon]
[key:value] ::: [password:10]
3.填写表单,提交,控制台输出如下:
requestURL ::: http://127.0.0.1:8080/rrr/user
requestURI ::: /rrr/user
queryString ::: username=Jhon&password=10
pathInfo ::: null
remoteAddr ::: 127.0.0.1
remoteHost ::: 127.0.0.1
remotePort ::: 51406
localAddr ::: 127.0.0.1
localName ::: www.howie.com
[key:value] ::: [username:Jhon]
[key:value] ::: [password:10]
四.Request的相关方法介绍
调整servlet的代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL ::: "+requestURL);
String requestURI = request.getRequestURI();
System.out.println("requestURI ::: "+requestURI);
String queryString = request.getQueryString();
System.out.println("queryString ::: "+queryString);
String pathInfo = request.getPathInfo();
System.out.println("pathInfo ::: "+pathInfo);
String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr ::: "+remoteAddr);
String remoteHost = request.getRemoteHost();
System.out.println("remoteHost ::: "+remoteHost);
int remotePort = request.getRemotePort();
System.out.println("remotePort ::: "+remotePort);
String localAddr = request.getLocalAddr();
System.out.println("localAddr ::: "+localAddr);
String localName = request.getLocalName();
System.out.println("localName ::: "+localName);
String acceptEncoding = request.getHeader("Accept-Encoding");
System.out.println("acceptEncoding ::: "+acceptEncoding);
Enumeration<String> headers = request.getHeaders("Host");
while (headers.hasMoreElements()){
String value = headers.nextElement();
System.out.println("Host ::: "+value);
}
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
System.out.println("headName ::: "+headerName);
}
String username = request.getParameter("username");
System.out.println("username ::: "+ username);
String[] hobbies = request.getParameterValues("hobby");
System.out.println(Arrays.toString(hobbies));
Map<String, String[]> parameterMap = request.getParameterMap();
for (String key : parameterMap.keySet()) {
for (String value : parameterMap.get(key)) {
System.out.println("[key:value] ::: ["+key+":"+value+"]");
}
}
}
测试请求路径为:http://127.0.0.1:8080/rrr/user/XX/YY?username=Jhon&password=10&hobby=read&hobby=sing
测试结果如下:
requestURL ::: http://127.0.0.1:8080/rrr/user/XX/YY
requestURI ::: /rrr/user/XX/YY
queryString ::: username=Jhon&password=10&hobby=read&hobby=sing
pathInfo ::: /XX/YY
remoteAddr ::: 127.0.0.1
remoteHost ::: 127.0.0.1
remotePort ::: 52528
localAddr ::: 127.0.0.1
localName ::: www.howie.com
acceptEncoding ::: gzip, deflate
Host ::: 127.0.0.1:8080
headName ::: host
headName ::: user-agent
headName ::: accept
headName ::: accept-language
headName ::: accept-encoding
headName ::: connection
headName ::: upgrade-insecure-requests
username ::: Jhon
[read, sing]
[key:value] ::: [username:Jhon]
[key:value] ::: [password:10]
[key:value] ::: [hobby:read]
[key:value] ::: [hobby:sing]
方法名 | 描述 | Result |
---|---|---|
getRequestURL() | 返回客户段发出请求时的完整URL地址 | http://127.0.0.1:8080/rrr/user |
getRequestURI() | 返回请求行中的资源名部分 | /rrr/user |
getQueryString() | 返回请求行中的参数部分 | username=Jhon&password=10 |
getPathInfo() | 返回请求路径URL中Servlet路径以后参数以前的路径信息 | /XX/YY |
getRemoteAddr() | 返回发出请求的客户机的IP地址 | 127.0.0.1 |
getRemoteHost() | 返回发出请求的客户机的完整主机名 | 127.0.0.1 |
getRemotePort() | 返回客户机所使用的网络端口号 | 51691 |
getLocalAddr() | 返回WEB服务器的IP地址 | 127.0.0.1 |
getLocalName() | 返回WEB服务器的主机名(本例中主机名为host文件配置) | www.howie.com |
getHeader(string name) | 获取头信息指定请求头名的信息 | gzip, deflate |
getHeaders(String name) | 获取多组请求头名称相同的其中一组信息(这里只有一组) | 127.0.0.1:8080 |
getHeaderNames() | 获取所有头信息中请求头名称 | user-agent .......... upgrade-insecure-requests |
getParameter(String name) | 获取指定参数名的参数值 | Jhon |
getParameterValues(String name) | 获取相同参数名下的多个值(返回值为String[]) | [read, sing] |
getParameterMap() | 获取所有参数信息(以map形式封装) | [username:Jhon] [password:10] [hobby:read] [hobby:sing] |