📄 regaction.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 + -