HttpServletRequest
HttpServletRequest 代表客户端的请求,用户通过Http 协议访问服务器,HTTP 请求中的所有信息会被封装到 HttpServletRequest ,通过这个HttpServletRequest 的方法,获得客户端的所欲信息
HttpServletRequest 常见 get 方法:
应用:
获取前端传递的参数(获取参数的 4 个方法,常见的只有2 个)
Request 应用实例(获取参数,请求转发):
先创建一个 请求类:
package com.xu.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; public class RequestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String username = req.getParameter("username"); String password = req.getParameter("password"); String[] hobbys = req.getParameterValues("hobbys"); System.out.println("===================="); System.out.println(username); System.out.println(password); System.out.println(Arrays.toString(hobbys)); System.out.println("===================="); //通过请求转发 req.getRequestDispatcher("/success.html").forward(req,resp); resp.setCharacterEncoding("utf-8"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
再到 index.jsp 文件中写好前端页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <div style="text-align: center"> <!-- 这里表单表示的意思为:以post 方式提交表单,提交到我们的login请求 --> <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="女孩">女孩 <input type="checkbox" name="hobbys" value="写代码">写代码 <input type="checkbox" name="hobbys" value="唱歌">唱歌 <input type="checkbox" name="hobbys" value="电影">电影 <br> <input type="submit"> </form> </div> </body> </html>
接着再创建一个自写 success.html 页面:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>登录成功了</h1> </body> </html>
再到web.xml 文件中 注册 Servlet 以及配置请求路径:
<servlet> <servlet-name>RequestServlet</servlet-name> <servlet-class>com.xu.servlet.RequestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RequestServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping>
测试运行结果:
笔试常见题:
请你聊聊重定向和转发的区别?
相同点:
- 页面都会实现跳转
不同点:
- 请求转发的时候,url不会发生变化 307
- 重定向的时候,url地址会发生变化 302