如何在Java servlet中生成HTML響應?在Java Servlet中生成HTML響應
回答
你需要有一個doGet方法爲:
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hola</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("</body>");
out.println("</html>");
}
你可以看到this鏈接,一個簡單的Hello World servlet的
您通常將請求轉發給JSP顯示。 JSP是一種視圖技術,它提供了一個用於編寫普通香草HTML/CSS/JS的模板,並提供了在taglibs和EL幫助下與後端Java代碼/變量進行交互的能力。您可以使用像JSTL這樣的taglib來控制頁面流。您可以將任何後端數據設置爲任何請求,會話或應用程序範圍中的屬性,並在JSP中使用EL(${}
)來訪問/顯示它們。
開球例如:
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String message = "Hello World";
request.setAttribute("message", message); // This will be available as ${message}
request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
}
}
而且/WEB-INF/hello.jsp
樣子:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2370960</title>
</head>
<body>
<p>Message: ${message}</p>
</body>
</html>
當打開http://localhost:8080/contextpath/hello這將顯示
Message: Hello World在瀏覽器
。
這使Java代碼免於HTML雜亂並大大提高了可維護性。要通過servlet學習和實踐更多,請繼續閱讀下面的鏈接。
- Our Servlets wiki page
- How do servlets work? Instantiation, sessions, shared variables and multithreading
- doGet and doPost in Servlets
- Calling a servlet from JSP file on page load
- How to transfer data from JSP to servlet when submitting HTML form
- Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern
- How to use Servlets and Ajax?
- Servlet returns "HTTP Status 404 The requested resource (/servlet) is not available"
也瀏覽the "Frequent" tab of all questions tagged [servlets]找到常見問題。
這仍然是一個有效的方法嗎?我總是聽到我們的首席架構師說不使用JSP,但是我問自己應該如何創建所有的HTML?以編程方式逐個創建每個元素?這可能需要永遠。 – Timo 2014-08-04 08:24:12
@Timo:或者你誤解了你的架構師,或者你的架構師需要閱讀http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files,http:// stackoverflow。 com/questions/2095397/jsf-servlet-and-jsp和http://stackoverflow.com/tags/servlets/info之間的區別是什麼如果仍然不確定,請解僱自己並尋找另一個項目。 – BalusC 2014-08-04 08:26:40
這....這應該被標記爲最佳答案! – 2016-10-30 08:16:17
- 1. 生成HTML用的Java servlet
- 2. 在java中生成SAML響應/斷言
- 3. 在java servlet中創建Json響應
- 4. Java servlet對JavaScript的響應
- 5. 響應文本ajax中的java servlet
- 6. 在servlet中生成JFreeChart
- 7. Servlet的響應
- 8. 在java + jsoup中的html響應
- 9. 在tomcat中調用servlet中的方法生成HTML
- 10. 在Ruby中生成HTTP響應
- 11. Java Servlet和HTTP響應對象
- 12. Java servlet沒有響應表單動作
- 13. java servlet:從BLOB生成zip文件
- 14. 從HTML表單調用servlet的,但沒有從servlet響應
- 15. 限制servlet響應
- 16. CSS響應HTML形成
- 17. 暫停Servlet響應
- 18. 無法從servlet Java在Ajax中記錄Json響應?
- 19. HTML解析器響應 - Java
- 20. 如何在javascript中獲取servlet響應?
- 21. 的Java生成HTML頁面
- 22. 更改默認Servlet響應
- 23. 代碼生成:在Excel中生成HTML
- 24. 在servlet中動態生成PDF文件?
- 25. 在生成SOAP Web服務響應後運行Java代碼
- 26. 如何區分javascript中的servlet響應?
- 27. servlet中的非http請求和響應
- 28. Java中更好的Html生成器
- 29. Ajax如何在生成響應時獲得多個響應
- 30. servlet響應中的錯誤getOutputStream()
不建議用這種方式從servlet生成HTML。這是一個1998年的老式成語。更好的解決方案是使用JSP。 – duffymo 2010-03-03 12:11:37
或者使用一些像dojo,GWT等框架/工具,並保持客戶端的html與服務器端代碼完全分離。 – saugata 2010-03-03 12:40:21
@duffymo:但有時,在某些場合,我想從Servlet生成正在進行的html響應。不是每個人都適合MVC。 – 2017-09-28 04:07:13