[英]Pass model from servlet to JSP page
我正在使用servlet將文檔上傳到服務器。 成功上傳后,我需要向用戶顯示其他信息,例如使用哪個ID上傳哪個文檔。 為此,我將ID和文件名放在modelMap中,嘗試在JSP頁面上發送它。
為此,我正在使用此代碼:-
ModelMap model = new ModelMap();
for(FileItem item : files) {
model.put(id, fileName);
}
req.setAttribute("message", model);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/success.do");
dispatcher.forward(req, resp);
在JSP頁面上
<%
if(request.getAttribute("message")!=null){
String value = request.getAttribute("message").toString();
if(value!=null)
{
value = value.substring(1, value.length()-1); //remove curly brackets
String[] keyValuePairs = value.split(","); //split the string to creat key-value pairs
for(String pair : keyValuePairs) //iterate over the pairs
{
String[] entry = pair.split("="); //split the pairs to get key and value
out.println("<font color='red'>"+entry[1].trim()+"</font> indexed with id <font color='red'>"+entry[0].trim()+"</font><br/>");
}
}
System.out.println(request.getAttribute("message"));
}
%>
我的問題是在此場景中,所有事情都在起作用,除了一個。 當我上傳文檔消息時,但我的URL仍然是上傳的servlet URL。 因此,當用戶點擊它(GET請求)時,servlet會拋出一個異常以上傳文件。
如果我用
resp.sendRedirect("../success.do");
然后,我無法在其中傳遞參數。 那么我怎樣才能完成這項任務呢?
我的文件上傳servlet是
mySite/upload/servlet
成功頁面是
mySite/success.do
不能真正發表此評論,因此將其添加為答案。
如果您的主要動機是能夠上傳文件並隱藏servlet網址,那么使用AJAX進行文件上傳又如何呢?
這是示例片段
JSP:
<script type="text/javascript">
function performAjaxSubmit() {
var sampleText = document.getElementById("sampleText").value;
var sampleFile = document.getElementById("sampleFile").files[0];
var formdata = new FormData();
formdata.append("sampleText", sampleText);
formdata.append("sampleFile", sampleFile);
var xhr = new XMLHttpRequest();
xhr.open("POST","/fileUploadTester/FileUploader", true);
xhr.send(formdata);
xhr.onload = function(e) {
if (this.status == 200) {
alert(this.responseText);
}
};
}
這是從這里獲取的http://www.technicaladvices.com/2011/12/10/ajax-file-upload-to-a-java-servlet-in-html5/
當然,有很多使用JSP + JQUERY的示例
在servlet方面,您始終可以使用類似
PrintWriter print = response.getWriter();
print.println("");
打印簡單的輸出
好的,因此您必須通過重定向傳遞任意大量的信息。 一些框架發明了這種用途的閃存 。 在引擎蓋下,它意味着:
優點:它允許您模擬通過重定向的請求屬性的傳遞
注意:在中間的AJAX調用中,它不能很好地工作,因為Flash通常用於下一個請求,但對於重定向,它通常可以正常工作。
可能的實現:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.