Struts之DispatchAction

本文介绍了一个基于Spring MVC架构的在线书签管理系统的设计与实现。该系统支持用户注册、登录、添加书签、删除书签等功能,并能通过电子邮件找回密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 程序功能:在线管理书签,注册账号,帐号管理

架构方案:
   (1)前段控制器:
             Front Controller 采用前端控制器接受用户请求,由前段控制器决定由那一个具体的控制器来处理请求
   (2)控制器
             前段控制器决定好控制器后,将请求交由控制器处理,控制器截取用户请求参数,进行数据验证,并呼叫业
             务层的对象完成请求
   (3)Data,Mail,DAO等model对象
             再请求中有一些业务必须调用业务层中的Model对象来处理,控制器调用数据存取对象(DAO),Mail等业
             务对象来处理这些请求,如果需要的话,还可将一些消息封装为数据对象 
   (4)数据库
              采用Mysql数据库
   (5)网页
             页面前段展示

采用技术:
    (1)前段控制器:Spring MVC实现,前端控制器为DispatcherServlet类
    (2)控制器:配合前段控制器,采用Spring MVC的Controller继承架构,如AbstractCommandController
                              SimpleFormController,MultiActionController
    (3)Data,Mail.DAO等Model对象:采用Hibernate,Spring Java Mail抽象层封装
    (4)页面:JS,Spring Tag,JSTL

Model设计

  User:
        
  

package model;

public class User {
   
private Integer id;
   
private String email;
   
private String username;
   
private String passwd;
public Integer getId() {
    
return id;
}

public void setId(Integer id) {
    
this.id = id;
}

public String getEmail() {
    
return email;
}

public void setEmail(String email) {
    
this.email = email;
}

public String getUsername() {
    
return username;
}

public void setUsername(String username) {
    
this.username = username;
}

public String getPasswd() {
    
return passwd;
}

public void setPasswd(String passwd) {
    
this.passwd = passwd;
}

}

User类对应的数据表:

 

create table user(id int(11not null primary key auto_increment, 
                  username 
varchar(16),
                  passwd 
char(16not null,
                  email 
varchar(16not null);

User类对应的Hibernate映射文件 user.hbm.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
  
<class name="model.User" table="usre">
    
<id name="id" column="id">
      
<generator class="native"></generator>
    
</id>
    
<property name="username" column="username"></property>
    
<property name="passwd" column="passwd"></property>
    
<property name="email" column="email"></property>
  
</class>
</hibernate-mapping>

IUserDAO接口

 

package model;

public interface IUserDAO {
  
public void insert(User user);
  
public User findByName(String name);
  
public User findByEmail(String email);
  
public void update(User user);
}

UserDAO实现

 

package model;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

public class UserDAO implements IUserDAO {
    
private HibernateTemplate hibernateTemplate;
    
public HibernateTemplate getHibernateTemplate() {
        
return hibernateTemplate;
    }


    
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        
this.hibernateTemplate = hibernateTemplate;
    }


    
public User findByEmail(String email) {
        List users
=hibernateTemplate.find("from User where user.email='"+email+"'");
        
return (User)users.get(0);
    }


    
public User findByName(String name) {
        List users
=hibernateTemplate.find("from User where user.username='"+name+"'");
        
return (User)users.get(0);
    }


    
public void insert(User user) {
        hibernateTemplate.save(user);

    }


    
public void update(User user) {
        hibernateTemplate.update(user);

    }


}

Bookmark:

 

package model;

public class Bookmark {
   
private Integer id;
   
private String username;
   
private String url;
public Integer getId() {
    
return id;
}

public void setId(Integer id) {
    
this.id = id;
}

public String getUsername() {
    
return username;
}

public void setUsername(String username) {
    
this.username = username;
}

public String getUrl() {
    
return url;
}

public void setUrl(String url) {
    
this.url = url;
}

}

Bookmark类对应的数据表:

 

create table bookmark(id int(11not null primary key auto_increment, 
                  username 
varchar(16),
                  bm_url 
char(16not null);

Bookmark类对应的bookmark.hbm.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
  
<class name="model.Bookmark" table="bookmark">
    
<id name="id" column="id">
      
<generator class="native"></generator>
    
</id>
    
<property name="username" column="username"></property>
    
<property name="url" column="bm_URL"></property>

  
</class>
</hibernate-mapping>

IBookmarkDAO接口

 

package model;

import java.util.List;

public interface IBookmarlDAO {
  
public List findUserUrl(String username);
  
public void addUserUrl(String username,String url);
  
public void deleteUserUrls(String username,String[] urls);
}

BookmarkDAO实现

 

package model;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

public class BookmarkDAO implements IBookmarlDAO {
    
private HibernateTemplate hibernateTemplate;
    
public HibernateTemplate getHibernateTemplate() {
        
return hibernateTemplate;
    }


    
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        
this.hibernateTemplate = hibernateTemplate;
    }


    
public void addUserUrl(String username, String url) {
        Bookmark bm
=new Bookmark();
        bm.setUsername(username);
        bm.setUrl(url);
        hibernateTemplate.save(bm);

    }


    
public void deleteUserUrls(String username, String[] urls) {
        
for (int i = 0; i < urls.length; i++{
            List list
=hibernateTemplate.find("from Bookmark bm where (bm.username='"+username+"') and (bm.url='"+urls[i]+"')");
            hibernateTemplate.delete(list.get(
0));
         }

    }


    
public List findUserUrl(String username) {
        List list
=hibernateTemplate.find("select bm.url from bookmark as bm where bm.username='"+username+"'");
        
return list;
    }


}

SpringMail类---当用户忘记登陆密码时候,可以要求他输入注册的email地,邮件告知用户密码

 

package model;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;

public class SpringMail {
  
private String smtpHost;
  
private String from;
public String getSmtpHost() {
    
return smtpHost;
}

public void setSmtpHost(String smtpHost) {
    
this.smtpHost = smtpHost;
}

public String getFrom() {
    
return from;
}

public void setFrom(String from) {
    
this.from = from;
}

public void sendPasswdMail(String email,String username,String password){
    JavaMailSenderImpl javaMailSenderImpl
=new JavaMailSenderImpl();
    javaMailSenderImpl.setHost(
this.getSmtpHost());
    SimpleMailMessage mailMessage
=new SimpleMailMessage();
    
    mailMessage.setTo(email);
    mailMessage.setFrom(
this.getFrom());
    mailMessage.setSubject(
"您的密码:");
    mailMessage.setText(username
+"您好,您的密码是:"+password);
    javaMailSenderImpl.send(mailMessage);
}
  
}

View设计

tag file的使用

网页中有许多共同的部分,像网页开头,结尾或是公共信息,用户选单等功能,我们可以使用JSP 2.0技术中的Tag Files设计这些内容为tag文件,并在必要的时候把这些文件包含在网页中,达到复用的目的

header.tag

 

<%@tag description="每个网页的Header" pageEncoding="GB2312"%>
<html>
<head>
    
<title>Spring在线书签</title>
    
<style>
    body 
{font-family: Arial, Helvetica, sans-serif; 
          font-size
: 13px}

    li, td 
{Arial, Helvetica, sans-serif;
            font-size
: 13px}
    
    hr 
{color: #3333cc; width: 300;
        text-align
: left}

    a 
{color: #000000}
    
</style>
</head>
<body>
<img src='images/caterpillar.jpg'
     
alt='Spring在线书签Logo' border='0' align='left'
     
valign='bottom'/>
<h1>&nbsp;Spring在线书签</h1>
<hr style="width: 100%; height: 2px;"> 
<hr style="width: 100%; height: 2px;">

site_info.tag

 

<%@tag description="网站消息" pageEncoding="GB2312"%>
<ul>
&nbsp;&nbsp;<li>在线储存您的书签
&nbsp;&nbsp;<li>分享您我的书签
&nbsp;&nbsp;<li>快来秀出最酷的链接
</ul>

usermenu.tag

 

<%@tag description="使用者功能表单" pageEncoding="GB2312"%>
<hr style="width: 100%; height: 2px;">
<href='/OnlineBookMark/member.do'>会员首页</a> &nbsp;|&nbsp;
<href='/OnlineBookMark/member.do?action=addUrl'>加入书签</a> &nbsp;|&nbsp; 
<href='/OnlineBookMark/member.do?action=changePasswd'>改变密码</a> &nbsp;|&nbsp; 
<href='/OnlineBookMark/member.do?action=logout'>退出</a> 
<hr style="width: 100%; height: 2px;"> 


footer.tag

 

<%@tag description="每个网页的Footer" pageEncoding="GB2312"%>
</body>
</html> 

 

注册网页register.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<html>
  
<head>
    
<title>注册</title>
  
</head>
  
<body>
    
<bookmark:header/>
    
<spring:bind path="command.*">
      
<font color="red">
         
<b>${status.errorMessage}</b>
      
</font>
    
</spring:bind>
    
<form method="post" action="/OnlineBookMark/register.do">
       
<table bgcolor="#cccccc">
         
<tr>
           
<td>邮件地址</td>
           
<td>
               
<spring:bind path="command.email">
                   
<input type="text" name="${status.expression}" value="${status.value}" size="30" maxlength="100">
              
</spring:bind>
           
</td>
         
</tr>
         
<tr>
           
<td>名称(最大16字符)</td>
           
<td>
              
<spring:bind path="command.username">
                   
<input type="text" name="${status.expression}" value="${status.value}" size="16" maxlength="16">
              
</spring:bind>
           
</td>
         
</tr>
         
<tr>
           
<td>密码(6到16字符)</td>
           
<td valign="top">
              
<spring:bind path="command.passwd">
                   
<input type="password" name="${status.expression}" value="${status.value}" size="6" maxlength="16">
              
</spring:bind>
           
</td>
         
</tr>
         
<tr>
           
<td>确认密码(6到16字符)</td>
           
<td>
              
<spring:bind path="command.passwd2">
                   
<input type="password" name="${status.expression}" value="${status.value}" size="6" maxlength="16">
              
</spring:bind>
           
</td>
         
</tr>
         
<tr>
            
<td colspan="2" align="center">
              
<input type="submit" value="注册"/>
            
</td>
         
</tr>
       
</table>
    
</form>
  
</body>
</html>

 

注册成功页面register_success.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<html>
  
<head>
    
<title>注册</title>
  
</head>
  
<body>
    
<bookmark:header/>
    您的注册已成功,前往会员网页!
    
<br><href="/OnlineBookMark/member.do">会员网页</a>
    
<bookmark:footer/>
  
</body>
</html>

 

 登陆页面 login.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<html>
  
<head>
    
<title>登陆</title>
  
</head>
  
<body>
    
<bookmark:header/>
    
<bookmark:site_info/>
    
<href="/OnlineBookMark/register.do">还不是会员?</a>
    
<form metod="post" action="/OnlineBookMark/login.do">
       
<spring:bind path="command.*">
          
<font color="red">
             
<b>${status.errorMessage}</b>
          
</font>
       
</spring:bind>
       
<table bgcolor="#cccccc">
          
<tr>
            
<td colspan="2">会员登陆</td>
          
</tr>
          
<tr>
            
<td>名称:</td>
            
<td>
               
<spring:bind path="command.username">
                 
<input type="text" name="${status.expression}" value="${status.value}"/>
               
</spring:bind>
            
</td>
          
</tr>
          
           
<tr>
            
<td>密码:</td>
            
<td>
               
<spring:bind path="command.passwd">
                 
<input type="password" name="${status.expression}" value="${status.value}"/>
               
</spring:bind>
            
</td>
          
</tr>
          
<tr>
            
<td colspan="2" align="center">
            
<input type="submit" value="登陆">
            
</td>
          
</tr>
            
<tr>
            
<td colspan="2" align="center">
            
<href="/OnlineBookMark/forgot.do">忘记密码?</a>
            
</td>
          
</tr>
       
</table>
    
</form>
  
</body>
  
<bookmark:footer/>
</html>

 

登陆成功页面login_success.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<html>
  
<head>
    
<title>登陆</title>
  
</head>
  
<body>
    
<bookmark:header/>
    您的登陆已成功,前往会员网页!
    
<br><a href="/OnlineBookMark/member.do">会员网页</a>
    
<bookmark:footer/>
  
</body>
</html>

新增书签addbm.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  
<head>
    
<title>新增书签</title>
  
</head>
  
<body>
    
<bookmark:header/>
   
    
<form name="bm_table" action="/OnlineBookMark/member.do" method="post">
       
<table width="300" cellpadding="2" cellpacing="0">
         
<tr bgcolor="#cccccc">
           
<td>
             
<strong>书签</strong>
           
</td>
           
<td>
             
<input type="text" name="new_url" value="http://" size="30" maxlength="255"/>
           
</td>
         
</tr>
         
<tr>
           
<td colspan="2" align="center">
              
<input type="hidden" name="action" value="addUrl"/>
              
<input type="submit" value="新增书签"/>
           
</td>
         
</tr> 
      
       
</table>
    
</form>
    
<bookmark:usermenu/>
    
<bookmark:footer/>
  
</body>
</html>

 

会员网页member.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  
<head>
    
<title>会员</title>
  
</head>
  
<body>
    
<bookmark:header/>
    
<br>${valid_user}您好!</br>
    
<form name="bm_table" action="/OnlineBookMark/member.do" method="post">
       
<table width="300" cellpadding="2" cellpacing="0">
         
<tr bgcolor="#cccccc">
           
<td>
             
<strong>书签</strong>
           
</td>
         
</tr>
         
<c:forEach var="url" items="${urls}">
           
<tr bgcolor="#ffffff">
              
<td>
                
<href=<c:out value="${url}}"/>><c:out value="${url}"/></a>
              
</td>
              
<td>
                
<input type="checkbox" name="del_me" value=<c:out value="${url}"/>>
              
</td>
           
</tr>
         
</c:forEach>
         
<tr bgcolor="#ffffff">
            
<td></td>
            
<td>
               
<input type="hidden" name="action" value="deleteUrl"/>
               
<input type="submit" value="删除"/>
            
</td>
         
</tr>
       
</table>
    
</form>
    
<bookmark:usermenu/>
    
<bookmark:footer/>
  
</body>
</html>

 

改变密码页面 change_passwd.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  
<head>
    
<title>修改密码</title>
  
</head>
  
<body>
    
<bookmark:header/>
   
    
<form name="bm_table" action="/OnlineBookMark/member.do" method="post">
       
<table width="300" cellpadding="2" cellpacing="0">
         
<tr bgcolor="#cccccc">
           
<td>
             
<strong>新密码</strong>
           
</td>
           
<td>
             
<input type="password" name="new_passwd"  size="16" maxlength="16"/>
           
</td>
         
</tr>
         
<tr>
           
<td colspan="2" align="center">
              
<input type="hidden" name="action" value="changePassword"/>
              
<input type="submit" value="修改密码"/>
           
</td>
         
</tr> 
      
       
</table>
    
</form>
    
<bookmark:usermenu/>
    
<bookmark:footer/>
  
</body>
</html>

 

取回密码forgot.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@taglib prefix="bookmark" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  
<head>
    
<title>取回密码</title>
  
</head>
  
<body>
    
<bookmark:header/>
   
    
<form name="bm_table" action="/OnlineBookMark/forgot.do" method="post">
       
<table width="300" cellpadding="2" cellpacing="0">
         
<tr bgcolor="#cccccc">
           
<td>
             
<strong>邮件地址</strong>
           
</td>
           
<td>
             
<input type="password" name="email"  size="16" maxlength="100"/>
           
</td>
         
</tr>
         
<tr>
           
<td colspan="2" align="center">
           
              
<input type="submit" value="寄出密码"/>
           
</td>
         
</tr> 
      
       
</table>
    
</form>
    
<bookmark:usermenu/>
    
<bookmark:footer/>
  
</body>
</html>

 

首页重定向页面index.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<<jsp:forward page="/OnlineBookMark/login.do"></jsp:forward>
Controller设计

RegisterFomr.java及RegisterValidator.java

 

package web;

public class RegisterForm {
   
private String email;
   
private String username;
   
private String passwd;
   
private String passwd2;

public String getEmail() {
    
return email;
}

public void setEmail(String email) {
    
this.email = email;
}

public String getUsername() {
    
return username;
}

public void setUsername(String username) {
    
this.username = username;
}

public String getPasswd() {
    
return passwd;
}

public void setPasswd(String passwd) {
    
this.passwd = passwd;
}

public String getPasswd2() {
    
return passwd2;
}

public void setPasswd2(String passwd2) {
    
this.passwd2 = passwd2;
}

}



package web;

import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

public class RegisterValidator implements Validator {

    
public boolean supports(Class cls) {
    
        
return cls.equals(RegisterForm.class);
    }


     
public void validate(Object obj, Errors errors) 
            RegisterForm form 
= (RegisterForm) obj; 
            
            
if(!validateEmail(form.getEmail())) {
                errors.rejectValue(
"email"
                        
"invalid_email"null"邮件格式不正确"); 
            }

            
            
if(form.getPasswd().length() < 6 || 
              form.getPasswd().length() 
> 16
                errors.rejectValue(
"passwd"
                    
"less-or-over"null"密码长度必须是6到16位的字符"); 
            }
 
            
            
if(!form.getPasswd().equals(form.getPasswd2())) 
                errors.rejectValue(
                  
"passwd""not-equal"null"两次输入的密码不符"); 
            }
         
        }

        
        
private boolean validateEmail(String email) {
            
return email.matches("^[_a-z0-9-]+([.]" + 
                    
"[_a-z0-9-]+)*@[a-z0-9-]+([.][a-z0-9-]+)*$");
        }
 
}

 

RegisterController.java  注册用户

 

package web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.IUserDAO;
import model.User;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;


public class RegisterController extends SimpleFormController {
    
private IUserDAO userDAO;
    
public RegisterController(){
        
this.setCommandClass(RegisterForm.class);
    }

    
    
public ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,Object command,BindException exception) throws Exception{
        RegisterForm form
=(RegisterForm)command;
        User user
=new User();
        user.setEmail(form.getEmail());
        user.setUsername(form.getUsername());
        user.setPasswd(form.getPasswd());
        
this.getUserDAO().insert(user);
        
        request.getSession().setAttribute(
"valid_user", form.getUsername());
        
return new ModelAndView(this.getSuccessView());
    }

    
    
public IUserDAO getUserDAO() {
        
return userDAO;
    }


    
public void setUserDAO(IUserDAO userDAO) {
        
this.userDAO = userDAO;
    }

}

LoginForm.java

 

package web;

public class LoginForm {
   
private String username;
   
private String passwd;
public String getUsername() {
    
return username;
}

public void setUsername(String username) {
    
this.username = username;
}

public String getPasswd() {
    
return passwd;
}

public void setPasswd(String passwd) {
    
this.passwd = passwd;
}

}

 

 LoingController.java 登陆

 

package web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.IUserDAO;
import model.User;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class LoginController extends SimpleFormController {

    
private IUserDAO userDAO;
    
public IUserDAO getUserDAO() {
        
return userDAO;
    }

    
public void setUserDAO(IUserDAO userDAO) {
        
this.userDAO = userDAO;
    }

    
public LoginController(){
        
this.setCommandClass(LoginForm.class);
    }

    
protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            
throws Exception {
        LoginForm form
=(LoginForm)command;
        User user
=userDAO.findByName(form.getUsername());
        
if(user==null){
            errors.rejectValue(
"username""no_such_user""查无此人");
            
return new ModelAndView(this.getFormView(),errors.getModel());
        }

        
else if(user!=null&&!user.getPasswd().equals(form.getPasswd())){
            errors.rejectValue(
"passwd""wrong_password""密码错误");
            
return new ModelAndView(this.getFormView(),errors.getModel());
        }

        
else{
            request.getSession().setAttribute(
"valid_user", user.getUsername());
            
return new ModelAndView(this.getSuccessView());
        }

    }

  
}

 

MemberController.java  会员功能

 

package web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.IBookmarkDAO;
import model.IUserDAO;
import model.User;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.view.RedirectView;

public class MemberController extends MultiActionController {
   
private IBookmarkDAO bookmarkDAO;
   
private IUserDAO userDAO;
   
private String memberPage;
   
private String addBmPage;
   
private String passwdPage;
   
private String redirectPAge;
   
public ModelAndView displayUrl(HttpServletRequest request,HttpServletResponse response){
       String username
=(String)request.getSession().getAttribute("valid_user");
       
if(username!=null){
           List urls
=this.getBookmarkDAO().findUserUrl(username);
           
return new ModelAndView(this.getMemberPage(),"urls",urls);
       }

       
else{
           
return new ModelAndView(new RedirectView(this.getRedirectPAge()));
       }

   }

   
   
public ModelAndView addUrl(HttpServletRequest request,HttpServletResponse response){
       String username
=(String)request.getSession().getAttribute("valid_user");
       
if(username!=null){
           
if(request.getParameter("new_url")!=null){
               String url
=(String)request.getParameter("new_url");
               
this.getBookmarkDAO().addUserUrl(username, url);
               
return displayUrl(request,response);
           }

           
else{
               
return new ModelAndView(this.getAddBmPage());
           }

       }
else{
           
return new ModelAndView(new RedirectView(this.getRedirectPAge()));
       }

   }

   
   
public ModelAndView deleteUrl(HttpServletRequest request,HttpServletResponse response){
       String username
=(String)request.getSession().getAttribute("valid_user");
       
if(username!=null){
           
if(request.getParameterValues("del_me")!=null){
               String[] deleted_urls
=(String[])request.getParameterValues("del_me");
               
this.getBookmarkDAO().deleteUserUrls(username, deleted_urls);
               
return this.displayUrl(request, response);
           }
else{
               
return new ModelAndView(this.getAddBmPage());
           }

       }
else{
           
return new ModelAndView(new RedirectView(this.getRedirectPAge()));
       }

   }

   
   
public ModelAndView changePasswd(HttpServletRequest request,HttpServletResponse response){
       String username
=(String)request.getSession().getAttribute("valid_user");
       
if(username!=null){
          
if(request.getParameter("new_passwd")!=null)
           String passwd
=request.getParameter("new_passwd");
           User user
=this.getUserDAO().findByName(username);
           user.setPasswd(passwd);
           
this.getUserDAO().update(user);
           
return displayUrl(request,response);
          }

          
else{
              
return new ModelAndView(this.getPasswdPage());
          }

       }
else{
           
return new ModelAndView(new RedirectView(this.getRedirectPAge()));
       }

   }

   
   
public ModelAndView logout(HttpServletRequest request,HttpServletResponse response){
       request.getSession().invalidate();
       
return new ModelAndView(new RedirectView(this.getRedirectPAge()));
   }

public IBookmarkDAO getBookmarkDAO() {
    
return bookmarkDAO;
}

public void setBookmarkDAO(IBookmarkDAO bookmarkDAO) {
    
this.bookmarkDAO = bookmarkDAO;
}

public IUserDAO getUserDAO() {
    
return userDAO;
}

public void setUserDAO(IUserDAO userDAO) {
    
this.userDAO = userDAO;
}

public String getMemberPage() {
    
return memberPage;
}

public void setMemberPage(String memberPage) {
    
this.memberPage = memberPage;
}

public String getAddBmPage() {
    
return addBmPage;
}

public void setAddBmPage(String addBmPage) {
    
this.addBmPage = addBmPage;
}

public String getPasswdPage() {
    
return passwdPage;
}

public void setPasswdPage(String passwdPage) {
    
this.passwdPage = passwdPage;
}

public String getRedirectPAge() {
    
return redirectPAge;
}

public void setRedirectPAge(String redirectPAge) {
    
this.redirectPAge = redirectPAge;
}

}

 

ForgotController.java 会员忘记密码

 

package web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.IUserDAO;
import model.SpringMail;
import model.User;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class ForgotController extends AbstractController {

    
private IUserDAO userDAO;
    
private SpringMail springMail;
    
private String loginPage;
    
private String forgotPage;
    
public IUserDAO getUserDAO() {
        
return userDAO;
    }

    
public void setUserDAO(IUserDAO userDAO) {
        
this.userDAO = userDAO;
    }

    
public SpringMail getSpringMail() {
        
return springMail;
    }

    
public void setSpringMail(SpringMail springMail) {
        
this.springMail = springMail;
    }

    
public String getLoginPage() {
        
return loginPage;
    }

    
public void setLoginPage(String loginPage) {
        
this.loginPage = loginPage;
    }

    
public String getForgotPage() {
        
return forgotPage;
    }

    
public void setForgotPage(String forgotPage) {
        
this.forgotPage = forgotPage;
    }

    
protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) 
throws Exception {
        
        String email
=(String)request.getParameter("email");
        
if(email!=null&&!"".equals(email)){
            User user
=this.getUserDAO().findByEmail(email);
            
this.getSpringMail().sendPasswdMail(email, user.getUsername(), user.getPasswd());
            
return new ModelAndView(this.getLoginPage());
        }

        
else{
            
return new ModelAndView(this.getForgotPage());
        }

    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值