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


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

<%@ page contentType="text/html; charset=GBK" import="java.util.*" %>
<html>
<head><title>hsl</title></head>
<script language="JavaScript">
	function vaildate(f){
		var regex = /^\w{5,15}$/;	// 定义正则
		if(!(regex.test(f.userid.value))){
			alert("用户 ID 必须是 5~15位!");
			f.userid.focus();
			return false;
		}
		if(!(regex.test(f.userpass.value))){
			alert("密码必须是 5~15位!");
			f.userpass.focus();
			return false;
		}
		return true;
	}
</script>
<body>
<h2>用户登录程序</h2>
<% 
	request.setCharacterEncoding("GBK");	// 设置编码
%>
<% 
	List<String> info = (List<String>)request.getAttribute("info"); 	//取得属性
	if(info!=null){	// 判断是否有内容
		Iterator<String> iter = info.iterator();
		while(iter.hasNext()){
%>
			<h4><%=iter.next()%></h4>	<!-- 输出登录验证信息 -->
<%		
		}
	}
%>
<form action="LoginServlet" method="post" onSubmit="return vaildate(this)">
	用户名:<input type="text" name="userid"/><br/>
	密  码:<input type="password" name="userpass"/><br/>
	<input type="submit" value="登录"/>
	<input type="reset" value="重置"/>
</form>
</body>
</html>

二、配置 web.xml

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>hsl.mvc.servlet.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/jsp/LoginServlet</url-pattern>
  </servlet-mapping>
三、定义 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<String> info = new ArrayList<String>();	// 保存返回信息
		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 (</Host>前边加入代码如下)

<Context path="/Emp" reloadable="true" docBase="D:\WorkspaceJ2ee\EmpProject\WebRoot" workDir="D:\WorkspaceJ2ee\EmpProject\WebRoot" />
运行结果查看:





  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值