MVC设计模式实现的简单登陆程序_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > MVC设计模式实现的简单登陆程序

MVC设计模式实现的简单登陆程序

 2012/3/2 9:59:52  bolovesang  程序员俱乐部  我要评论(0)
  • 摘要:这是一个简单的MVC设计模式实现的登陆程序.先实现DAO;vo:packageorg.mvcdemo.vo;publicclassUser{privateStringuserid;privateStringname;privateStringpassword;publicvoidsetUserId(Stringuserid){this.userid=userid;}publicvoidsetName(Stringname){this.name=name;
  • 标签:程序 MVC 实现 模式 设计 设计模式

这是一个简单的MVC设计模式实现的登陆程序.

?

?

先实现DAO;

?

vo:

package org.mvcdemo.vo;
public class User
{
	private String userid;
	private String name;
	private String password;

	public void setUserId(String userid){
		this.userid = userid;
	}
	public void setName(String name){
		this.name = name;
	}
	public void setPassword(String password){
		this.password = password;
	}
	public String getUserid(){
		return this.userid;
	}
	public String getName(){
		return this.name;
	}
	public String getPassword(){
		return this.password;
	}
}

?

dbc; //数据库连接;

package org.mvcdemo.dbc;
import java.sql.*;
public class DatabaseConnection
{
	private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";

	private static final String DBURL = "jdbc:mysql://localhost:3306/mysql";

	private static final String DBUSER = "root";

	private static final String DBPASSWORD = "123";
	
	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;
			}
		}
	}

}

?

定义接口类;

package org.mvcdemo.dao;
import org.mvcdemo.vo.User;
public interface IUserDAO
{
	//现在完成的是登陆验证,那么登陆操作只有两种返回结果
	public boolean findLogin(User user) throws Exception;
}

?

实现接口;

package org.mvcdemo.dao.impl;
import org.mvcdemo.vo.User;
import org.mvcdemo.dbc.*;
import org.mvcdemo.dao.*;
import java.sql.*;
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 user1 WHERE userid=? AND password=?";
		this.pstmt = this.conn.prepareStatement(sql);
		this.pstmt.setString(1,user.getUserid());
		this.pstmt.setString(2,user.getPassword());
		ResultSet rs = this.pstmt.executeQuery();
		if(rs.next()){
			user.setName(rs.getString(1));
			flag = true;
		}
		this.pstmt.close();
		return flag;
	}
}

?

代理类;

package org.mvcdemo.dao.proxy;
import org.mvcdemo.vo.User;
import org.mvcdemo.dbc.*;
import org.mvcdemo.dao.*;
import org.mvcdemo.dao.impl.*;
import java.sql.*;
public class UserDAOProxy implements IUserDAO
{
	private DatabaseConnection dbc = null;
	private IUserDAO dao = null;
	public UserDAOProxy(){
		try{
			this.dbc = new DatabaseConnection();
		}catch(Exception e){
			e.printStackTrace();
		}
		this.dao = new UserDAOImpl(dbc.getConnection());
	}
	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;
	}
}

?

工厂类;

package org.mvcdemo.dao.factory;
import org.mvcdemo.dao.*;
import org.mvcdemo.dao.proxy.*;
public class DAOFactory
{
	public static IUserDAO getIUserDAOInstance(){
		return new UserDAOProxy();
	}
}

?

Servlet;

package org.mvcdemo.servlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.mvcdemo.dao.factory.*;
import org.mvcdemo.vo.*;
public class LoginServlet extends HttpServlet
{
	public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
		String path = "login.jsp";
		String userid = req.getParameter("userid");
		String userpass = req.getParameter("userpass");
		List<String> info = new ArrayList<String>();
		if(userid==null||"".equals(userid)){
			info.add("用户id不能为空!");
		}
		if(userpass==null||"".equals(userpass)){
			info.add("密码不能为空!");
		}
		if(info.size()==0){
			User user = new User();
			user.setUserId(userid);
			user.setPassword(userpass);
			try{
				if(DAOFactory.getIUserDAOInstance().findLogin(user)){
					info.add("用户登陆成功,欢迎" + user.getName() + "光临");
				}else{
						info.add("用户登陆失败,错误的用户名或密码");
					}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		req.setAttribute("info",info);
		req.getRequestDispatcher(path).forward(req,resp);
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
		this.doGet(req,resp);
	}
}

?

前台的JSP页面;

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<html>
<head>
	<title>www.baidu.com</title>
</head>
<body>
<script language="javascript">
	function validate(f){
		if(!(/^\w{5,15}$/.test(f.userid.value))){
			alert("用户ID必须是5~15位!");
			f.userid.focus();
			return false;
		}
		if(!(/^\w{5,15}$/.test(f.userpass.value))){
			alert("密码必须是5~15位!");
			f.userpass.focus();
			return false;
		}
	}
</script>
<%
	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 validate(this)">
		用户ID:<input type="text" name="userid"><br>
		密&nbsp;&nbsp码:<input type="password" name="userpass"><br>
		<input type="submit" value="登陆">
		<input type="reset" value="重置">
	</form>
</body>
</html>

?

数据库脚本;

USE mysql
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','administrator','admin');

?

?

?

发表评论
用户名: 匿名