HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
request内部也维护一个map集合 添加获取删除值 作用范围:只对一次请求有效
获取表单提交的值(常用)
public class lianxi extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String gender = request.getParameter("gender");
// 获取表单提交的多个值使用
String[] hobbies = request.getParameterValues("hobbies");
String city = request.getParameter("city");
System.out.println(username + " " + password + " " + gender + " " + Arrays.toString(hobbies) + " " + city);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
// 把请求中的参数 放到map中(常用)
Map<String, String[]> map = request.getParameterMap();
for (String key : map.keySet()) {
String[] value = map.get(key);
for (String string : value) {
System.out.println(string);
}
}
请求转发
一次请求 并且响应到网页的是转发后的响应结果
// 请求转发
// 通过请求对象获取请求转发器
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
// 转发
请求重定向
两次请求 超出了Request域的作用范围 不能使用Request域进行传值
// 请求重定向
// 参数是重定向的地址
response.sendRedirect("/sh-web-03/demo03");
请求包含
一次请求 可以用Request域传值 两个Servlet的响应结果会一起返回给浏览器
// 请求包含
// 获取请求转发器
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
// 包含方法
dispatcher.include(request, response);