我在JSP页面中有一个HTML表单,并且我有一个JavaScript验证。用户必须输入一个字段:name或id或year,java文件将按名称或id或年份在数据库中搜索学生。当没有填写字段时,JavaScript会发出警报,如果填写了一个字段,则会执行操作。
<html>
<head>
<title>Student to search into database</title>
<script language="javascript">
function validate2(objForm){
int k = 0;
if(objForm.name.value.length==0){
objForm.name.focus();
k++;
}
if(objForm.year.value.length==0){
objForm.year.focus();
k++;
}
if(objForm.id.value.length==0){
objForm.year.focus();
k++;
}
if(k == 0){
return false;
}
return true;
}
</script>
</head>
<body bgcolor=#ADD8E6><center>
<form action="FoundStudents.jsp" method="post" name="entry2" onSubmit="validate2(this)">
<input type="hidden" value="list" name="seek_stud">
............................................... ............................................
问题是我想处理我在FoundStudents.jsp中收到的参数:如果我得到年份,我会查看DB当年哪些学生并显示所有学生的数据(在java文件中执行此操作)。我怎么能在FoundStudents.Jsp中这样做而不再检查哪个字段被填充(我在JavaScript中从 SearchStudent.jsp 完成了这个)。我的意思是FoundStudents.jsp在java文件中调用一个方法来搜索和显示。
我现在尝试使用输入隐藏,但这适用于更多表单。我只有1个。
FoundStudent.jsp
<%@page import="stud.diploma.students.StudentsManager"%>
<%@page import="stud.diploma.students.Student"%>
<%@page import="java.util.ArrayList"%>
<%@page import="stud.diploma.database.ConnectionsManager"%>
<%@ page language="java" import="java.sql.*, java.lang.*" %>
<%
Student search = null;
if(request.getParameter("seek_stud") != null){
//reading params from the SearchStudent form
String name = request.getParameter("name");
String year_prime = request.getParameter("year");
int year, id;
try{
year = Integer.parseInt(year_prime);
}catch(Exception e1){
year = 0;
}
String id_prime = request.getParameter("id");
try{
id = Integer.parseInt("id");
}catch(Exception e2){
id = 0;
}
if(name.length() != 0){
search = StudentsManager.getInstance().studByName(name);
}
if(year > 0){
search = StudentsManager.getInstance().studByYear(year);
}
if(id > 0){
search = StudentsManager.getInstance().studById(id);
}
if(search != null){
%>
<html>
<body bgcolor=#4AA02C>
<center>
<h2>Student's data</h2>
<table border="1" cellspacing="1" cellpadding="8" bgcolor= #EBDDE2>
<tr>
<td bgcolor= #FF9966><b>ID</b></td>
<td bgcolor= #FF9966><b>Name</b></td>
<td bgcolor= #FF9966><b>Year</b></td>
</tr>
<tr>
<td><%= search.getId()%></td>
<td><%= search.getName()%></td>
<td><%= search.getYear()%></td>
</tr>
</table>
</center>
</body>
</html>
<%}else{%>
<%
String redirectURL = "MainMenu.html";
response.sendRedirect(redirectURL);
%>
<%}%>
<%}%>
此 FoundStudent.jsp 适用于多种形式(使用隐藏输入)的版本。 (javascript测试只是有点不同,我输入的内容是我开头的内容)
按姓名和年份搜索。没有按ID搜索(我在这里有例外<td><%= search.getId()%></td>
我还在试图看看如何处理它.ID是一个AUTO_INCREMENT PRIMARY KEY)
以下行:search = StudentsManager.getInstance().studByName(name);
搜索是学生类型对象。 (对象学生在java文件中创建)
StudentsManager 是一个java类,它接收来自JSP的方法调用。 getInstance()创建StudentsManager的实例。方法 studByName(name)从表单接收参数 name ,并在数据库中搜索。
答案 0 :(得分:0)
所以我将(java)脚本更改为:
<script language="javascript">
function validateSea(){
if(document.entry2.name.value != ''){
return true;
}
else
if(document.entry2.year.value != ''){
return true;
}
alert('Please fill one field.');
return false;
}
</script>
</head>
是1表格。我不确定我是否做了正确的事情,但在FoundStudents.jsp中,我收到表单的参数,我测试:
if((request.getParameter("year") != null)||(request.getParameter("name") != null)){
//reading params from the SearchStudent form
................}
它以这种方式工作。