7

我有下面的servlet。我想在jsp页面加载时调用 servlet。我怎样才能做到这一点?

小服务程序: SomeServlet.java

<servlet>
  <servlet-name>Hello</servlet-name>
  <servlet-class>SomeServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>Hello</servlet-name>
 <url-pattern>/HelloWorld</url-pattern>
 </servlet-mapping>

如何编写相应的 jsp 以在 jsp 页面加载时调用 servlet。我还需要从 servlet 获取结果并显示在同一个 jsp 中。我可以将结果发送回jsp吗?

谢谢!

4

4 回答 4

9

你应该反过来做。通过其 URL 调用 servlet 并让它呈现 JSP。这也是正常的 MVC 方法(servlet 是控制器,JSP 是视图)。

首先将 JSP 文件放在/WEB-INF文件夹中,这样最终用户永远不会在不调用 servlet 的情况下直接在浏览器地址栏中输入其 URL 来“意外”打开它。然后相应地更改 servlet doGet(),使其将请求转发给 JSP。

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...

    request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
}

打开它

http://localhost:8080/contextname/HelloServlet

请注意,您当然可以将 servlet 映射中的 URL 模式更改为类似的东西,/hello以便您可以使用更具代表性的 URL:

http://localhost:8080/contextname/hello

也可以看看:

于 2012-05-02T13:20:41.953 回答
2
<jsp:include page="/HelloWorld"/>
于 2012-05-02T12:49:58.003 回答
0

在 JSP 页面中,您可以将请求转发到 Servlet

response.sendRedirect(request.getContextPath()+"/SomeServlet");
于 2012-05-02T12:50:56.413 回答
0

调用 servlet 而不是在请求属性中获取结果并将请求转发给 jsp

或在加载时对 servlet 进行 ajax 调用并使用 javascript 呈现响应

于 2012-05-02T12:49:36.887 回答