首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

用jsp+javabean+sevlet实现注册遇到有关问题

2012-02-03 
用jsp+javabean+sevlet实现注册遇到问题我在做注册页面时,如果不考虑客户端的判断,用sevlet来判断,但是不

用jsp+javabean+sevlet实现注册遇到问题
我在做注册页面时,如果不考虑客户端的判断,用sevlet来判断,但是不管用户密码和验证码正不正确都写入数据库,我那可能是我的servlet有问题,但我知道怎么改,最好不要把他们全部放在if……else语句里,那样看起来很不爽。
servlet源代码:


package   servlet;
import   java.io.IOException;
import   javax.servlet.ServletException;
import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;

import   userInfo.User;
import   userInfo.DB_User;
import   md5.MD5_Encoding;


/*
  *   注册处理页面
  */

public   class   RegProcessServlet   extends   javax.servlet.http.HttpServlet   implements   javax.servlet.Servlet{
/**
  *  
  */
private   static   final   long   serialVersionUID   =   5415533408782200877L;

//构造函数
public   RegProcessServlet(){
super();
}

//服务器端的验证,提交处理
protected   void     doPost(HttpServletRequest   request,HttpServletResponse   response)   throws   ServletException,IOException{
response.setContentType( "text/html;cahrset=gb2312 ");
//String   selectedScreen   =request.getServletPath();
//创建MD5加密类
MD5_Encoding   md5=new   MD5_Encoding();
String   errorMsg= " ";

//必须编写的项目
String   username=request.getParameter( "username ");
String   pwd=request.getParameter( "pwd ");
String   enpwd=md5.getMD5ofStr(pwd);
String   confpwd=request.getParameter( "confpwd ");
String   email=request.getParameter( "email ");
//判断两次输入的密码是否一致
if(!pwd.equals(confpwd)){
errorMsg= "密码不一致 ";
request.setAttribute( "errorMsg ",   errorMsg);
try{
//转发至注册错误页面
request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,   response);

}
catch(Throwable   t){
//写异常日志
getServletContext().log(t.getMessage());
}
}

//验证验证码输入的正确性
String   random=request.getParameter( "random ");
String   realrand=request.getSession().getAttribute( "random ").toString();
if(!random.equals(realrand)){
errorMsg= "验证码不正确! ";
request.setAttribute( "errorMsg ",   errorMsg);
try{
//转发至注册错误页面
request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,   response);

}
catch(Throwable   t){
//写异常日志
getServletContext().log(t.getMessage());
}
}


//非必须填写的项目
String   realname=request.getParameter( "realname ");
String   gender=request.getParameter( "gender ");
String   phone=request.getParameter( "phone ");
String   question=request.getParameter( "question ");
String   answer=request.getParameter( "answer ");
String   page=request.getParameter( "mypage ");
String[]   temp=request.getParameterValues( "hobbies ");
String   hobby= " ";
//处理个人兴趣爱好
if(temp!=null){
for(int   i=0;i <temp.length;i++){
hobby   +=temp[i];
}
}

String   selfintro   =request.getParameter( "selfintro ");
try{
//创建一个用户表数据库读写类
DB_User   userdb=new   DB_User();
User   user=userdb.get(username);

if(user   !=   null){


//如果记录集为非空,表明有相匹配的用户名,注册失败
errorMsg= "已经存在相同的用户名,请更换一个新用户名 ";
request.setAttribute( "errorMsg ",   errorMsg);
try{
//转发至注册错误页面
request.getSession(true).setAttribute( "username ",   username);
request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,response);
}
catch(Throwable   t){
getServletContext().log(t.getMessage());
}
}
else{
user=new   User();
user.setUsername(username);
user.setPassword(enpwd);
user.setEmail(email);
user.setRealname(realname);
user.setGender(Integer.parseInt(gender));   //test
user.setQuestion(question);
user.setAnswer(answer);
user.setPage(page);
user.setPhone(phone);
user.setHobbies(hobby);
user.setSelfintro(selfintro);
//写入用户信息到数据库
int   i=userdb.add(user);
//注册成功
request.setAttribute( "user ",user);
//String   screen=selectedScreen+ ".jsp ";
try{
//转发至注册成功页面
request.getSession(true).setAttribute( "username ",   username);
request.getRequestDispatcher( "./reg_success.jsp ").forward(request,   response);

}
catch(Throwable   t){
//写异常日志
getServletContext().log(t.getMessage());
}
}
}
catch(Exception   e){
e.printStackTrace();
}

}
}
其他代码也不用发了,只是我就不明白怎么跳转了(request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,   response);),这个servlet程序代码还是要往下执行



[解决办法]
request.getSession(true).setAttribute( "username ", username);
request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,response);
}
语句下面加个 return;
request.getSession(true).setAttribute( "username ", username);
request.getRequestDispatcher( "./reg_failure.jsp ").forward(request,response);
return;
}

[解决办法]
这样服务器负载太大了 建议用javascript先做必要判断在传到服务器
[解决办法]
在servlet里放过多业务逻辑看上去是很不爽,那就放到javabean里去啊!
[解决办法]
magus163(菜鸟怎么赚分?)
虽然看得很不爽,但也不能写在javabean里的,三层模式...
楼主这边没看出什么错误,你可以把从页面上得到的数据打印出来.看看是不是符合要求?

热点排行