综合案例——基于 JSP + Servlet 的用户登录验证
【例6-1】 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示“用户名或密码不正确”。
【分析】 该案例采用 JSP 页面只完成提交信息和验证结果的显示,而验证过程由 Servlet 完成,这些组件通过 request (或 HttpServletRequest)对象实现数据共享。由提交页面将数据传递给 Servlet,而 Servlet 获取数据并实现验证,根据验证结果,转向显示验证结果的页面。
【设计】 根据分析,该系统需要设计3个组件以及修改 web.xml 文件。
(1)登录表单页面: login.jsp。
(2)处理登录请求并实现验证的 Servlet:LoginCheckServlet.java。
(3)显示提示的页面: Info.jsp。
(4)修改 web.xml,配置 Servlet的信息。
假设,组件之间共享数据的参数为 username 和 userpwd。
【实现】
(1)登录表单页面login.jsp:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="CheckServlet" method="post">
<table>
<tr align="center">
<td>请输入用户名:<input type="text" name="username" size="20">
</td>
</tr>
<tr align="center">
<td>请输入密码: <input type="password" name="userpwd"
size="20">
</td>
</tr align="center">
<td><input type="submit" value="登录" /> <input type="reset" /></td>
</tr>
</table>
</form>
</body>
</html>
(2)处理登录的 Servlet:LoginCheckServlet.java。
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginCheckServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("username");
String userPwd = request.getParameter("userpwd");
String info = "";
if(("abc".equals(userName))&&"123".equals(userPwd)){
info = "欢迎你"+userName+"!";
}else{
info = "用户名或密码不正确!";
}
request.setAttribute("outputMessage", info);
request.getRequestDispatcher("/Info.jsp").forward(request,response);
}
}
(3)显示提示的页面 Info.jsp:
<%@ page pageEncoding="UTF-8"%>
<html>
<head><title>显示结果页面</title></head>
<body>
<%=request.getAttribute("outputMessage") %>
</body>
</html>
(4)修改配置文件,在 web.xml 中,添加LoginCheckServlet 的配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>LoginCheckServlet</servlet-name>
<servlet-class>servlets.LoginCheckServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginCheckServlet</servlet-name>
<url-pattern>/CheckServlet</url-pattern>
</servlet-mapping>
</web-app>
(5)运行结果: