Servlet(三)——用户登录功能实现

目录

1.实体层: com.java.model;

2.工具类 com.java.util;

3.数据访问层 com.java.dao;

4.处理层:com.java.web;

5.Login.jsp;

6.main.jsp;


首先建一个t_user表:

1.实体层: com.java.model;

package com.java.model;

public class User {

	//User表中各属性
	private int id;
	private String userName;
	private String password;
	
	public User() {
		super();
	}
	
	
	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;
	}
	
	
}

2.工具类 com.java.util;

package com.java.util;

import java.sql.Connection;
import java.sql.DriverManager;

public class DbUtil {

	//数据库连接地址
	private String dbUrl="jdbc:mysql://localhost:3306/db_jsp";
	
	//用户名
	private String dbUserName="root";
	
	//密码
	private String dbPassword="123456";
	
	//驱动名称
	private String jdbcName="com.mysql.jdbc.Driver";
	
	//数据库连接方法
	public Connection getCon() throws Exception{
		Class.forName(jdbcName);
		Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
		return con;
	}
	
	//数据库关闭方法
	public void closeCon(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();
			System.out.println("数据库连接失败!");
		}
	}
}

3.数据访问层 com.java.dao;

package com.java.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.java.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;
	}
}

4.处理层:com.java.web;

package com.java.web;

import java.io.IOException;
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 com.java.dao.UserDao;
import com.java.model.User;
import com.java.util.DbUtil;

public class LoginServlet extends HttpServlet{
	
	private DbUtil dbUtil=new DbUtil();
	private UserDao userDao=new UserDao();

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//用户请求doGet时交给doPost去处理
		this.doPost(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取输入的信息
		String userName=request.getParameter("userName");
		String password=request.getParameter("password");
		
		//获取数据库连接
		Connection con=null;
		try {
			con=dbUtil.getCon();
			//将用户名和密码进行封装
			User user=new User(userName,password);
			//调用登录方法
			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{
				//获取session
				HttpSession session=request.getSession();
				//给session 设置值
				session.setAttribute("currentUser", currentUser);
				//客户端跳转,重定向
				response.sendRedirect("main.jsp");
				
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
}

web.xml配置信息:

 

5.Login.jsp;

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="login" method="post">
<table>
	<tr>
		<th colspan="2">用户登录</th>
	</tr>
	<tr>
		<td>用户名:</td>
		<td><input type="text" id="userName" name="userName" value="${userName }"/></td>
	</tr>
	<tr>
		<td>密码:</td>
		<td><input type="text" id="password" name="password" value="${password }"/></td>
	</tr>
	<tr>
		<td><input type="submit" value="登录"/></td>
		<td><font color="red">${error }</font></td>
	</tr>
</table>
</form>
</body>
</html>

6.main.jsp;

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
主页:当前登录用户:${currentUser.userName }
</body>
</html>

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_37084904/article/details/89217779
今日推荐