我有以下項目:用java編寫的後端;我的Main類在日誌文件上創建一個偵聽器,在日誌被修改時檢索一些信息,並創建一個名爲「Candidate」的對象,並通過POST方法將其某些屬性發送給Servlet。一切工作到這裏,我從Servlet獲得200響應代碼。在POST後HTTP瀏覽器動態更新jsp頁面請求
然後,我在一個index.jsp文件中創建了一個前端(帶有bootstrap,看起來不錯),它由靜態部分(背景,消息,標識等)和動態部分組成每次更新日誌文件時都要進行更新。中的index.jsp的簡化版本可以在下面找到,其中的firstName是應該由POST請求到達數據的例子:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!-- If IE use the latest rendering engine -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Set the page to the width of the device and set the zoon level -->
<meta name="viewport" content="width = device-width, initial-scale = 1">
<title>User Page</title>
<style>
@import url('bootstrap/css/bootstrap.css');
</style>
<script type=」text/javascript」 src=」bootstrap/js/bootstrap.min.js」></script>
</head>
<body style="background-image:url(images/xxxx.jpg); background-size:cover; " >
<% String firstName = (String) request.getParameter("firstName"); %>
<div class="container">
<div class="page-header">
<h1 style="color:white">Hello
<%if(firstName != null){%>
<%=firstName %>
<%}%>
Welcome to this new page.</h1>
</div>
<img src="images/xx.png" style="width:35%;height:35%; padding-left: 10%; padding-top:10%"/>
</div>
</body>
</html>
我的終極目標是,用戶只要看到指數.jsp頁面,每次修改日誌時都會使用「新候選」中的數據更新其某些內容。
要運行我的應用程序,我有幾個運行實例。我運行Main類,最重要的是,我在服務器上運行index.jsp和MyServlet。這是正確的方式來運行它嗎?
因爲當我這樣做,然後我修改日誌,主類控制檯打印一切,顯示POST請求已發送(我試圖發送請求到Servlet或直接發送到jsp文件)但是我的index.jsp沒有收到請求(或者至少它不會在eclipse中打開的瀏覽器中顯示它),即使在刷新頁面之後。
但是,當我手動修改瀏覽器中的url以將url查詢參數與?firstName=XXXX
一起添加並刷新時,該做什麼工作,然後該消息就會包含在index.jsp頁面中。我如何確保通過後端發送的POST請求動態修改了我的index.jsp頁面?
最後一個注意事項:當日志文件被修改時,控制檯打印System.out.println並顯示相應的名字,如下面的doGet方法所示,這就是我假定一切都正常工作的方式。
下面是servlet代碼:
package com.xyz.xxxxx;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class MyServlet
*/
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.setIntHeader("Refresh", 5);
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
String firstName = request.getParameter("firstName");
System.out.println("testing get: first name : " + firstName);
// forward request to jsp page
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
和文件組織here。
謝謝你的幫助!
什麼框架你熟悉或者有一些技巧?很難把ajaxify prpoject沒有,原生jsp –
沒有。但是我可以學習,如果你能指出我究竟可以使用什麼框架,爲什麼:-) – goToSpace
我使用Wicket幾年,但這遠離JSP,告訴真正的JSP沒有任何東西。幾乎沒有與JSP兼容的情況,或者在他的演示級別使用JSP。 –