您需要根據您的需求使用RequestDispatcher的forward/include方法來達到相同的效果。
在JSP中,您需要使用以下標籤:
jsp:include:
例如:
<jsp:include page="/HandlerServlet" flush="true">
jsp:forward:
<jsp:forward page="/servlet/ServletCallingJsp" />
請查看進階JSP範例:JSP-Servlet通訊:
http://www.oracle.com/technology/sample_code/tech/java/jsps/ojsp/jspservlet.html
您可以使用servlet的doGet()方法預處理請求並將請求轉送到JSP。然後只需在連結和瀏覽器網址列中指向servlet URL而不是JSP URL。
doGet()
@WebServlet("/products") public class ProductsServlet extends HttpServlet { @EJB private ProductService productService; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Product> products = productService.list(); request.setAttribute("products", products); request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response); } }
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <table> <c:forEach items="${products}" var="product"> <tr> <td>${product.name}</td> <td>${product.description}</td> <td>${product.price}</td> </tr> </c:forEach> </table>
請注意,JSP檔案放在/WEB-INF資料夾中,以防止使用者直接存取它而不呼叫servlet。
/WEB-INF
也請注意,@WebServlet僅適用於Servlet 3.0(Tomcat 7等),請參閱@WebServlet註解與Tomcat 7。如果您無法升級,或者由於某種原因需要使用與Servlet 3.0不相容的web.xml,則需要手動在web.xml中以以下方式註冊servlet,而不是使用註解:
@WebServlet
web.xml
<servlet> <servlet-name>productsServlet</servlet-name> <servlet-class>com.example.ProductsServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>productsServlet</servlet-name> <url-pattern>/products</url-pattern> </servlet-mapping>
一旦透過註解或XML正確註冊了servlet,現在您可以透過http://localhost:8080/context/products開啟它,其中/context是Web應用程式部署的上下文路徑,/products是servlet的URL模式。如果您在其中有任何HTML <form>,則只需將其POST到當前URL,例如<form method="post">,並在同一個servlet中加入一個doPost()來執行後處理工作。請繼續閱讀以下連結以獲取更多關於此的具體範例。
/context
/products
<form>
<form method="post">
doPost()
您需要根據您的需求使用RequestDispatcher的forward/include方法來達到相同的效果。
在JSP中,您需要使用以下標籤:
jsp:include:
例如:
jsp:forward:
例如:
請查看進階JSP範例:JSP-Servlet通訊:
http://www.oracle.com/technology/sample_code/tech/java/jsps/ojsp/jspservlet.html
您可以使用servlet的
doGet()
方法預處理請求並將請求轉送到JSP。然後只需在連結和瀏覽器網址列中指向servlet URL而不是JSP URL。例如:
請注意,JSP檔案放在
/WEB-INF
資料夾中,以防止使用者直接存取它而不呼叫servlet。也請注意,
@WebServlet
僅適用於Servlet 3.0(Tomcat 7等),請參閱@WebServlet註解與Tomcat 7。如果您無法升級,或者由於某種原因需要使用與Servlet 3.0不相容的web.xml
,則需要手動在web.xml
中以以下方式註冊servlet,而不是使用註解:一旦透過註解或XML正確註冊了servlet,現在您可以透過http://localhost:8080/context/products開啟它,其中
/context
是Web應用程式部署的上下文路徑,/products
是servlet的URL模式。如果您在其中有任何HTML<form>
,則只需將其POST到當前URL,例如<form method="post">
,並在同一個servlet中加入一個doPost()
來執行後處理工作。請繼續閱讀以下連結以獲取更多關於此的具體範例。另請參閱