打印本文 打印本文 关闭窗口 关闭窗口
[JSP]用MVC架构注册登录的例子
作者:武汉SEO闵涛  文章来源:敏韬网  点击数800  更新时间:2009/4/23 10:55:08  文章录入:mintao  责任编辑:mintao
MVC的概念,大家都清楚吧,Model,View,Control
首先我们看看这个目录结构
--+login
----------+WEB-INF
-----------------------+classes
-beans
                          -tags
-----------+tlds

login 是主目录放jsp文件,在例子login.jsp,loginFailed.jsp,login_form.jsp,newAccount.jsp,welcome.jsp,accountCreated.jsp

Web-inf下面有web.xml配置文件,classes文件夹放类,tlds文件夹放自定义标签
由于我没有用到数据库,所以没有用LIB文件夹,是来放置 *.jar 文件的。

classes目录下,有beans,tags文件夹,分别放置User,LoginDB类,和自定义标签类GetRequestParameterTag,classes目录下还直接放了LoginServlet,NewAccountServlet控制器类

我们先看beans下的两个业务对象类
User.java
package beans;

public class User implements java.io.Serializable {
private final String userName, password, hint;
                //final强调此属性初始化后,不能修改hint是口令提示
public User(String userName, String password, String hint) {
    this.userName = userName;
    this.password = password;
    this.hint = hint;
}
public String getUserName(){
     return userName;
}
public String getPassword(){
     return password;
}
public String getHint(){
    return hint;
}
//判断当前对象用户名和密码是否相等
public boolean equals(String uname, String upwd) {
return getUserName().equals(uname) && getPassword().equals(upwd); 
}
}


LoginDB.java
package beans;
import java.util.Iterator;
import java.util.Vector;
public class LoginDB implements java.io.Serializable {
     private Vector users = new Vector();
    //Vector类是同步的,所以addUser就不需要同步了
    public void addUser(String name, String pwd, String hint) {
        users.add(new User(name, pwd, hint));
    }
   //下面方法判断是否存在正确的user
    public User getUser(String name,String pwd) {
        Iterator it = users.iterator();
        User user;
         //迭代需要同步
    synchronized(users) {
       while(it.hasNext()){
          user = (User)it.next();
          if(user.equals(name,pwd))
               return user;  //如果返回真,就返回当前user
        }
     }
     return null;
     }
     public String getHint(String name) {
         Iterator it = users.iterator();
         User user;
     synchronized(users) {
         while(it.hasNext()){
         user = (User)it.next();
         if(user.getUserName().equals(name))
             return user.getHint();
         }
     }
   return null;
     }
}

打印本文 打印本文 关闭窗口 关闭窗口