如何在jsp页面加载时调用servlet?

时间:2012-05-02 12:48:01

标签: java jsp servlets

我有以下servlet。我想在jsp页面加载时调用servlet。我怎么能这样做?

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 个答案:

答案 0 :(得分:8)

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

首先将JSP文件放在/WEB-INF文件夹中,以便最终用户永远不会“无意中”通过直接在浏览器地址栏中输入其URL而不调用servlet来打开它。然后相应地更改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

另见:

答案 1 :(得分:2)

<jsp:include page="/HelloWorld"/>

答案 2 :(得分:0)

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

或在加载时对servlet进行ajax调用,并使用javascript

呈现响应

答案 3 :(得分:0)

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

response.sendRedirect(request.getContextPath()+"/SomeServlet");