【问题标题】:Scriplet not validating correctlyScriptlet 未正确验证
【发布时间】:2020-08-31 09:01:47
【问题描述】:

我想做一个条件来检查保存在 txt 文件中的会话 ID 是否与作为 URL 参数传递的会话 ID 相同。如果它们相同,则将不同的值写入文件并继续 JSP 页面显示,否则重定向到 name_login.jsp 页面。然而,我的代码似乎总是重定向,即使我验证了这两个值是相同的。

<%

    String txtFilePath = "C:/oc/tomcat/webapps/foo.txt";
    //String txtFilePath2 = "C:/oc/tomcat/webapps/foo2.txt";
    String reset_access="ccsae";
    BufferedWriter writer = new BufferedWriter(new FileWriter(txtFilePath));
    BufferedReader reader = new BufferedReader(new FileReader(txtFilePath));
    StringBuilder sb = new StringBuilder();
    String line;

    while((line = reader.readLine())!= null){
        sb.append(line+"\n");
    }
    String access_status= sb.toString(); 
    String url_status= (String)request.getParameter("session");

    if (access_status!= url_status){

        String redirectURL = "https://url/www/name_login.php";
                    response.sendRedirect(redirectURL);
    }

    writer.write(reset_access);     
    writer.close();



%> 

任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: java validation jsp


    【解决方案1】:

    以下代码工作正常。我不得不将将重置代码写入文件的部分分开。仍然不知道为什么,它是这样工作的,但它确实有效。

    <%
       String txtFilePath = "C:/oc/tomcat/webapps/foo.txt";
        String txtFilePath2 = "C:/oc/tomcat/webapps/foo2.txt";
        String reset_access="ccsae";
    
        BufferedReader reader = new BufferedReader(new FileReader(txtFilePath));
        StringBuilder sb = new StringBuilder();
        String line;
    
        while((line = reader.readLine())!= null){
            sb.append(line+"\n");
            //sb.append(line);
        }
        String access_status= sb.toString().trim(); 
        String url_status= request.getParameter("session").toString();
        if (access_status =="" || access_status.isEmpty()){
            access_status="not valid";
        }
    
        if (!access_status.equals(url_status)){
    
            String redirectURL = "https://url/www/name_login.php";
                        response.sendRedirect(redirectURL);
        }
    
    
    
    
    %>
    <%
        BufferedWriter writer = new BufferedWriter(new FileWriter(txtFilePath));
    
        writer.write(reset_access)
    
        writer.close();
    
    %>
    

    【讨论】:

      【解决方案2】:

      试试这个。

      这是另一种检查字符串是否相等的方法:

      if(access_status.compareTo(url_status)!=0) {
          String redirectURL = "https://url/www/name_login.php";
          response.sendRedirect(redirectURL);
         }
      

      【讨论】:

        【解决方案3】:

        使用 String.equals() 方法进行字符串比较,像这样

        if (!access_status.equals(url_status)){
        .....your code here
        }
        

        【讨论】:

        • 当它应该显示页面的其余部分时它仍在重定向。不知道为什么。
        • 1-尝试记录两个变量的内容以检查它们是否相似。 2- 在比较之前修剪两个变量,这样额外的空格就不会改变结果
        猜你喜欢
        • 1970-01-01
        • 2014-01-08
        • 2021-08-25
        • 1970-01-01
        • 2016-11-12
        • 1970-01-01
        • 2023-02-04
        • 2016-01-29
        • 1970-01-01
        相关资源
        最近更新 更多