0

我在 JSP 页面中有一个 HTML 表单,并且在我有一个 JavaScript 验证。用户必须输入一个字段:姓名或身份证或年份,Java 文件将按姓名或身份证或年份在数据库中搜索学生。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 中做到这一点而不再次检查哪个字段被填充(我已经在SearchStudent.jsp的 JavaScript 中做到了)。我的意思是 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); 搜索是一个学生类型的对象。(对象 Student 在 java 文件中创建)

StudentsManager是一个 java 类,它从 JSP 接收对其方法的调用。getInstance() 创建一个 StudentManager 的实例。方法studByName(name)从表单中接收参数名称并在数据库中搜索它。

4

1 回答 1

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
................}

它以这种方式工作。

于 2012-07-01T14:09:53.093 回答