passwordhintcontroller.java

来自「Java的框架」· Java 代码 · 共 109 行

JAVA
109
字号
package mcaps.core.user.webapp.controller;

import java.util.ArrayList;
import java.util.List;

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

import mcap.core.base.service.MailEngine;
import mcap.core.base.webapp.util.RequestUtil;
import mcap.core.user.model.User;
import mcap.core.user.service.UserManager;

import org.springframework.context.MessageSource;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.RedirectView;


/**
 * Taken from AppFuse
 * Simple class to retrieve and send a password hint to users.
 * 
 */
public class PasswordHintController implements Controller {

	private UserManager mgr = null;
  private MessageSource messageSource = null;
  protected MailEngine mailEngine = null;
  protected SimpleMailMessage message = null;

  public void setUserManager(UserManager userManager) {
    this.mgr = userManager;
  }

  public void setMessageSource(MessageSource messageSource) {
    this.messageSource = messageSource;
  }

  public void setMailEngine(MailEngine mailEngine) {
    this.mailEngine = mailEngine;
  }

  public void setMessage(SimpleMailMessage message) {
    this.message = message;
  }
  
  public ModelAndView handleRequest(HttpServletRequest request,
      HttpServletResponse response) throws Exception {
  	
  	String username = request.getParameter("username");
    MessageSourceAccessor text = new MessageSourceAccessor(messageSource, request.getLocale());

    // ensure that the username has been sent
    if (username == null) {
    	request.setAttribute ("error", text.getMessage("errors.required",
                    new Object[] {text.getMessage("user.username")}));

    	return new ModelAndView("login");
    }
    
    // look up the user's information
    try {
    	User user = (User) mgr.getUser (username);

      StringBuffer msg = new StringBuffer();
      msg.append ("Your password hint is: " + user.getPasswordHint());
      msg.append ("\n\nLogin at: " + RequestUtil.getAppURL(request));

      message.setTo(user.getEmail());
      String subject = text.getMessage("webapp.prefix") + 
                       text.getMessage("user.passwordHint");
      message.setSubject(subject);
      message.setText(msg.toString());
      mailEngine.send(message);

      saveMessage(request, text.getMessage("login.passwordHint.sent",
                     new Object[] { username, user.getEmail() }));
    } 
    catch (Exception e) {
    	saveError(request, text.getMessage("login.passwordHint.error",
                 new Object[] { username }));
    }

    return new ModelAndView (new RedirectView(request.getContextPath()));
	}

	public void saveError(HttpServletRequest request, String error) {
    List errors = (List) request.getSession().getAttribute("errors");
    if (errors == null) {
    	errors = new ArrayList();
    }
    errors.add(error);
    request.getSession().setAttribute("errors", errors);
	}

	// this method is also in BaseForm Controller
	public void saveMessage(HttpServletRequest request, String msg) {
    List messages = (List) request.getSession().getAttribute("messages");
    if (messages == null) {
        messages = new ArrayList();
    }
    messages.add(msg);
    request.getSession().setAttribute("messages", messages);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?