JavaWEB-(三十七)Servlet接受前端数据和向前端传数据

本文最后更新于:September 25, 2022 pm

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

目录

这里以一个登录页面和一个展示登录的用户数据的页面,都是采用的JSP实现。

JavaBean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.tothefor.Three18;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
* @Author DragonOne
* @Date 2022/3/18 17:18
* @墨水记忆 www.tothefor.com
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
private String username;
private String password;
}

Servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.tothefor.Three18;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @Author DragonOne
* @Date 2022/3/18 17:36
* @墨水记忆 www.tothefor.com
*/
@WebServlet("/userJSP")
public class UserController extends HttpServlet {


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setHeader("Content-type","text/html;charset=UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");

User ser = new User();
ser.setUsername(username);
ser.setPassword(password);
//把注册成功的用户对象保存在session中
req.getSession().setAttribute("user",ser);
//跳转到注册成功页面-> userJSP.jsp,同时传递这request 和 response 对象
req.getRequestDispatcher("userJSP.jsp").forward(req,resp);
}

/**
* @Author DragonOne
* @Date 2022/3/15
* @墨水记忆 www.tothefor.com
* @方法名称 doPost
* @方法描述 Post请求
* @参数说明
* @返回值
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, ServletException, IOException {
doGet(req,resp);
}
}

loginJSP.jsp

用来获取数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%--
Created by IntelliJ IDEA.
User: dragonone
Date: 2022/3/18
Time: 19:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="/ServletTest_war_exploded/userJSP" method="post">
用户名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"> <br>
<input type="submit" value="注册">
</form>

</body>
</html>

userJSP.jsp

用户展示数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ page import="com.tothefor.Three18.User" %><%--
Created by IntelliJ IDEA.
User: dragonone
Date: 2022/3/18
Time: 17:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>User</title>
</head>
<body>
<h2>数据展示</h2>

<jsp:useBean id="user" scope="session" class="com.tothefor.Three18.User" />


<h1>用户名:<span><jsp:getProperty name="user" property="username"/></span></h1>
<h1>密码:<span><jsp:getProperty name="user" property="password"/></span></h1>


</body>
</html>

解释

1
<jsp:useBean id="user" scope="session" class="com.tothefor.Three18.User" />

用于来获取 Bean 对象 user。注意这个 id 必须是 Servlet类中setAttribute("user",ser); 中的键。

  • scope="session" 表示这个对象是 session 级别。
  • class="com.tothefor.Three18.User" 表明这个对象的类的全限定名称。
  • <jsp:getProperty name="user" property="username" /> 这个就是输出这个Bean 对象的一些属性值。name 就是 useBean 中的 idproperty 就是 Bean 中的属性。

JSP间传参跳转

A.jsp:(传入参数username)

1
<a href="./B.jsp?username=${requestScope.username}">个人信息</a> 

B.jsp:(获取参数)

1
<span class="text">${param.username}</span>