有没有一种方法可以在不使用物理url链接的情况下将servlet链接到JSP。所以我希望servlet运行,然后servlet将我带到JSP。任何想法。
发布于 2012-03-29 12:30:52
是的,您可以在servlet中添加html代码,然后将重定向发送到JSP页面。
发布于 2012-03-30 08:47:49
只需调用servlet的URL而不是JSP的URL,并在servlet的doGet()方法中执行预处理工作。
例如,一个servlet,它在JSP呈现产品之前加载产品列表:
@WebServlet("/products")
public class ProductServlet extends HttpServlet {
@EJB
private ProductService productService;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Preprocess request: load list of products for display in JSP.
List<Product> products = productService.list();
request.setAttribute("products", products);
request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
}
}其中JSP如下所示:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/format" prefix="fmt" %>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Our Products</title>
</head>
<body>
<h1>Products</h1>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Description</th>
<th>Price</th>
</tr>
<c:forEach items="${products}" var="product">
<tr>
<td>${product.id}</td>
<td><c:out value="${product.name}" /></td>
<td><c:out value="${product.description}" /></td>
<td><fmt:formatNumber value="${product.price}" type="currency" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>如果您直接转到http://localhost:8080/contextname/products,那么servlet的doGet()将被调用,产品将从DB加载并存储在请求作用域中,控制权将被转发给JSP,后者反过来以一些漂亮的HTML标记显示结果。
另请参阅:
发布于 2012-03-29 12:26:58
是的,使用框架。Servlet和JPS本身就像水和石头--你可以用它们来修路,但你不能要求它们单独去做。你必须流汗,或者得到一些框架来为你做这件事;)
如果您熟悉http://www.playframework.org/,我建议您使用Java语言(1.2.4...2.0是更少的Javish,更像Scalish
https://stackoverflow.com/questions/9919018
复制相似问题