我在做注册页面时    在JSP页面   用中文注册用户名  数据没入库 却显示注册成功 结果不能登陆;用数字或字母注册没问题
 
还有请教各位  如何判断用户名已被注册   以及如何限制用户用中文注册
action代码如下: 
package com.yourcompany.struts.action; import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 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 vo.User; import com.yourcompany.struts.form.NewUserForm; import dao.UserDao; public class NewUserAction extends Action { 
public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response) { 
NewUserForm NewUserForm = (NewUserForm) form;// TODO Auto-generated method stub 
String username=NewUserForm.getUsername(); 
String password=NewUserForm.getPassword(); 
String password2=NewUserForm.getPassword2(); 
String certCode=NewUserForm.getCertCode(); 
HttpSession session=request.getSession(); 
String sRand =(String)session.getAttribute("rand"); 
String result=null; 
if(!sRand.equals(certCode)){ 
result="验证码错误"; 
request.setAttribute("result", result); 
return new ActionForward("/newUser.jsp"); 

if(!password.equals(password2)){ 
result="密码不一致"; 
request.setAttribute("result", result); 
return new ActionForward("/newUser.jsp"); 
} User user=new User(); 
user.setUid(username); 
user.setPassword(password); 
UserDao userDao=new UserDao(); 
userDao.insertUser(user); 
result = "注册成功"; 
request.setAttribute("result", result); 
return new ActionForward("/login.jsp"); 


解决方案 »

  1.   

    1,判断已注册
       根据用户名查询数据库,看是否已存在;
    2,中文判断
      /*** 检查是否包含汉字 ***/ 
    String.prototype.isInChinese = function() { 
    return (this.length != this.replace(/[^\x00-\xff]/g,"**").length); 
    }用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
      

  2.   

    如何判断用户名已被注册   以及如何限制用户用中文注册在注册的时候,当注册信息传到action后先判断它在数据库中是否存在,
    思路就是取出数据库中的用户名,与当前注册的比较,或以当前的注册信息为条件
    看有没有返回结果。限制中文注册,可用正规表达式,进行限制。
      

  3.   

    1,我在做注册页面时    在JSP页面   用中文注册用户名  数据没入库 却显示注册成功 结果不能登陆;用数字或字母注册没问题 
    是你没有处理编码问题 解决方法 http://blog.csdn.net/caoyinghui1986/archive/2008/03/25/2216198.aspx2,参考2楼.
      

  4.   

    楼上的这种做法不错可以验证和限制是否用中文注册
    1,判断已注册 
       根据用户名查询数据库,看是否已存在; 
    2,中文判断 
      /*** 检查是否包含汉字 ***/  
    String.prototype.isInChinese = function() {  
    return (this.length != this.replace(/[^\x00-\xff]/g,"**").length);  
    } 用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 
    但是如是中文注册不能登陆的话那说明当前的jsp页面不接受中文的参数
    这个问题也可以解决!这样的话不管用什么方式注册都可以登陆了
    写一个过滤器 解决中文乱码!
      

  5.   

    把你的新增方法帖出来看看,
    关于用户名是否存在的问题,你可以用ajax技术,DWR挺好用,如果用楼上的同仁说,输入用户名,密码提交到后台处理,那是不科学的,后台的任务量是不是太大了