首先是获取前端数据
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>
测试一下

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

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

获取前端数据成功。
(本文仅作个人学习记录用,如有纰漏,敬请指正)
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/277052.html