⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 useraction.java

📁 struts+hibernate BBS mysql数据库 功能基本齐全
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -