📄 useraction.java
字号:
package com.elan.forum.actions.user;
import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.hibernate.Query;
import org.hibernate.Session;
import com.elan.db.ElHbnDB;
import com.elan.forum.elf.El;
import com.elan.forum.forms.user.UserForm;
import com.elan.forum.manager.TopicMgr;
import com.elan.forum.manager.UserMgr;
import com.elan.forum.model.ForumTopic;
import com.elan.forum.model.ForumUser;
import com.elan.forum.model.Forummessages;
import com.elan.forum.util.Constents;
import com.elan.forum.util.ElCheckString;
import com.elan.forum.util.PropertyConstents;
public class UserAction extends UserBaseAction {
@Override
protected ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// 假如用户没有登陆的时候,需要保存他想要回复的TOPIC的URL,
// 当他登陆后,直接跳到他前面想回复的帖子
HttpSession session = this.getSession(request);
String lastUrl = request.getParameter("url");
El el = El.getEl();
UserMgr fuMgr = el.getForumUserMgr();
ForumUser forumUser = null;
String username = null;
String password = null;
if (form != null) {
username = ((UserForm) form).getUsername();
password = ((UserForm) form).getPassword();
} else {
return new ActionForward(mapping.getInput());
}
forumUser = fuMgr.checkUserAndCreateUser(username, password);
if (forumUser == null) {
ActionErrors errors = new ActionErrors();
errors.add(Constents.USER_LOGON_ERROR_KEY, new ActionError(
PropertyConstents.USERNAME_PASSWORD_FAILURE_KEY));
saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
if (1 == forumUser.getLocked()) {
ActionErrors errors = new ActionErrors();
errors.add(Constents.USER_LOGON_ERROR_KEY, new ActionError(
"user.isLocked"));
saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
forumUser.setLogonTimes(forumUser.getLogonTimes() + 1);
fuMgr.updateUser(forumUser);
session.setAttribute("user", forumUser);
// 跳转到最后的URL,属于非正式登陆
if (lastUrl != null && !"null".equals(lastUrl) && !lastUrl.trim().equals("")) {
String toUrl = lastUrl.replace(request.getContextPath()
+ "/forum", "");
System.out.println("-------------"+toUrl);
//return mapping.findForward("success");
return (new ActionForward(toUrl, true));
}
return mapping.findForward("success");
}
@Override
protected ActionForward test(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
return null;
}
protected String constructPosition(HttpServletRequest request,
Integer pieceId, String pieceName, Integer topicId, String topicTile) {
StringBuffer strPath = new StringBuffer();
if (pieceId != null && pieceName != null) {
// 构造pieceStr
strPath.append("<a href=\"").append(Constents.CONTEXTPATH).append(
"/forum/topic.do?action=showPiece&pieceId=")
.append(pieceId).append("\">").append(pieceName).append(
"</a>>>");
}
if (topicId != null && topicTile != null) {
// 构造文章路径
strPath.append("<a href=\"").append(Constents.CONTEXTPATH).append(
"/forum/topic.do?action=showTopic&topicId=")
.append(topicId).append("\">").append(topicTile).append(
"</a>");
}
return strPath.toString();
}
// 通用方法
/**
* @param map
* @return
*/
protected String construtctPostion(Map<String, String> map) {
StringBuffer strPath = new StringBuffer();
String[] key = (String[]) map.keySet().toArray();
String[] values = (String[]) map.values().toArray();
for (int i = 0; i < map.size(); i++) {
strPath.append("<a href=\"").append(key[i]).append(">").append(
values[i]).append("</a>>>");
}
return strPath.toString().substring(0, strPath.toString().length() - 2);
}
@Override
protected ActionForward loginForm(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// request.setAttribute("url",request.getAttribute("url"));
// System.out.println("urlurl:" + request.getAttribute("url"));
return mapping.findForward("userLogin");
}
@Override
protected ActionForward UserRegForm(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
return mapping.findForward("userRegForm");
}
/*
* 用户注册 (non-Javadoc)
*
* @see com.elan.forum.actions.user.UserBaseAction#UserReg(org.apache.struts.action.ActionMapping,
* org.apache.struts.action.ActionForm,
* javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
@Override
protected ActionForward UserReg(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String lastUrl = (String) request.getSession().getAttribute("lastUrl");
El el = El.getEl();
UserMgr fuMgr = el.getForumUserMgr();
ForumUser forumUser = new ForumUser();
System.out.println("开始注册");
if (form != null) {
initForumUserProperty(forumUser, form);
System.out.println(forumUser.getBirthday());
}
forumUser.setLastLogonIp(request.getRemoteAddr());
if (!fuMgr.forumUserReg(forumUser)) {
return (new ActionForward(mapping.getInput()));
}
// 注册成功了
Constents.setNewUser(forumUser.getUsername());
Constents.addUserNum();
HttpSession session = request.getSession();
if (session.getAttribute("user") != null) {
session.removeAttribute("user");
}
session.setAttribute("user", forumUser);
session.setAttribute("isLogin", "true");
System.out.println("注册通过");
if (lastUrl != null) {
// 存在lastUrl,移出,减少内存上的浪费
session.removeAttribute("lastUrl");
System.out.println(lastUrl);
lastUrl = lastUrl.replace(request.getContextPath() + "/forum", "");
//System.out.println(lastUrl);
return (new ActionForward(lastUrl, true));// 回到注册前的那页
}
return mapping.findForward("success");// 会到主页
}
protected void initForumUserProperty(ForumUser forumUser, ActionForm form) {
String username = null;
String trueName = null;
String password = null;
String email = null;
String qq = null;
String sex = null;
String question = null;
String answer = null;
String address = null;
String userFace = null;
String phone = null;
Integer mobile = null;
String sign = null;
String jobTitle = null;
String marriage = null;
String msn = null;
String icq = null;
Timestamp birthday = null;
phone = ((UserForm) form).getPhone();
address = ((UserForm) form).getAddress();
userFace = ((UserForm) form).getUserFace();
mobile = ((UserForm) form).getMobile();
sign = ((UserForm) form).getSign();
jobTitle = ((UserForm) form).getJobTitle();
marriage = ((UserForm) form).getMarriage();
msn = ((UserForm) form).getMsn();
icq = ((UserForm) form).getIcq();
birthday = ((UserForm) form).getBirthday();
trueName = ((UserForm) form).getTrueName();
username = ((UserForm) form).getUsername();
password = ((UserForm) form).getPassword();
email = ((UserForm) form).getEmail();
qq = ((UserForm) form).getQq();
sex = ((UserForm) form).getSex();
question = ((UserForm) form).getQuestion();
answer = ((UserForm) form).getAnswer();
forumUser.setTrueName(trueName);
forumUser.setSex(sex);
forumUser.setAddress(address);
forumUser.setUserFace(userFace);
forumUser.setPhone(phone);
forumUser.setMobile(mobile);
forumUser.setSign(sign);
forumUser.setJobTitle(jobTitle);
forumUser.setMarriage(marriage);
forumUser.setMsn(msn);
forumUser.setIcq(icq);
forumUser.setBirthday(birthday);
forumUser.setUsername(username);
forumUser.setPassword(password);
forumUser.setEmail(email);
forumUser.setQq(qq);
forumUser.setLocked(Byte.valueOf("0"));
forumUser.setQuestion(question);
forumUser.setAnswer(answer);
// 不是由form转过来的值
forumUser.setDeleteTopicCount(0);
forumUser.setTopicCount(Integer.valueOf(0));
forumUser.setLastLoginTime((new Timestamp(System.currentTimeMillis())));
forumUser.setForumLevelPic("001.gif");
forumUser.setForumLevel("哈哈");
forumUser.setLogonTimes(0);
forumUser.setForumPoints(60);
}
protected ActionForward userInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session = this.getSession(request);
ForumUser fu = (ForumUser) session.getAttribute("user");
this.setAttribute(request, "Navigation", this.constructNavigation(
request, this.getAction(request)));
return mapping.findForward("userInfo");
}
@Override
protected ActionForward passwordMgr(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session = this.getSession(request);
ForumUser fu = (ForumUser) session.getAttribute("user");
this.setAttribute(request, "Navigation", this.constructNavigation(
request, this.getAction(request)));
String modify = null;
// 提高效率,而不通过UserForm来获取值
modify = request.getParameter("modify");
System.out.println(modify);
if ("true".equals(modify)) {
String oldPassword = request.getParameter("oldPassword");
String newPassword = request.getParameter("newPassword");
String question = request.getParameter("question");
String answer = request.getParameter("answer");
ActionErrors errors = null;
ActionMessages messages = null;
if (oldPassword == null || oldPassword.trim().equals("")
|| newPassword == null || newPassword.trim().equals("")) {
// System.out.println("验证失败");
errors = new ActionErrors();
errors.add("", new ActionError("password.not.same"));
saveErrors(request, errors);
return mapping.findForward("userPassword");
/*
* } else if(question.equals(fu.getQuestion()) &&
* answer.equals(fu.getAnswer())) { errors = new ActionErrors();
* errors.add("", new ActionError("问题答案错误"));
* saveErrors(request, errors); return
* mapping.findForward("userPassword");
*/
} else {
fu.setPassword(newPassword);
if (El.getEl().getForumUserMgr().updateUser(fu)) {
messages = new ActionMessages();
messages.add("success", new ActionMessage(
"user.modifypassword.success"));
saveMessages(request, messages);
}
return mapping.findForward("userSuccess");
}
}
return mapping.findForward("userPassword");
}
@Override
protected ActionForward userMessages(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = this.getSession(request);
Integer count = 0;
Integer pageSize = Constents.DEFAULT_PAGE_SIZE;
Integer page = 1;
Boolean hasPreviousPage = false;
Boolean hasNextPage = false;
String showLjMsgStr = request.getParameter("isLj");
page = getPage(request);
ForumUser fu = (ForumUser) session.getAttribute("user");
if (null == showLjMsgStr || "".equals(showLjMsgStr.trim())) {
showLjMsgStr = (String) request.getAttribute("isLj");
}
if ("true".equals(showLjMsgStr)) {
count = El.getEl().getMsgMgr().getLjCount(fu.getId());
} else {
count = El.getEl().getMsgMgr().getCount(fu.getId());
}
Integer pageCount = 0;
if (0 != pageSize && count % pageSize == 0) {
pageCount = count / pageSize;
} else if (0 != pageSize) {
pageCount = count / pageSize + 1;
} else {
pageCount = 0;
}
if (page > pageCount) {
page = pageCount;
} else if (page < 0) {
page = 1;
}
if (page < pageCount) {
hasNextPage = true;
}
if (page > 1) {
hasPreviousPage = true;
}
this.setAttribute(request, "Navigation", this.constructNavigation(
request, this.getAction(request)));
List<Forummessages> listFm = null;
if ("true".equals(showLjMsgStr)) {
listFm = El.getEl().getMsgMgr().findLjByPage(fu.getId(), page,
pageSize);
} else {
listFm = El.getEl().getMsgMgr().findByPage(fu.getId(), page,
pageSize);
}
request.setAttribute("listFm", listFm);
this.setAttribute(request, "page", page);
this.setAttribute(request, "count", count);
this.setAttribute(request, "pageSize", pageSize);
this.setAttribute(request, "pageCount", pageCount);
this.setAttribute(request, "hasPreviousPage", hasPreviousPage);
this.setAttribute(request, "hasNextPage", hasNextPage);
this.setAttribute(request, "isLj", showLjMsgStr);
System.out.println("count:" + count);
return mapping.findForward("userMessages");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -