Servlet 中Request 的应用

126 阅读2分钟

「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。

与Servlet 中Response 相对应(Servlet 中Response 的使用 ),本片文章讲解Servlet 中Request 的使用。同时本片文章为方便,依旧使用HttpServlet 为例,取其中的HttpServletRequest 做讲解。

Servlet 中Request 的作用

HttpServletRequest 代表客户端的请求,用户通过Http 协议访问服务器。Http 请求中的所有信息会被封装到HttpServletRequest,通过HttpServletRequest 的方法,获取客户端的所有信息。

Servlet 中Request 的具体作用

  1. 获取前端传递的参数 image.png 从图中可以看出,关于Request 获取请求参数的方法有四个,其中第二个和第三个使用较少,这里着重介绍第一个方法和第四个方法:
String getParameter(String var1);

String[] getParameterValues(String var1);

这里也是边看代码边理解。

首先生成一个Servlet 接口实现类,然后再web.xml 中进行注册。

之后定义一个默认页面:

<html>
<body>
<h2>Hello World!</h2>
<h1>flow</h1>
<div style="text-align:center">
    <%-- 在这里表示表单的意思,以Post 的方式提交表单,提交到我们的login 请求--%>
    <form action="${pageContext.request.contextPath}/login" method="post">
        userName:<input type="text" name="userName"><br>
        pwd:<input type="password" name="password"><br>
        hobby:
        <input type="checkbox" name="hobby" value="code">code
        <input type="checkbox" name="hobby" value="movie">movie

        <br>
        <input type="submit">
    </form>
</div>
</body>
</html>

在java 代码中,使用请求参数,逻辑为:

public class LoginServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("userName");
        String pwd = req.getParameter("password");
        String[] hobbies = req.getParameterValues("hobby");
        System.out.println("===================");
        System.out.println(userName);
        System.out.println(pwd);
        System.out.println(Arrays.toString(hobbies));
        System.out.println("===================");
    }

}

这样,可以在service 方法中,使用很多方法进行参数的处理与调用。我们在实际业务开发中,使用的会很少。但是如果有使用场景,可以按照使用场景进行方法的选择,然后决定使用哪个方法完成我们具体的业务。

  1. 请求转发
public class LoginServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, 
        // 请求转发
        req.getRequestDispatcher("/r/index.jsp");
        // 获取项目路径下的页面
        req.getRequestDispatcher(req.getContextPath()+"success.jsp").forward(req, resp);
    }

}

对于请求转发也比较简单,可以参考如上代码,然后做具体的业务操作。以上就是Servlet 中Request 的大致使用场景及方法。