javaweb:Request的应用——获取前端数据和请求转发


首先是获取前端数据

Request获取前端数据常用的有以下两个方法:

getParameter(String name);
getParameterValues(String name);

getParameter(String name)是获取前端单个数据,比如说文本框、单选框等,传入的他们的name,就会返回他们的value;

getParameterValues(String name);是获取前端的多个数据,比如说复选框,同样传入他们的name,会返回他们的value到一个String数组中。

然后是请求转发

前面在ServletContext中已经有过了一个请求转发的应用,Request同样可以实现请求转发,并且应用时应尽量采用后者;

req.getRequestDispatcher(String Path).forward(ServletRequest request, ServletResponse response);

再次有必要再强调一下请求转发与重定向的路径问题,请求转发传入时,根目录在WEB项目(WEB应用),并且此时也正处在WEB项目目录中;而重定向时,是以WEB服务器为根目录,但我们此时同样处于WEB项目目录下,需要注意二者的区别。还有一个需要注意的点是,重定向可以通过URL对外部资源(比如https://www.baidu.com)进行访问,但是请求转发只能访问服务器的内部资源。

 

下面我们进行一个建议登陆界面的数据读取并且进行请求转发:

首先建立一个前端登陆的页面index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
        <h1>登录</h1>
        <form action="${pageContext.request.contextPath}/login" method="post">
            用户名:<input type="text" name="username"><br>
            密码: <input type="password" name="password"><br>
            爱好:
            <input type="checkbox" name="hobby" value="读书">读书
            <input type="checkbox" name="hobby" value="唱歌">唱歌
            <input type="checkbox" name="hobby" value="听音乐">听音乐
            <input type="checkbox" name="hobby" value="打篮球">打篮球
            <br>
            <input type="submit" value="登录">
        </form>
    </body>
</html>

再建立一个登陆成功的页面LoginSuccess.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>登录成功</title>
    </head>
    <body>
        <h1>登录成功!!!</h1>
    </body>
</html>

建立一个类LoginServlet.class

 1 package com.jms.servlet;
 2 
 3 import java.io.IOException;
 4 import java.util.Arrays;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 public class LoginServlet extends HttpServlet{
12 
13     @Override
14     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
15         doPost(req, resp);
16     }
17 
18     @Override
19     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
20         
21         req.setCharacterEncoding("UTF-8");
22         resp.setCharacterEncoding("UTF-8");
23         
24         //读取数据并输出到控制台查看
25         String name = req.getParameter("username");
26         String pwd = req.getParameter("password");
27         String hobby[] = req.getParameterValues("hobby");
28         
29         System.out.println(name);
30         System.out.println(pwd);
31         System.out.println(Arrays.toString(hobby));
32         
33         //请求转发到登录成功页面
34         req.getRequestDispatcher("/LoginSuccess.jsp").forward(req, resp);;
35     }
36 
37     
38 }

修改web.xml文件,建立servlet连接

    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.jms.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

测试一下

javaweb:Request的应用——获取前端数据和请求转发

 

 输入用户名、密码以及选择爱好后点击登录

javaweb:Request的应用——获取前端数据和请求转发

 

 请求转发成功,然后我们看看控制台有没有输出从前端获取的信息

javaweb:Request的应用——获取前端数据和请求转发

 

 获取前端数据成功。

 

(本文仅作个人学习记录用,如有纰漏,敬请指正)

 

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/277052.html

(0)
上一篇 2022年7月26日
下一篇 2022年7月26日

相关推荐

发表回复

登录后才能评论