您的位置:首页 > 编程语言 > Java开发

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

2014-06-18 13:31 721 查看




一、登录页面
/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" />
运行结果查看:







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐