最近写了一个用户验证密码的程序,其功能如下:
输入用户名和密码,然后提交,只有在密码位数大于8位切有数字的时候,才输出Thank you  Your password meets the security policy  否则输出Sorry  Your password does not meet the security policy  可是我的不知道怎么了,两个竟然同时输出了!各位大虾帮帮忙啊!谢啦!login.html文件如下:
<html>
<head><title>A Siple Login Page</title></head>
<body>
<p>Please Login:
<form action=login.jsp method=post>
<p>User Name:<input type=text name=usernameField>
<p>Password:<input type=text name=passwordField>
<p><input type=SUBMIT value=Submit>
</form>
</body>
</html>
login.jsp文件如下:
<html>
<head>
<title>A Simple Jsp That Verifies Password Policy</title>
</head>
<body>
<%! final static int MIN_PSWD_LEN=8;
static boolean verifyPasswordLength(String password){
if(password.length()<MIN_PSWD_LEN)return false;
return true;
}static boolean verifyPasswordHasDigit(String password){
for(int i=0;i<password.length();i++)
if(Character.isDigit(password.charAt(i))) return true;
return false;
}static boolean verifyPasswordPolicy(String password){
if(verifyPasswordLength(password)&&verifyPasswordHasDigit(password))
return true;
else 
return false;
}
%><%String password=request.getParameter(passwordField);
if(verifyPasswordPolicy(password)){%>
<p>Thank you
<p>Your password meets the security policy
<%}else{%>
<p>Sorry
<p>Your password does not meet the security policy
<p><a href="login.html">Please Try Again</a>
<%}%>
</body>
</html>

解决方案 »

  1.   

    改一下login.jsp:
    ……<%  int MIN_PSWD_LEN=8;
    boolean verifyPasswordLength(String password){
    if(password.length()<MIN_PSWD_LEN)return false;
    return true;
    } boolean verifyPasswordHasDigit(String password){
    for(int i=0;i<password.length();i++)
    if(Character.isDigit(password.charAt(i))) return true;////很容易出错
    return false;
    }static boolean verifyPasswordPolicy(String password){
    if(verifyPasswordLength(password)&&verifyPasswordHasDigit(password))
    return true;
    else  
    return false;
    }
    %><%String password=request.getParameter(passwordField);
    if(verifyPasswordPolicy(password)){%>
    <p>Thank you<%}else{%>
    <p>Sorry<%}%>
    应该没问题了   你再试试  不是大问题
      

  2.   

    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 15 in the jsp file: /login.jsp
    Syntax error, insert "}" to complete Block
    12: boolean verifyPasswordHasDigit(String password){
    13: for(int i=0;i<password.length();i++){
    14: if(Character.isDigit(password.charAt(i))) return true;
    15: else return false;
    16: }
    17: 
    18: boolean verifyPasswordPolicy(String password){
      

  3.   

    你用javascript写啊,判断它的长度是否在范围之内,还有就是你的java代码最好不要在jsp里面写,养成良好的编码习惯!!
      

  4.   

    #6楼
    请问你是怎么试的?我是用Eclipse建立了一个html文件和一个jsp文件,然后双击html文件啊。
      

  5.   

    login.html 输入密码,提交到login.jsp 
    在login.jsp 中看输出提示,我只看到一种情况,没有发现你说的两种情况一起呈现
      

  6.   

    [Quote=引用 8 楼 fatlism 的回复:]
    引用 6 楼 fatlism 的回复:org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  7.   

    servlet-api.jar和tools.jar ,jsper-api.jar
    上面三个jar包是否都配置啦
      

  8.   

    我都加进去了 还是不行 呵呵 是不是我的jdk和jre还有Eclipse版本和你们的不一样?我jdk1.5;jre1.5;Eclipse3。2
      

  9.   

    我直接把login.html改成了login.jsp就好了! 这样可以吗?那可否把所有的html改成jsp呢?
      

  10.   


    我把html文件改为.jsp就好了
      

  11.   

    楼主你的程序不报错吗?
    String password=request.getParameter("passwordField")
    引号加了吗???怀疑是否能执行