jsp+servlet+javaBean+mysql (MVC)模拟用户登录

jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第1张图片jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第2张图片

一、登录页面 /jsp/login.jsp

<%@ page contentType="text/html; charset=GBK" import="java.util.*" %>

hsl


用户登录程序

<% request.setCharacterEncoding("GBK"); // 设置编码 %> <% List info = (List)request.getAttribute("info"); //取得属性 if(info!=null){ // 判断是否有内容 Iterator iter = info.iterator(); while(iter.hasNext()){ %>

<%=iter.next()%>

<% } } %>
用户名:
密  码:
jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第3张图片
二、配置 web.xml


    login
    hsl.mvc.servlet.LoginServlet
  
  
  
    login
    /jsp/LoginServlet
  
三、定义 Servlet---LoginServlet.java
package hsl.mvc.servlet;

import hsl.mvc.factory.DAOFactory;
import hsl.mvc.vo.User;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

public class LoginServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String path = "login.jsp";
		String userid = request.getParameter("userid");	//接收 userid 参数
		String userpass = request.getParameter("userpass");	//接收 userpass 参数
		List info = new ArrayList();	// 保存返回信息
		if(userid==null || "".equals(userid)){	// 如果 userid 为 null
			info.add("用户id不能为空!");
		}
		if(userpass==null || "".equals(userpass)){	// 如果 userpass 为 null
			info.add("密码不能为空!");
		}
		if(info.size()==0){	// 用户名和密码验证通过
			User user = new User();		// 实例化 VO 
			user.setUserid(userid);		// 设置 userid
			user.setPassword(userpass);	// 设置 userpass
			try {
				if(DAOFactory.getIUserDAOInstance().findLogin(user)){
					info.add("用户登录成功, 欢迎"+user.getName()+"光临!");
				}else{
					info.add("用户登录失败,错误的用户名或密码!");
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		request.setAttribute("info", info);	// 保存错误信息
		request.getRequestDispatcher(path).forward(request, response);	// 跳转
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);	//doPost、doGet相互调用
	}
}
四、定义工厂类,取得 DAO 实例----DAOFactory.java

package hsl.mvc.factory;

import hsl.mvc.dao.IUserDAO;
import hsl.mvc.dao.proxy.UserDAOProxy;

public class DAOFactory {
	public static IUserDAO getIUserDAOInstance(){	// 取得 DAO 实例
		return new UserDAOProxy();		// 返回代理实例
	}
}
五、定义 DAO 代理操作类----UserDAOProxy.java

package hsl.mvc.dao.proxy;

import hsl.mvc.dao.IUserDAO;
import hsl.mvc.dao.UserDAOImpl;
import hsl.mvc.dbc.DatabaseConnection;
import hsl.mvc.vo.User;

public class UserDAOProxy implements IUserDAO {
	private DatabaseConnection dbc = null;	//	定义数据库实例 dbc
	private IUserDAO dao = null;	// 定义连接 dao

	public UserDAOProxy(){	// 构造
		try {
			this.dbc = new DatabaseConnection();	// 实例化数据库连接 dbc
		} catch (Exception e) {
			e.printStackTrace();
		}
		this.dao = new UserDAOImpl(this.dbc.getConnection());	// 取得连接 dao
	}

	public boolean findLogin(User user) throws Exception {
		boolean flag = false;
		try {
			flag = this.dao.findLogin(user);	// 调用真实主题
		} catch (Exception e) {
			throw e;
		}finally{
			this.dbc.close();
		}
		return flag;		// 返回标记
	}
}
六、定义 DAO 接口----IUserDAO.java

package hsl.mvc.dao;
import hsl.mvc.vo.User;
/**
 *  DAO 操作接口
 */
public interface IUserDAO {
	/**
	 * 用户登录验证
	 * @param user
	 * @return 验证的操作结果
	 * @throws Exception
	 */
	public boolean findLogin(User user)throws Exception;
}
七、定义 DAO 实现类----UserDAOImpl.java

package hsl.mvc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import hsl.mvc.dao.IUserDAO;
import hsl.mvc.vo.User;

public class UserDAOImpl implements IUserDAO {
	private Connection conn = null;			// 定义数据库连接对象
	private PreparedStatement pstmt = null;	// 定义数据库操作对象

	public UserDAOImpl(Connection conn) {	// 设置数据库连接
		this.conn = conn;
	}

	public boolean findLogin(User user) throws Exception {
		boolean flag = false;
		String sql = "select name from user where userid=? and password=?";
		try {
			this.pstmt = this.conn.prepareStatement(sql);	//	实例化操作
			this.pstmt.setString(1, user.getUserid());		// 设置 id 
			this.pstmt.setString(2, user.getPassword());	// 设置 password
			ResultSet rs = this.pstmt.executeQuery();		// 取得查询结果
			if (rs.next()) {
				user.setName(rs.getString(1)); // 取得用户名
				flag = true; 					// 登录成功
			}
		} catch (Exception e) {
			throw e;
		} finally {
			if (this.pstmt != null) {
				try {
					this.pstmt.close();	// 关闭操作
				} catch (Exception e) {
					throw e;
				}
			}
		}
		return flag;
	}
}
八、定义数据库操作类 ----DatabaseConnection.java
package hsl.mvc.dbc;

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

public class DatabaseConnection {
	private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
	private static final String DBURL = "jdbc:mysql://localhost:3336/mvctest";
	private static final String DBUSER = "root";
	private static final String DBPASSWORD = "myoa888";
	private Connection conn = null;

	public DatabaseConnection() throws Exception {
		try {
			Class.forName(DBDRIVER); // 加载驱动程序
			this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); // 连接数据库
		} catch (Exception e) {
			throw e;
		}
	}

	public Connection getConnection() {	// 取得数据库连接
		return this.conn;
	}

	public void close() throws Exception {	// 数据库关闭操作
		if (this.conn != null) {
			try {
				this.conn.close();
			} catch (Exception e) {
				throw e;
			}
		}
	}

}

九、 定义 VO 类 ----User.java

package hsl.mvc.vo;

public class User {
	private String userid ;	// 对应 userid 列
	private String name ;	// 对应 name 列
	private String password ;
	public String getUserid(){
		return userid;
	}
	public void setUserid(String userid){
		this.userid = userid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
十、数据库创建 ----mvctest (user)
/*============使用 mvctest 数据库=============*/
USE mvctest;
/*============删除 user 数据表=============*/
DROP TABLE IF EXISTS user;
/*============创建 user 数据表=============*/
CREATE TABLE user(
	userid		VARCHAR(30)		PRIMARY KEY,
	name			VARCHAR(30)		NOT NULL,
	password	VARCHAR(32)		NOT NULL
);
/*============插入测试数据=============*/
INSERT INTO user(userid,name,password)VALUES('admin','管理员','admin');

十一、Tomcat 配置 server.xml (前边加入代码如下)

运行结果查看:
jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第4张图片 jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第5张图片 jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第6张图片 jsp+servlet+javaBean+mysql (MVC)模拟用户登录_第7张图片




你可能感兴趣的:(jsp)