0

我有一个search.jsp可以在其中输入数字以在数据库表中查找数据的方法。我想将找到的数据作为参数传递给另一个.jsp,但前提是单击提交按钮并且仅当在表或数据库中找到数据时。这是我的代码,但它不能正常工作。

<script>
    var validation = new Boolean();

    function valid() {
        if(validation == false)
            return false;
        else {
            return true;
        }
    }
</script>

<form action="change.jsp" onsubmit="return valid();" >
    <br> <input type="text" name="searchAlbumNo"> AlbumNo </input>
    <br> <input type="submit" value="Search" name="clicked"> <br>   
</form>

if(request.getParameter("clicked") == null ||  !(request.getParameter("clicked").equals("Search")))  {
    System.out.println(request.getParameter("clicked"));
            %< <script> validation = false </script> <%
    } else {
        //... java code
        //... and if data found
        <script> validation = true </script>
    }

现在验证确实有效,但只有一次,Java 代码永远不会被访问或执行。我怎么解决这个问题?

4

2 回答 2

0

我认为您需要学习并首先了解什么是 java/jsp(在服务器上运行);什么是 javascript(在您的浏览器上运行),它们如何交谈(寻找一个简单的 AJAX 示例,简单的表单)。您将 Javascript 和 Jsp 代码混合在一起,就像发生在同一个机器进程中一样。他们不。jsp在app server,javascript在浏览器

您需要将页面从 search.jsp 的 html 提交回它 self('search.jsp')

如果搜索字段为空,则再次显示相同的页面(当用户第一次请求该页面时会发生什么)。

客户端验证代码必须在 javascript 中 - 可能测试该字段是否为空。但你不能依赖这个——它发生在客户端上,可以关闭或操纵。

在服务器上测试输入后执行搜索/处理 sql 注入等。然后如果您需要转到另一个页面,请执行发送重定向(需要确保在此之前没有其他输出发送到客户端 - 甚至不是新的行或空格)

你真的应该首先阅读一本初学者书籍和网络文章。

于 2013-06-16T09:03:05.613 回答
0

上面代码的问题是没有将表单提交到服务器以在服务器上使用数据库值执行验证。要解决此问题,您应该将 action 属性更改为search.jsp并让 javascript 执行提交。当再次加载同一页面时,您将进行数据库验证,如果一切正常,则只需转发到另一个页面change.jsp

} else {
  //... java code
  //... and if data found
  <jsp:forward page="change.jsp"/>
}

要使用 javascript 在客户端执行验证,您应该稍微更改一下函数。

<script>
  function valid(form) {
    if (trim(form.searchAlbumNo.value).length == 0) {
      alert('Please enter a searchAlbumNo');
      form.searchAlbumNo.focus(); 
      form.searchAlbumNo.select(); 
      return false;
    } else {
      return true;
    }
  }
</script>

这可以防止提交空字段。

<form action="search.jsp" onsubmit="return valid(this);" >
  <br> <input type="text" name="searchAlbumNo"> AlbumNo </input>
  <br> <input type="submit" value="Search" name="clicked"> <br>   
</form>
于 2013-06-16T10:36:21.943 回答