概述
一、登录页面 /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:WorkspaceJ2eeEmpProjectWebRoot" workDir="D:WorkspaceJ2eeEmpProjectWebRoot" />
运行结果查看:
最后
以上就是自由大门为你收集整理的jsp+servlet+javaBean+mysql (MVC)模拟用户登录的全部内容,希望文章能够帮你解决jsp+servlet+javaBean+mysql (MVC)模拟用户登录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复