基于MVC思想的JSP+Servlet+JavaBean的登录模块

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">用户实体对象</span>

  User类用于封装用户实体对象,提供了用户对象的详细信息以及相应的setXXX()getXXX()方法:

<span style="font-family:Times New Roman;">package model;

public class User {
	private int id;			// 标识
	private String username;// 用户名
	private String password;// 密码
	private String sex;		// 性别
	private String tel;		// 电话
	private String photo;	// 头像
	private String email;	// 电子邮箱
	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;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getPhoto() {
		return photo;
	}
	public void setPhoto(String photo) {
		this.photo = photo;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}</span><span style="font-family:宋体;">
</span>


数据库连接工具类

  对数据库的操作封装成一个类,在类中提供相应的方法。获取数据库连接对象和关闭数据库连接的方法:

<span style="font-family:Times New Roman;">package model;

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

public class DataBaseUtil {
	public static Connection getConnection(){
		   Connection conn=null;
		   try{
			   Class.forName("com.mysql.jdbc.Driver");
			   String url="jdbc:mysql://localhost:3306/registersystem";
			   conn=DriverManager.getConnection(url,"root","123");
		   }catch(Exception e){
			   e.printStackTrace();
			   System.out.println("数据库连接失败!");
		   }
		   return conn;
	}
	public static void closeConnection(Connection conn){
		if(null!=conn){
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO: handle exception
				e.printStackTrace();
				System.out.println("数据库关闭失败!");
			}
		}
	}
}
</span>


用户数据库操作

  与用户相关的数据库操作方法封装成一个类中,此类提供一系列需要的方法。例如:添加对象和验证对象。方法如下:

<span style="font-family:Times New Roman;">package model;

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

public class UserDao {
	public boolean userIsExist(String username){
		Connection conn=DataBaseUtil.getConnection();
		String sql="SELECT * FROM login_user where username=?";
		try {
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, username);
			ResultSet rs=ps.executeQuery();
			if(!rs.next()){
				return true;
			}
			rs.close();//释放ResultSet对象数据资源
			ps.close();//释放PreparedStatement对象资源
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DataBaseUtil.closeConnection(conn);
		}
		return false;
	}
	public void saveUser(User user){
		Connection conn=DataBaseUtil.getConnection();
		String sql="INSERT INTO login_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";
		try {
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, user.getUsername());
			ps.setString(2,user.getPassword());
			ps.setString(3,user.getSex());
			ps.setString(4,user.getTel());
			ps.setString(5,user.getPhoto());
			ps.setString(6,user.getEmail());
			ps.executeUpdate();
			ps.close();//释放PreparedStatement对象资源
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("数据库写入数据失败!");
		}finally{
			DataBaseUtil.closeConnection(conn);///关闭数据库连接,释放连接资源
		}
	}
	public User login(String username,String password){
		User user=null;
		Connection conn=DataBaseUtil.getConnection();
		String sql="SELECT * FROM login_user WHERE username=? AND password=?";
		try {
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, username);
			ps.setString(2,password);
			ResultSet rs=ps.executeQuery();
			
			if(rs.next()){
				user=new User();
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
				user.setSex(rs.getString("sex"));
				user.setTel(rs.getString("tel"));
				user.setPhoto(rs.getString("photo"));
				user.setEmail(rs.getString("email"));
			}
			rs.close();//释放ResultSet对象数据资源
			ps.close();//释放PreparedStatement对象资源
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("用户登录验证错误!");
		}finally{
			DataBaseUtil.closeConnection(conn);
		}
		return user;
	}
}</span>


创建Servlet对象:

  RegServlet类用于实现用户注册,创建reg.jsp视图用于显示。LoginServlet类实现用户登录,处理登录请求。UserExitServlet类进行处理,用于用户退出。

<span style="font-family:Times New Roman;">package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.User;
import model.UserDao;

public class RegServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public void doPost(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException{
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		String sex=request.getParameter("sex");
		String photo=request.getParameter("photo");
		String tel=request.getParameter("tel");
		String email=request.getParameter("email");
		System.out.println("--"+username+"-"+password+"-"+sex+"-"+photo+"-"+email);
		
		UserDao userDao=new UserDao();
		if(null!=username && !username.isEmpty()){
			if(userDao.userIsExist(username)){
				User user=new User();
				user.setUsername(username);
				user.setPassword(password);
				user.setEmail(email);
				user.setTel(tel);
				user.setSex(sex);
				user.setPhoto(photo);
				
				userDao.saveUser(user);
				request.setAttribute("info", "恭喜,注册成功!<br/>");
			}else{
				request.setAttribute("info", "错误:此用户已经存在!<br/>");
			}
		}///if
		request.getRequestDispatcher("message.jsp").forward(request, response);
	}
}
</span>
<span style="font-family:Times New Roman;">package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.User;
import model.UserDao;

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 2L;

	public void doPost(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException{
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		
		UserDao userDao=new UserDao();
		User user=userDao.login(username, password);
		if(null!=user){
			///将用户对象放入Session中
			request.getSession().setAttribute("user", user);
			request.getRequestDispatcher("message.jsp").forward(request, response);
		}else{
			request.setAttribute("info", "错误:用户名或密码错误!");
			request.getRequestDispatcher("message.jsp").forward(request, response);
		}
	}
}</span>

<span style="font-family:Times New Roman;">package controller;

import java.io.IOException;
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 model.User;

public class UserExitServlet extends HttpServlet {
	private static final long serialVersionUID = 4L;

	///The specified HTTP method is not allowed for Get当写成doPost时候,不能正常获取
	//资源,未重写父类方法以至于报错,方法需要对应。备忘!
	public void doGet(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException{
		HttpSession session=request.getSession();
		User user=(User)session.getAttribute("user");
		if(null!=user){
			session.removeAttribute("user");
			request.setAttribute("info", user.getUsername()+"已成功退出!");
		}
		System.out.println("--LOVE--");
		///转发到时message.jsp页面
		request.getRequestDispatcher("message.jsp").forward(request, response);
	}
}</span>



Servlet配置文件如下:

<span style="font-family:Times New Roman;"><servlet>
  <servlet-name>RegServlet</servlet-name>
  <servlet-class>controller.RegServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>controller.LoginServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>ExitServlet</servlet-name>
  <servlet-class>controller.UserExitServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>RegServlet</servlet-name>
  <url-pattern>/RegServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/LoginServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>ExitServlet</servlet-name>
  <url-pattern>/ExitServlet</url-pattern>
 </servlet-mapping></span>


创建数据表语句如下:

<span style="font-family:Times New Roman;">CREATE TABLE login_user(
       id int PRIMARY KEY AUTO_INCREMENT,
		username char(25),
		password char(25),
		sex char(25),
		tel char(25),
		photo char(25),
		email char(25)
		)</span>
完整源程序下载地址:  源程序  密码:t69d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值