HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,Htto请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest,可以获得客户端的所有信息
应用场景
获取前端传递的参数,请求转发
req.getParameter("username");//返回单个
req.getParameterValues("pag");//返回一个String数组
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决乱码问题
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbys = req.getParameterValues("hobbys");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
//重定向
//resp.sendRedirect();
//转发
//this.getServletContext();
//通过请求转发
//这里的“/"代表当前的web应用
req.getRequestDispatcher("/r/success.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//虽然请求的是post但实际上还是走doGet方法
doGet(req,resp);
}
}
<%@ page contentType="text/html; UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<div style="text-align: center">
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"> <br>
爱好:
<input type="checkbox" name="hobbys" value="A"> A
<input type="checkbox" name="hobbys" value="B"> B
<input type="checkbox" name="hobbys" value="C"> C
<br>
<input type="submit">
</form>
</div>
</body>
</html>
请求转发和重定向的区别
- 相同点:
- 页面都会实现跳转
- 不同点
- 请求转发的时候,url不会发生变化:307
tml>
- 请求转发的时候,url不会发生变化:307
#### 请求转发和重定向的区别
- 相同点:
- 页面都会实现跳转
- 不同点
- 请求转发的时候,url不会发生变化:307
- 重定向时,url地址栏会发生变化:302