84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我可以在不使用HTML表单的情况下从JSP文件调用一个servlet吗?
例如,在页面加载期间显示来自数据库的结果在HTML表格中。
您需要根据您的需求使用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。
doGet()
@WebServlet("/products") public class ProductsServlet extends HttpServlet { @EJB private ProductService productService; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List 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" %> ...
请注意,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
productsServlet com.example.ProductsServlet productsServlet /products
一旦通过注释或XML正确注册了servlet,现在您可以通过http://localhost:8080/context/products打开它,其中/context是Web应用程序部署的上下文路径,/products是servlet的URL模式。如果您在其中有任何HTML,则只需将其POST到当前URL,如,并在同一个servlet中添加一个doPost()来执行后处理工作。请继续阅读以下链接以获取更多关于此的具体示例。
/context
/products
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,则只需将其POST到当前URL,如
,并在同一个servlet中添加一个
doPost()
来执行后处理工作。请继续阅读以下链接以获取更多关于此的具体示例。另请参阅