2010-03-13 106 views
0

我有兩個jsp文件和一個java文件。我的約束是如果jspfile1調用java然後java文件調用jspfile2。可能嗎? 如何做到這一點?如何從java調用jsp文件?

+2

沒有冒犯的意思,以現有的答案,但如果你畫出你想要做一點更廣泛,可能與您的設置和一些代碼是什麼,你大概會好起來,好,至少更有用,答案。 – extraneon 2010-03-13 09:03:20

回答

0

jsp文件被轉換爲servlet。你不能直接打電話給他們。

編輯:錯字固定。

+2

但您不應直接訪問自動生成的servlet。您應該使用URL調度請求,並讓容器找出它的位置。 – Thilo 2010-03-13 09:00:21

0

做一個HTTP Web請求。

3

如果 「的Java文件」 你的意思是一個Servlet,你可以使用的RequestDispatcher:

request.getRequestDispatcher("/my.jsp").include(request, response); 

request.getRequestDispatcher("/my.jsp").forward(request, response); 
+0

這的確非常有趣.... – 2010-03-13 09:09:32

+0

這可能是最徹底的方法(可能是J2EE開發人員*想要的方式*它是)。 – 2010-03-13 09:58:12

1

正常的方法是使用一個Servlet。只需延長HttpServlet,並將其映射到web.xml中,並將其與url-pattern對應即可。然後,只需在JSP中有HTML鏈接或表單,以指向與該servlet的url-pattern相匹配的URL。

E.g. page1.jsp

<form action="servletUrl"> 
    <input type"submit"> 
</form> 

<a href="servletUrl">click here</a> 

<form>而不method屬性(默認爲method="get")和<a>鏈接將調用servlet的doGet()方法。

public class MyServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // Do your Java code thing here. 
     String message = "hello"; 
     request.setAttribute("message", message); // Will be available in ${message}. 

     // And then forward the request to a JSP file. 
     request.getRequestDispatcher("page2.jsp").forward(request, response); 
    } 
} 

如果你有<form method="post">,你必須通過doPost方法來替代doGet

地圖這個servlet在web.xml如下:

<servlet> 
    <servlet-name>myServlet</servlet-name> 
    <servlet-class>com.example.MyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>myServlet</servlet-name> 
    <url-pattern>/servletUrl</url-pattern> 
</servlet-mapping> 

,使其通過http://example.com/contextname/servletUrl是可用的。 <form><a> URL必須相對或絕對地指向該URL以調用該servlet。現在

,這個servlet例子已經設置一些「結果」爲名稱爲「消息」請求屬性並將請求轉發到page2.jsp。要在page2.jsp顯示結果只是做訪問${message}

<p>Servlet result was: ${message}</p>