Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
更多可见个人博客
目录
这里以一个登录页面和一个展示登录的用户数据的页面,都是采用的JSP实现。解决了中文乱码问题。
JavaBean
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
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
用来获取数据。
<%--
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
用户展示数据。
<%@ 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
中的属性。