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

📄 regaction.java

📁 一个不错的bbs论坛系统.对初学者很有帮助
💻 JAVA
字号:
package com.yhbbs.user.action;

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

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
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.apache.struts.upload.FormFile;

import com.yhbbs.bbs.biz.BbsPropBiz;
import com.yhbbs.bbs.biz.BbsStatBiz;
import com.yhbbs.bbs.biz.WealthBiz;
import com.yhbbs.bbs.itface.Parameter;
import com.yhbbs.bbs.itface.WealthDto;
import com.yhbbs.message.biz.MessageBiz;
import com.yhbbs.upload.biz.UpLoadBiz;
import com.yhbbs.upload.itface.UpFile;
import com.yhbbs.user.bean.UserImpl;
import com.yhbbs.user.biz.UserBiz;
import com.yhbbs.user.form.RegForm;
import com.yhbbs.user.itface.bean.User;
import com.yhbbs.utils.Constants;
import com.yhbbs.utils.DateUtils;
import com.yhbbs.utils.MD5;
import com.yhbbs.utils.StringUtils;

/**
 * <p>Title:论坛注册Action</p>
 * <li>	判断用户注册信息是否合法
 * <li> 注册成功后,同时更新该用户相关信息
 * <li>	处理成功或失败后分别跳转到相关页面并提示相关信息和操作<br>
 * <br><b>WebSite: www.yyhweb.com</b>
 * <br><b>CopyRight: yyhweb[由由华网]</b>
 * @author stephen
 * @version YHBBS-2.0
 */
public class RegAction extends Action {
	private Parameter parameter = null;
	public RegAction (){
		parameter = BbsPropBiz.getParameter();
	}
	public ActionForward execute(ActionMapping mapping,ActionForm form,
			  HttpServletRequest request,HttpServletResponse response) {
			HttpSession session = request.getSession(true);
			ActionMessages errors = new ActionMessages();
			Logger bbslog = Logger.getLogger(RegAction.class);
			boolean flag = false;	    // 标示用户是否要审核
			if(parameter.getRegUserAuditing()==1)
				flag = true;
			
			MD5 md = new MD5();
			User user = new UserImpl();
			WealthDto wealth = WealthBiz.getRegWealth();
			RegForm reg = (RegForm) form;
			int curuId = reg.getUserid();
			if(curuId==0){
			  if(this.isTokenValid(request,true)){ // 注册用户需令牌检查
				this.resetToken(request);
			  }else{
				this.saveToken(request);
				bbslog.info("User Reg system token check error.");
				errors.add("reg.token.error",new ActionMessage("reg.token.error"));
				saveErrors(request,errors);
				return mapping.findForward("Failure");
			 }
			}
			//  验证码检验
			String checkNum = reg.getCode();
			String randNum = (String) session.getAttribute(Constants.bbscode);
			// 从session中删除rand
			session.removeAttribute(Constants.bbscode);
			if(checkNum==null || randNum ==null || (!checkNum.equals(randNum))){
				errors.add("user.checkNum.wrong",new ActionMessage("user.checkNum.wrong"));
				saveErrors(session,errors);
				return mapping.findForward("Failure");
			}
			
			// 用户信息
			String username = reg.getUsername();
			String password1 = reg.getPassword1();
			String email = reg.getEmail();
			String isemail = reg.getIsemail();
			String question = reg.getQuestion();
			String answer = reg.getAnswer();
			String sex = reg.getSex();
			String year = reg.getYear();
			String month = reg.getMonth();
			String day = reg.getDay();
			String social =reg.getSocial();
			String persontitle = reg.getPersontitle();
			String study = reg.getStudy();
			String job = reg.getJob();
			String qq =reg.getQq();
			String msn =reg.getMsn();
			String city = reg.getCity();
			String homepage = reg.getHomepage();
			String introdution = reg.getIntrodution();
			String signature = reg.getSignature();
			String imageselect = reg.getImageselect();
			String image = reg.getImage();//flag
			FormFile imgupload = reg.getImgupload();
			UpFile curFile = null;
			String imgurl = reg.getImgurl();
			String upFname = "";
			String uploadDir = request.getRealPath("/")+Constants.userimgpath;
			int imgw = reg.getImgw()>120?120:reg.getImgw();
			int imgh = reg.getImgh()>120?120:reg.getImgh();
			
			//birthday
			String sp = Constants.datasplit;
			String b = year+sp+month+sp+day;
			String birthday = DateUtils.getDate2SStr(DateUtils.getStr2SDate(b));
			
			if(password1.length()>=1)
				user.setPassword(md.getMD5ofStr(password1));
			
			user.setMail(email);
			user.setIsmail(isemail);
			user.setQuestion(question);
			user.setAnswer(answer);
			user.setSex(sex);
			user.setBirthday(birthday);
			user.setSocialpart(social);
			user.setPersontitle(persontitle);
			user.setStudy(study);
			user.setJob(job);
			user.setQq(qq);
			user.setMsn(msn);
			user.setCity(city);
			user.setHomepage(homepage);
			user.setIntrodution(introdution);
			user.setSignature(signature);
			user.setImagewidth(imgw);
			user.setImageheight(imgh);
			
			if(curuId<=0){ // 注册用户
				// 检查密码是否够长
				if(password1==null || password1.length()<Constants.pwdlength){
					errors.add("reg.pword.too.short",new ActionMessage("reg.pword.too.short",Constants.pwdlength));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
				}
				// 检查是否允许该用户注册
				if(BbsPropBiz.getForbid(0).indexOf(username)!=-1){
					errors.add("reg.user.forbid",new ActionMessage("reg.user.forbid"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
				}
				// 检查是否允许该E_mail注册
				if(BbsPropBiz.getForbid(1).indexOf(email)!=-1){
					errors.add("reg.user.mail.forbid",new ActionMessage("reg.user.mail.forbid"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
				}
				// 检查是否允许该IP注册
				String ips = BbsPropBiz.getForbid(3);
				if(StringUtils.isRightIp(ips,request)){
					errors.add("reg.user.ip.forbid",new ActionMessage("reg.user.ip.forbid"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
				}
				if(UserBiz.getUserId(username)<=0){
					int maxid = UserBiz.getUserMaxId()+1;
					if(flag)	//	待认证用户
						user.setUsertype(1);
					else
						user.setUsertype(2);
					
					if(!checkEmail(email,0,0)){
						bbslog.error("Reg a user unsuccessfully,the email had reg!");
						errors.add("reg.mail.exist",new ActionMessage("reg.mail.exist"));
						saveErrors(request,errors);
						return mapping.findForward("Failure");
					}
					user.setId(maxid);
					user.setUsername(username);
					if(image.equals("0")){
						user.setImage(imageselect);
					}
					user.setRegip(request.getRemoteAddr());
					user.setMoney(wealth.getMoney());
					user.setCharam(wealth.getCharam());
					user.setExperience(wealth.getExperc());

					if(UserBiz.addUser(user)){
						// 更新系统统计,发送短消息
						BbsStatBiz.upRegUser(maxid, username);
						MessageBiz.sendRegMessage(maxid, username);
						return mapping.findForward("Success");
					}else{
						bbslog.error("Reg a user unsuccessfully!");
						errors.add("reg.adduser.fail",new ActionMessage("reg.adduser.fail"));
						saveErrors(request,errors);
						return mapping.findForward("Failure");
					}
					
				}else{
					errors.add("reg.user.exist",new ActionMessage("reg.user.exist"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
				}
			
				}else { // 用户编辑
					user.setId(curuId);
					if(!checkEmail(email,1,curuId)){	// 如果用户修改自己mail也需要检查
						bbslog.error("edit a user unsuccessfully,the email had reg!");
						errors.add("reg.mail.exist",new ActionMessage("reg.mail.exist"));
						saveErrors(request,errors);
						return mapping.findForward("Failure");
					}
					if(image.equals("0")){
						user.setImage(imageselect);
					    user.setImageurl("");
					}else{
						if(image.equals("1")){ // 处理上传文件
							curFile = reg.getCurFile();
							if(imgupload!=null){// 用户有选择上传图片
								upFname = getUpFile(imgupload,curFile,curuId,uploadDir);
								if(upFname!=null && upFname.length()>0){
									user.setImageurl(upFname);
								}else{
									errors.add("user.edit.upimg.fail",new ActionMessage("user.edit.upimg.fail"));
									saveErrors(request,errors);
									return mapping.findForward("Failure");
								}
							}else{ // 用户输入的图片地址
								user.setImageurl(imgurl);
							}
							user.setImage("");
						}
					}
					if(UserBiz.editUser(user,true)){
						return mapping.findForward("Edit");
					}else{
						errors.add("user.edit.fail",new ActionMessage("user.edit.fail"));
						saveErrors(request,errors);
						return mapping.findForward("Failure");
					}
			   }
	}
	
	/** 判断是否需要检查email或email是否已经被注册
	 * @param email 用户Email
	 * @param re 0: 注册用户检查 1:修改时的检查
	 * @param userId 用户Id
	 * @return true:不检查或没注册 false:要检查并已注册
	 */
	private boolean checkEmail(String email,int re,int userId){
		boolean flag = false; // 标示是否一个Mail只能注册一次。1:可以多次 0:唯一
		if(parameter.getOneMail()==0)
			flag = true;
		
		if(flag){
			if(re==0){
				if(UserBiz.getUserMail(email)>0)
					return false;
				else
					return true;
			}else if(!UserBiz.getUserMail(userId).equals(email)){
					if(UserBiz.getUserMail(email)>0)
						return false;
					else
						return true;
			}
		}else{
			return true;
		}
		return true;
	}
	
	/** 处理上传的用户图片
	 * @param imgfile 上传的文件
	 * @param curfile 系统定义的上传文件
	 * @param userId 用户Id
	 * @param filePath 图片存储路径
	 * @return String 文件名称
	 */
	private String getUpFile(FormFile imgfile,UpFile curfile,int userId,String filePath){
		long maxSize = 1024000;
		String[] allow = Constants.userimg;
		boolean isallow = false;
		for(int i=0;i<allow.length;i++){
			if(allow[i].indexOf(curfile.getFiletype())!=-1){
				isallow = true;
				break;
			}
		}
		String fileName = "u_"+userId+"."+curfile.getFiletype();
		if(curfile!=null){
			if(curfile.getFilesize()>maxSize){
				imgfile.destroy();
			}else{
				if(curfile.getFiletype().length()<=0 || curfile.getFiletype().indexOf(",")!=-1 || !isallow){
					imgfile.destroy();
				}else{
					if(UpLoadBiz.writeFile(imgfile,filePath+"/"+fileName,curfile,0)){
						return fileName;
					}
				}
			}
		}
		return "";
	}
}

⌨️ 快捷键说明

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