2012-06-28 59 views
0

我在JSP頁面中有一個HTML表單,並在我有一個JavaScript驗證。用戶必須輸入一個字段:名稱或編號或年份,而java文件將按名稱或編號或年份在數據庫中搜索學生。未填寫字段時的JavaScript警報,如果填充了一個字段,則執行操作在JSP中處理表單元素(s)

<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中查看哪些學生在該年份,並顯示所有學生的數據(do在一個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(名稱)從窗體接收參數名稱並在數據庫中進行搜索。

+0

可以發佈您在「FoundStudent.jsp」中嘗試了哪些內容,並且在JSP中編寫JAVA代碼並不是一個好習慣。 JSP只能用於表示層 –

回答

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

是這樣工作的。