Jsp&Servlet 用户登录功能实现
在登录界面输入用户名、密码,与数据库中的用户名密码进行匹配,若匹配成功,则跳转到主页界面;若匹配失败,则提示用户名或密码错误,输入框内显示输入信息。
创建数据库
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
)
insert into `t_user`(`id`,`username`,`password`) values (1,'zhang','123456');
创建用户实体
package model;
public class User {
private int id;
private String username;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
数据库连接
package util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbUtil {
private String url="jdbc:mysql://localhost:3306/db_jsp?useUnicode=true&characterEncoding=utf-8&useSSL=false"; //数据库连接地址
private String user="root"; //用户名
private String password="123456"; //密码
private String jdbcName="com.mysql.jdbc.Driver"; //驱动名称
public Connection getCon() throws Exception{
Class.forName(jdbcName);
Connection con = DriverManager.getConnection(url, user, password);
return con;
}
public void close(Connection con) throws Exception{
if(con!=null){
con.close();
}
}
public static void main(String[] args) {
DbUtil dbUtil = new DbUtil();
try {
dbUtil.getCon();
System.out.println("数据库连接成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
用户数据访问
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.User;
public class UserDao {
public User login(Connection con,User user)throws Exception{
User resultUser = null;
String sql = "select * from t_user where username=? and password=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
resultUser = new User();
resultUser.setUsername(rs.getString("username"));
resultUser.setPassword(rs.getString("password"));
}
return resultUser;
}
}
登录功能实现
package web;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import dao.UserDao;
import model.User;
import util.DbUtil;
public class LoginServlet extends HttpServlet {
private DbUtil dbUtil = new DbUtil();
private UserDao userDao = new UserDao();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection con = null;
try {
User user = new User(username,password);
con = dbUtil.getCon();
User currentUser = userDao.login(con, user);
if(currentUser==null){
request.setAttribute("error", "用户名或密码错误");
request.setAttribute("username", username);
request.setAttribute("password", password);
request.getRequestDispatcher("login.jsp").forward(request, response);
}else{
HttpSession session = request.getSession();
session.setAttribute("currentUser", currentUser);
response.sendRedirect("main.jsp");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
登录界面
<form action="login">
<table>
<tr>
<td colspan="2">用户登录</td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="${username}"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" value="${password}" /></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
<td><font color="red" >${error}</font></td>
</tr>
</table>
</form>
主页界面
进入主页!${currentUser.username },你好,欢迎使用。