使用Servlet完成用户登录
本文我们将创建一个简单的用户登录示例,本文使用MySQL5.7作为数据库。
1 创建表和准备数据
在MySQL的test数据库中创建t_user表:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入一些测试数据,待会登录使用:
2 编写登录页面
编写login.jsp,用于用户登录:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>一点教程网-使用Servlet完成用户登录</title>
</head>
<body>
<h1>使用Servlet完成用户登录</h1>
<form action="Login" method="post">
用户名:<input type="text" name="username"/><br/><br/>
密码:<input type="password" name="userpass"/><br/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
3 编写LoginServlet
LoginServlet用于查询数据库用户表,以完成用户身份校验逻辑:
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class LoginServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String n=request.getParameter("username");
String p=request.getParameter("userpass");
if(LoginDao.validate(n, p)){
RequestDispatcher rd=request.getRequestDispatcher("Welcome");
rd.forward(request,response);
}
else{
out.print("抱歉,用户名或密码错误");
RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
rd.include(request,response);
}
out.close();
}
}
4 编写LoginDao
LoginDao用于处理数据库查询的具体逻辑:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class LoginDao {
public static boolean validate(String name,String pass){
boolean status=false;
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test","root","root");
PreparedStatement ps=con.prepareStatement(
"select * from t_user where username=? and password=?");
ps.setString(1,name);
ps.setString(2,pass);
ResultSet rs=ps.executeQuery();
status=rs.next();
}catch(Exception e){
System.out.println(e);
}
return status;
}
}
5 编写WelcomeServlet
WelcomeServlet是登录成功后的用户欢迎页面:
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class WelcomeServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String n=request.getParameter("username");
out.print("欢迎你 "+n);
out.close();
}
}
6 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WelcomeServlet</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
</web-app>
7 运行测试
先访问登录页面,http://localhost:8080/login.jsp,如下:
输入了数据库不存在的用户名或密码时,提示如下:
当输入了正确的用户名和密码,则进入欢迎页面:
本案例需要在lib目录导入mysql驱动程序,点击下面链接下载:
热门文章
优秀文章