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

表单字段长度校验的有关问题

2012-01-29 
表单字段长度校验的问题%@pagecontentType text/htmlcharsetgb2312 language java import java

表单字段长度校验的问题
<%@   page   contentType= "text/html;   charset=gb2312 "   language= "java "   import= "java.sql.* "   errorPage= " "   %>
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN "   "http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 ">
<title> 注册判断 </title>
</head>

<body>

    <%  
        public   boolean   LengthCheck(String   str,int   MinLength,int   MaxLength)
        {
                return((str.length> =MinLength)&&(str.length <=MaxLength));
        }
        String   UserName=request.getParameter( "UserName ");
        String   NickName=request.getParameter( "NickName ");
        String   Sex=request.getParameter( "Sex ");
        String   Password=request.getParameter( "Password ");
        String   PwdConfirm=request.getParameter( "PwdConfirm ");
        String   Question=request.getParameter( "Question ");
        String   Answer=request.getParameter( "Answer ");
        String   Email=request.getParameter( "Email ");
        String   Error=new   String();

    %>
    <%
        boolean   allOk=true;
        String   Number= "0123456789 ";
        for(int   i=0;i <UserName.length();i++)
        {
                char   temp=UserName.charAt(i);
                if(!((temp> = 'a '&&temp <= 'z ')||(temp> = 'A '&&temp <= 'Z ')||(temp== '_ ')||(temp.indexOf(temp)!=-1)))
                Error+= "用户名必须由数字、字母和下划线构成 <br> ";
                allOk=false;
        }

        if(!LengthCheck(UserName,4,20))
        {  
              Error+= "请检查用户名长度 <br> ";
              allOk=false;
        }
        if(NickName.length()==0)
        {
              Error+= "请填写昵称 <br> ";
              NickName= " ";
              allOk=false;
        }
        if(Sex.equals( "男 "))
              sex= "0 ";
        else   if(Sex.equals( "女 "))
              sex= "1 ";
        else  


              sex= "2 ";
        if(Password.length()==0)
        {
              Error+= "请设置密码 <br> ";
              Password= " ";
              allOk=false;
        }
        if(!LengthCheck(Password,6,12))
        {
              Error+= "密码长度应该在6-12位间 <br> ";
              allOk=false;
        }
        if((!LengthCheck(PwdConfirm,6,12))|(!Password.equals(PwdConfirm)))
        {
              Error+= "请重新确认密码 <br> ";
              PwdConfirm= " ";
              allOk=false;
        }
        if(Question.length()==0)
        {
              Error+= "请选择密码提示问题 <br> ";
              Question= " ";
              allOk=false;
        }
        if(Answer.length()==0)
        {
              Error+= "请填写密码问题答案 <br> ";
              Answer= " ";
              allOk=false;
        }
        if(Email.indexOf( '@ ') <=0)
        {
              Error+= "邮件地址填写不正确,请重新填写 <br> ";
              Email= " ";
              allOk=false;
        }
        if(allOk)
        {        
        UserName=(String)session.getAttribute( "UserName ");
        NickName=(String)session.getAttribute( "NickName ");
        Sex=(String)session.getAttribute( "Sex ");
        Password=(String)session.getAttribute( "Password ");
        PwdConfirm=(String)session.getAttribute( "PwdConfirm ");
        Question=(String)session.getAttribute( "Question ");
        Answer=(String)session.getAttribute( "Answer ");
        Email=(String)session.getAttribute( "Email ");
        %>
              <jsp:forward   page= "reg22.jsp "/>
        <%
        }
        else
{         Error=(String)session.getAttribute( "Error ");
        %>
              <jsp:forward   page= "reg_error.jsp "/>
      <%  


}
      %>
</body>
</html>


在Myeclipes下提示
        public   boolean   LengthCheck(String   str,int   MinLength,int   MaxLength)
这行错误   提示,改为;
      if(!((temp> = 'a '&&temp <= 'z ')||(temp> = 'A '&&temp <= 'Z ')||(temp== '_ ')||(temp.indexOf(temp)!=-1)))

indexOf(temp)   提示无法调用indexOf(char)
方法
请高手解决
高分100

[解决办法]
看的让人想自杀,你如果非要在JSP里定义函数,得放在 <%! ..... %> 里面,而用到JSP内置对象的代码如request.getParameter的要放在 <%....%> 里面,否则编译都通不过。剩下的你应该能解决了。不过最要命的是,你做的这些判断都完全可以在客户端用简单的javascript完成,根本没必要提交到服务端。
[解决办法]
同意楼上的说法.完全可以用javascript来做check.
[解决办法]
if(!((temp> = 'a '&&temp <= 'z ')||(temp> = 'A '&&temp <= 'Z ')||(temp== '_ ')||(temp.indexOf(temp)!=-1)))

里面的||(temp.indexOf(temp)!=-1) 干什么的? 去掉!
楼主是不是想这样?

String chars= "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
...
char temp=UserName.charAt(i);
if(-1==chars.indexOf(temp)) Error+= "用户名必须由数字、字母和下划线构成 <br/> ";

[解决办法]
还少了个_
[解决办法]
可户端验证可以被绕过的,服务器验证也是必要的
[解决办法]
晕你这些判断可以用JS来做啊
给你个例子
<script>
function checkareaselect(){
var pw=form.Password.value;
if(pw== " ")
alert( "请输入密码 ")
}
</script>
[解决办法]
这份代码是某本书上给的源代码
我是新人正在学习
但是这本书错误太多了.....
以上这个 已经实现了客户端的验证,但是我还是调不好这一页的服务器端验证
还请高手......快帮找原因
把有问题的那个)||(temp.indexOf(temp)!=-1)去了
还是报500内部服务器错误
[解决办法]
可户端验证可以被绕过的,服务器验证也是必要的

===============================================

客户端的验证是少不了的,这几个完全应该在客户端验证啊!
[解决办法]
if(Sex.equals( "男 "))
sex= "0 ";
else if(Sex.equals( "女 "))
sex= "1 ";
else
sex= "2 ";
sex变量在哪里定义的?

if(allOk)
{
UserName=(String)session.getAttribute( "UserName ");
NickName=(String)session.getAttribute( "NickName ");
Sex=(String)session.getAttribute( "Sex ");
Password=(String)session.getAttribute( "Password ");
PwdConfirm=(String)session.getAttribute( "PwdConfirm ");
Question=(String)session.getAttribute( "Question ");
Answer=(String)session.getAttribute( "Answer ");
Email=(String)session.getAttribute( "Email ");
%>
<jsp:forward page= "reg22.jsp "/>
<%
}
这一段是什么意思?怎么又从session中取参数?

热点排行