bolovesang 发表于 2013-2-3 13:56:31

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" >用户ID:<input type="text" name="userid"><br>密 &nbsp码:<input type="password" name="userpass"><br><input type="submit" value="登陆"><input type="reset" value="重置"></form></body></html> 
数据库脚本;
USE mysqlcreate table user(useridvarchar(30)primary key,namevarchar(30)not null,passwordvarchar(32) not null);insert into user(userid,name,password) values('admin','administrator','admin'); 
 
 
页: [1]
查看完整版本: MVC设计模式实现的简单登陆程序