JSPページにHTMLフォームがあり、JavaScript検証があります。ユーザーは、名前、ID、または年の1つのフィールドに入力する必要があります。Javaファイルは、データベース内の学生を名前、ID、または年で検索します。JavaScriptは、フィールドが入力されていない場合にアラートを出し、 1つのフィールドが入力されている場合にアクションを実行します。
<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ファイルに含まれています)
StudentManagerは、JSPからメソッドへの呼び出しを受け取るJavaクラスです。getInstance()は、StudentsManagerのインスタンスを作成します。メソッドstudByName(name)は、フォームからパラメーター名を受け取り、データベースで検索します。