本文最后更新于: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;
@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;
@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); req.getSession().setAttribute("user",ser); req.getRequestDispatcher("userJSP.jsp").forward(req,resp); }
@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>
|
解释
| <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
中的 id
,property
就是 Bean
中的属性。
JSP间传参跳转
A.jsp:(传入参数username)
| <a href="./B.jsp?username=${requestScope.username}">个人信息</a>
|
B.jsp:(获取参数)
| <span class="text">${param.username}</span>
|