📄 userlogonaction.java
字号:
package com.ntsky.bbs.action;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger ;
import com.ntsky.bbs.service.UserFactory;
import com.ntsky.bbs.service.User;
import com.ntsky.bbs.form.UserActionForm;
import com.ntsky.bbs.service.db.DBUser;
import org.apache.commons.beanutils.PropertyUtils;
/**
* <p>Title: Ntsky OpenSource BBS</p>
* <p>Description: 公告信息</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: WWW.FM880.COM</p>
* @author 姚君林
* @version 1.0
*/
public class UserLogonAction
extends Action {
private final static Logger logger = Logger.getLogger(UserLogonAction.class);
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception{
/**@todo: complete the business logic here, this is just a skeleton.*/
logger.info("用户登陆......");
HttpSession session = httpServletRequest.getSession();
String action = httpServletRequest.getParameter("action");
UserActionForm userActionForm = (UserActionForm) actionForm;
if("logon".equals(action)){
logger.info("用户从登陆页面登陆......");
userActionForm.setIsCookie("0");
return actionMapping.findForward("continue");
}
logger.info("action = " + action);
UserFactory factory = UserFactory.getInstance();
User user = null;
/**
* 检测到cookie的用户
*/
if ("cookie".equals(action)) {
//获取用户本地的cookie
Cookie[] cookie = httpServletRequest.getCookies();
if (cookie != null) {
if (cookie.length > 0) {
for (int i = 0; i < cookie.length; i++) {
logger.info("设置的cookie名 : " + cookie[i].getName());
//获取cookieName为cookie的cookie
String cookieName = cookie[i].getName();
if (cookieName.equals("cookieId")) {
/*if("".equals(cookieName)){
session.removeAttribute("");
}*/
/**
* 由cookie的值取得整个用户实例
*/
String usrId = cookie[i].getValue();
logger.info("cookie的值为 : " + usrId);
//先更新登陆次数
factory.upUserLoginInfo("usrId",usrId);
user = factory.userInfo(Integer.parseInt(usrId));
logger.info("usrName = " + user.getUsrName());
/**
* 设置session返回
*/
session.setAttribute(Constant.USER_KEY, user);
}
else {
logger.info("没有该用户的cookie,跳转到filter页面");
return actionMapping.findForward("cookie");
}
}
}
}
else {
logger.info("没有cookie跳转到登陆页面");
return actionMapping.findForward("cookie");
}
return actionMapping.findForward("cookie");
}
if ("quickLogon".equals(action)) {
logger.info("没有cookie跳转到登陆页面");
return actionMapping.findForward("quickLogon");
}
else {
/**
* 用户登陆
*/
String isCookie = httpServletRequest.getParameter("isCookie");
logger.info("该用户保存cookie吗 : " + isCookie);
User userForm = new DBUser();
PropertyUtils.copyProperties(userForm, userActionForm);
logger.info("获得登陆的用户名 : " + userForm.getUsrName());
user = factory.userLogon(userForm);
if (user.getSuccess()) {
//用户成功登陆
session.setAttribute(Constant.USER_KEY, user);
setCookie(httpServletResponse,user,isCookie);
}
else{
logger.info("用户登陆错误...重新登陆。");
//输出错误提示给用户
ActionMessages messages = new ActionMessages();
ActionMessage message = new ActionMessage(
"message.user.error.userError");
messages.add(ActionMessages.GLOBAL_MESSAGE, message);
saveMessages(httpServletRequest, messages);
return actionMapping.findForward("logon");
}
logger.info("用户返回信息!");
return actionMapping.findForward("success");
//throw new java.lang.UnsupportedOperationException("Method perform() not yet implemented.");
}
}
/**
* cookie的设置
*/
public void setCookie(HttpServletResponse httpServletResponse,User user,String isCookie){
if("on".equals(isCookie)){
/**
* 设置cookie
*/
Cookie cookie = new Cookie("cookieId",
String.valueOf(user.getUsrId()));
//设置cookie时间(一年)
cookie.setMaxAge(365 * 24 * 60 * 60);
logger.info("设置cookie成功");
httpServletResponse.addCookie(cookie);
}
if("0".equals(isCookie)){
return;
}
if("1".equals(isCookie)){
Cookie cookie = new Cookie("cookieId",String.valueOf(user.getUsrId()));
cookie.setMaxAge(7 * 24 * 60 * 60);
httpServletResponse.addCookie(cookie);
}
if("2".equals(isCookie)){
Cookie cookie = new Cookie("cookieId",String.valueOf(user.getUsrId()));
cookie.setMaxAge(365 * 24 * 60 * 60);
httpServletResponse.addCookie(cookie);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -