目录
request对象
获取请求行
获取请求方式
获取项目的上下文路径
获取URI
获取URL
获取IP地址
获取协议版本
获取请求参数
获取请求头
获取日期头
获取数字头
获取请求体
获取请求参数
通用方式获取请求参数
单个获取
针对复选框
获取所有参数(map)
乱码问题
request对象
获取请求行
获取请求方式
//获取请求方式
String method = request.getMethod();
System.out.println(method); //Get Post
获取项目的上下文路径
//获取项目的上下文件路径
String contextPath = request.getContextPath();
System.out.println(contextPath);
URI 统一资源标识符
URL 定义资源定位符
获取URI
String requestURI = request.getRequestURI();
获取URL
StringBuffer requestURL = request.getRequestURL();
获取IP地址
String remoteAddr = request.getRemoteAddr();
获取协议版本
String protocol = request.getProtocol();
获取请求参数
获取get请求的请求参数
String queryString = request.getQueryString();//获取请求参数
System.out.println(queryString); //username=wangqi&password=123456
当我们把请求参数设置成中文时,会出现什么问题呢?
如:username=旺期&password=123456
没错,在服务器中会出现中文的编码问题。
请求后:
我们需要在程序中对编码进行解码,便可呈现中文
String queryString = request.getQueryString();
String decode = URLDecoder.decode(queryString,"utf-8");
System.out.println(decode);
post请求的请求参数在请求体中,get请求没有请求体,post请求的请求体在下面会讲。
获取请求头
String host = request.getHeader("host");
System.out.println(host); //localhost:8080
获取日期头
request.getDateHeader(name);
获取数字头
request.getIntHeader(name);
获取请求体
只有post请求中才会有请求体,其请求参数在请求体中。
获取请求参数
//post请求获取请求参数
BufferedReader reader = request.getReader();
String s = reader.readLine();
System.out.println(s);
通用方式获取请求参数
单个获取
package org.xingyun.demo;
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;
@WebServlet(name = "Servletdemo5",value = "/demo5")
public class Servletdemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
针对复选框
String[] hobbies = request.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
获取所有参数(map)
Map<String, String[]> parameterMap = request.getParameterMap();
parameterMap.forEach((key, strings) -> {
System.out.println(key);
System.out.println(Arrays.toString(strings));
});
乱码问题
在tomcat8.0以上,get请求不会出现乱码,post请求会出现乱码问题
这时,我们需要设置请求编码
request.setCharacterEncoding("utf-8");
package org.xingyun.demo;
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;
@WebServlet(name = "Servletdemo5",value = "/demo5")
public class Servletdemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
请求中文:
这就OK啦。