JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)

发布于:2025-07-26 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到