GET
/RequestDemo1
null
http://localhost/RequestDemo1
/RequestDemo1
HTTP/1.1
0:0:0:0:0:0:0:1
- 获取请求头数据
方法:(重点记住打*号即可)
//1.通过请求头的名称获取请求头的值(*)
String getHeader(String name)
//2.获取所有的请求头名称
Enumeration getHeaderNames()
代码:
@WebServlet(“/RequestDemo1”)
public class RequestDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求头数据:user-agent
String agent = request.getHeader(“user-agent”);
if (agent.contains(“Chrome”)) {
System.out.println(“谷歌来了…”);
} else if (agent.contains(“Firefox”)) {
System.out.println(“火狐来了…”);
}
//获取请求头数据:referer
String referer = request.getHeader(“referer”);
if (referer.contains(“/xpp”)) {
System.out.println(“牛!!!”);
} else {
System.out.println(“欢迎去优酷!”);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
- 获取请求体数据
请求体:只有POST
请求方式,才有请求体,在请求体中封装了POST请求的请求参数。
步骤:
-
获取流对象
-
在从流对象中拿数据
//1.获取字符输入流,只能操作字符数据
BufferedReader getReader()
//2.获取字节输入流,可以操作所有类型数据
ServletInputStream getInputStream()
@WebServlet(“/RequestDemo1”)
public class RequestDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求消息体-请求参数
//1.获取字符流
BufferedReader br = request.getReader();
//2.读取数据
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
}
}
输出:
username=zhangsan&password=124
-
其他功能
-
获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数。
//1. 根据参数名称获取参数值 username=zs&password=123
String getParameter(String name):
//2.根据参数名称获取参数值的数组 hobby=xx&hobby=game
String[] getParameterValues(String name)
//3.获取所有请求的参数名称
Enumeration getParameterNames()
//4.:获取所有参数的map集合
Map<String,String[]> getParameterMap()
样例:
@WebServlet(“/RequestDemo1”)
public class RequestDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter(“username”);
System.out.println(username);
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String name = parameterNames.nextElement();
String value = request.getParameter(name);
System.out.println(name + “------” + value);
}
System.out.println(“___________________”);
Map<String, String[]> parameterMap = request.getParameterMap();
parameterMap.forEach((a, b) -> System.out.println(a + “-------” + b[0]));
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
this.doGet(request, response);
}
}
输出:
小皮皮mzz
username------小皮皮mzz
password------232323
username-------小皮皮mzz
password-------232323
第二种方法演示:
游戏
学习
@WebServlet(“/RequestDemo1”)
public class RequestDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] hobbies = request.getParameterValues(“hobby”);
for (String hobby : hobbies) {
System.out.println(hobby);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
this.doGet(request, response);
}
}
输出:
game
study
中文乱码问题
-
get方式:tomcat 8 已经将get方式乱码问题解决了
-
post方式:会乱码
解决:在获取参数前,设置request
的编码request.setCharacterEncoding("utf-8");
- 请求转发:一种在服务器内部的资源跳转方式。
步骤:
//1. 通过request对象获取请求转发器对象:
RequestDispatcher getRequestDispatcher(String path)
//2. 使用RequestDispatcher对象来进行转发:
forward(ServletRequest request, ServletResponse response)
特点:
-
浏览器地址栏路径不发生变化。
-
只能转发到当前服务器内部资源中。
-
转发是一次请求。
@WebServlet(“/RequestDemo2”)
public class RequestDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}