我有一个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代码。我该如何解决这个问题?
答案 0 :(得分:0)
我认为你需要学习并首先了解什么是java / jsp(在服务器上运行);什么是javascript(在浏览器上运行),他们如何交谈(寻找一个简单的简单AJAX示例,简单的表单)。你混合Javascript和Jsp代码就像在同一个机器进程中发生的那样。他们不。 Jsp在app服务器和浏览器上的javascript
你需要将search.jsp的html页面提交回self('search.jsp')
如果搜索字段为空,则再次显示相同的页面(当用户第一次请求页面时会发生什么情况。)
客户端验证代码必须在javascript中 - 如果字段为空,可能会测试。但你不能依赖于它 - 它发生在客户端,可以关闭或操纵。
在服务器上执行搜索后,测试输入/处理sql注入等。然后,如果你需要转到另一个页面,做一个发送重定向(需要确保在此之前没有其他输出发送到客户端 - 不甚至是一个新的线或空间)
你应该首先通过初学者书籍和网络文章。
答案 1 :(得分:0)
上面代码的问题是没有将表单提交给服务器以在具有数据库值的服务器上执行验证。要解决此问题,您应该将操作属性更改为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>