HttpServletRequest
对象代表客户端的请求,当客户端通过HTTP
协议访问服务器时,HTTP
请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。- 注意只有post请求才会有请求体,而get请求直接在地址中跟在?后面,多个参数使用&隔开。
请求行 | 存放请求资源、HTTP协议版本号、请求方式 |
请求头header | 一般用来存放一些cookie,token信息 |
请求体body | 一般用来存储post的参数和参数数据 |
返回值均为String字符串
方法 | 说明 |
---|---|
getRequestURL() |
返回客户端发出请求时的完整URL |
getRequestURI() |
返回请求行中的资源名部分 |
getQueryString() |
返回请求行的参数部分 |
getRemoteAddr() |
返回发出请求的客户机的IP地址 |
getRemoteHost() |
返回发出请求的客户机的完整主机名 |
getRemotePort() |
返回客户机所使用的网络端口号 |
getLocalAddr() |
返回WEB服务器的IP地址 |
getLocalName() |
返回WEB服务器的主机名 |
getMethod() |
得到客户机请求方式 (获取请求行) |
java代码
package com.torain.web;
/**
* request.getMethod();
* request.getRequestURI();
* request.getRequestURL();
* request.getContextPath();
* request.getQueryString();
* request.getRemoteAddr();
*/
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求方式
System.out.println("获取请求方式");
String method = request.getMethod();
System.out.println("method:" + method);
System.out.println();
// 获取请求地址
System.out.println("获取请求地址");
String URI = request.getRequestURI();
StringBuffer URL = request.getRequestURL();
System.out.println("URI:" + URI + "\t" + "URL:" + URL);
System.out.println();
// 获取WEB应用名称
System.out.println("获取WEB应用名称");
String webApp = request.getContextPath();
System.out.println("webApp-name:" + webApp);
System.out.println();
// 获取如果是get请求的请求请求航后面的请求参数字符串
System.out.println("获取如果是get请求的请求请求航后面的请求参数字符串");
String query = request.getQueryString();
System.out.println("query:" + query);
System.out.println();
// 获取客户端ip地址
System.out.println("获取客户端ip地址");
String IP = request.getRemoteAddr();
System.out.println("IP:" + IP);
System.out.println();
/**
* 获取请求方式
method:GET
获取请求地址
URI:/WEBTEST/LineServlet URL:http://localhost:9090/WEBTEST/LineServlet
获取WEB应用名称
webApp-name:/WEBTEST
获取如果是get请求的请求请求航后面的请求参数字符串
query:username=admin&pwd=123
获取客户端ip地址
IP:0:0:0:0:0:0:0:1
*/
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/WEBTEST/LineServlet">
用户名:<input type="text" name="username">
密码:<input type="text" name="pwd">
<input type="submit" value="SUBMIT">
</form>
</body>
</html>
- 浏览器向服务器发送请求时会将浏览器版本,本机地址、端口号等信息发送到服务器。
|方法|说明|
|----|---|
|getHeader(String name)
|获取单个请求头name对应的value值|
|getHeaders(String name)
|获取多个同名请求头对应的一组value值,因此返回枚举类型数据|
|getHeaderNames()
|获取请求头的所有name值,返回的数据也是一个枚举类型的数据,将枚举中的元素依次遍历出来,根据name获取对应的value值,即可得到Http请求头的所有信息|
java
package com.torain.web;
/**
* 获取请求头中的Referer属性
*/
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HeadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取referer
String referer = request.getHeader("referer");
response.setContentType("text/html;charset=utf-8");
if (referer.startsWith("http://localhost")) {
response.getWriter().write("护士节快乐");
} else {
response.getWriter().write("请求来源异常,拒绝访问");
}
// 获取源
String Origin = request.getHeader("origin");
System.out.println("Origin:" + Origin);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="/WEBTEST/HeadServlet">512护士节快乐</a>
</body>
</html>
- 客户机提交的参数是指form表单中存放的数据,通过表单的action属性提交到Servlet,由Tomcat引擎封装到request对象中。
java
package com.torain.web;
/**
* request.getParameter()
* request.getParameterValues()
* request.getParameterMap()
*/
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class BodyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户名和密码,返回字符串
System.out.println("// 获取用户名和密码,返回字符串");
String username = request.getParameter("username");
String password = request.getParameter("pwd");
System.out.println("username:" + username);
System.out.println("password:" + password);
// 获取爱好,返回字符串数组
System.out.println("// 获取爱好,返回字符串数组");
String[] hobbys = request.getParameterValues("hobby");
for (String s : hobbys) {
System.out.println(s);
}
// 获取整个quest对象中的参数
System.out.println("// 获取整个quest对象中的参数");
Map<String, String[]> map = request.getParameterMap();
Set<String> list = map.keySet();
for(String s : list) {
String[] strs = map.get(s);
for (String m : strs) {
System.out.println(s + ":" + m);
}
System.out.println("-------------------");
}
/*// 获取用户名和密码,返回字符串
username:admin
password:123
// 获取爱好,返回字符串数组
swim
singsong
SUBMIT
// 获取整个quest对象中的参数
username:admin
-------------------
pwd:123
-------------------
hobby:swim
hobby:singsong
hobby:SUBMIT
-------------------*/
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/WEBTEST/BodyServlet">
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="pwd"><br>
爱好:篮球:<input type="checkbox" name="hobby" value="basketball"><br>
游泳:<input type="checkbox" name="hobby" value="swim"><br>
唱个歌: <input type="checkbox" name="hobby" value="singsong"><br>
跳个舞:<input type="checkbox" name="hobby" value="dance"><br>
<input type="submit" value="SUBMIT" name="hobby" value="submit">
</form>
</body>
</html>
原文:https://www.cnblogs.com/torain/p/12879089.html