gpt4 book ai didi

java - 如何在Servlet中插入JSP功能?

转载 作者:行者123 更新时间:2023-11-30 05:13:21 25 4
gpt4 key购买 nike

如何使用 Servlet 访问 JSP 的 HTML 使用,而不必将所有面向客户端的页面都称为 *.jsp?
我宁愿这样做,也不愿使用所有的response.write()东西,因为我认为当它都是干净的“HTML”时,它更容易阅读和维护。
这是公平的评估吗?

编辑:我想要的是让 Servlet 将内容输出到屏幕,而不必重定向到 .jsp 文件。
通过这种方式,我可以编写所有 JSP 内容,但是当需要显示它时,用户看到的 URL 页面本质上是“http://blah.com/posts/post-id”,这是 servlet 的地址,而不是“http://blah.com/posts.jsp?pos=post-id” .
但我仍然会在外部 .jsp 中编写所有表示逻辑。

最佳答案

只需将 JSP 隐藏在 /WEB-INF 文件夹中,这样就没有人可以直接访问它,并创建一个将请求转发到此 JSP 文件的 servlet。不要进行重定向,否则您将看到新的 URL 反射(reflect)在地址栏中。例如

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String postId = request.getPathInfo();
// Do your business thing here. Any results can be placed in request scope. E.g.
request.setAttribute("post", post); // post is a bean containing information you'd like to display in JSP.
// Then forward request to JSP file.
request.getRequestDispatcher("/WEB-INF/posts.jsp").forward(request, response);
}

将此 servlet 映射到 /posts/*url-pattern 上。

/WEB-INF/posts.jsp中,使用标签库来控制页面流,并使用EL来访问数据。例如

<h2>${post.title}</h2>
<p><fmt:formatDate value="${post.date}" type="date" /> - ${post.message}</p>

最后只需通过http://example.com/posts/postid调用servlet即可。 /postid 部分将由 HttpServletRequest#getPathInfo() 提供。您需要自己解析该值并用它来做业务。

关于java - 如何在Servlet中插入JSP功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com