JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
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 {@Overrideprotected 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");}@Overrideprotected 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