2012-08-27 43 views
2

我是JSP和Servlet的新手。我在接下來的任務中需要你的建議。 我有一個jsp頁面,其中有一個html表單,它接受用戶的一些信息。如何使用從servlet派發的數據填充jsp中的html表單?

JSP頁面 info.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<% 
    if(request.getAttribute("reply")!=null){ 
     out.println(request.getAttribute("reply")); 
    } 
%> 

<form action="actionservlet" method="post" name="myform"> 
user Name:<input name="username" type="text" size="10" /><br /> 
First Name:<input name="username" type="text" size="10" /><br /> 
Last Name:<input name="username" type="text" size="10" /><br /> 
Email id:<input name="username" type="text" size="10" /><br /> 
<input name="submit" type="submit" value="Submit" /> 
<input name="Reset" type="reset" value="Reset" /> 

</form> 
</body> 
</html> 

由於這個客戶端進入信息,並在提交表單中的數據被設置爲其中的ActionServlet檢查用戶輸入的用戶名 是是否已經存在於數據庫中的形式。如果用戶名已經存在,那麼它會將數據發送回調用的jsp,並帶有一個額外的屬性「回覆」,並將其作爲 適當的消息。即如果輸入的用戶名已經存在於數據庫中或「用戶信息保存成功!」,則「用戶已經存在」。如果數據保存成功。

我想做這樣的事情每當用戶輸入的用戶名和表單提交,然後在這種情況下,發送回jsp 的所有數據應該被填充到它們各自的文本框中。因此,該用戶只能輸入其他用戶名並再次提交此表單。 如何實現上述任務。

我正在考慮爲每個文本框的值屬性添加jsp scriplet並檢查是否重播消息。如果回覆消息是關於 重複的用戶名,那麼它應該將該值賦值給value屬性,否則值屬性將保持爲空。但我認爲這個解決方案並不是最優的,因爲隨着字段數量的增加,這種解決方案會變得乏味。而且我也認爲由此產生了一些冗餘代碼。 所以我想問問專家是否有其他方法來做同樣的事情。我只想在錯誤或重複消息到達時填寫表格,而不是在成功消息到達時填寫 。

謝謝!

回答

5

在JSP中使用Java代碼是一種不好的做法,Scriptlets已經過時,您應該避免使用它。

JSP 2.0表達式語言是解決方案。下載jstl.jar並將其添加到您的類路徑中。

JSP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<div><b>${reply}</b></div> 
<form action="actionservlet" method="post" name="myform"> 
user Name:<input name="username" type="text" size="10" /><br /> 
First Name:<input name="firstName" type="text" size="10" value=${firstName}/><br /> 
Last Name:<input name="lastName" type="text" size="10" value=${lastName}/><br /> 
Email id:<input name="email" type="text" size="10" value=${email}/><br /> 
<input name="submit" type="submit" value="Submit" /> 
<input name="Reset" type="reset" value="Reset" /> 
</form> 

獲取參數在Servlet中。執行您想要執行的操作/任務。 在您的Servlet中設置請求屬性。將頁面轉發到JSP。

Servlet的

String firstName = request.getParameter("firstName"); 
// and so on get other form parameters.. 
// perform your opeations 

request.setAttribute("reply", "User Already Exists"); // Just an example 
request.setAttribute("firstName", firstName); 
// set other form parameters.. 

RequestDispatcher dispatcher = 
request.getRequestDispatcher("/el/scoped-vars.jsp"); 
dispatcher.forward(request, response); 

更多關於這個link如果表達式語言不工作檢查。

閱讀基本表達語言:http://pdf.coreservlets.com/JSP-EL.pdf

+0

謝謝!朋友爲你的解決方案看起來很awsome!我有一個查詢,我的應用程序可能會部署在互聯網上,或者可能只在局域網上,這是隻在辦公室局域網。服務器沒有連接到互聯網。因此,查詢是在您的解決方案中添加了<%@ taglib prefix =「c」uri =「http://java.sun」行。com/jsp/jstl/core「%>在這個jsp頁面的開頭。這行包含了一些在web上的url。那麼如何從jsp頁面中刪除這個web的依賴呢? –

+0

呃,taglib的URI不能這樣工作= ) – BalusC

+0

@BalusC謝謝你的回覆,但我不明白你到底想說什麼,請你詳細說明一下。 –

相關問題