2011-01-24 55 views
1

我不是很熟悉JSP裏面,所以,讓我們這個問題的例子:如何獲得JSP應用程序上下文的Java類

假設我有一個JSP文件(的index.jsp),它包含這些語句:

<% 
MyObject mO = new MyObject(); 
mO.sayHelloWorld(); 
%> 

,並在MyObject.java:(?,而沒有經過JSPApplicationContext上我的課)

public class MyObject(){ 
    public void sayHelloWorld(){ 
     //something like getJSPApplicationContext.getOut.println("<p>Hello World</p>"); 
    } 
} 

有沒有達到這個目標的一個簡單的方法

也許我做的事情真的不對,無論如何,謝謝你的幫助:)

回答

3

讓我藉此機會向您介紹MVC (Model View Controller)中的V(查看)。

通常應該將數據放入視圖,方法是將視圖bean放入控制器的會話中。您可以將您的課程MyObject視爲視圖bean,因爲它包含要在視圖中顯示的信息。在這種情況下,控制器是你的servlet(你的有一個servlet,對吧?)並在其doGetdoPost方法中包含以下內容:

MyObject myObject = new MyObject("Hello world"); 
request.setAttribute("myObject", myObject); 

下一步是讓您的JSP顯示來自視圖bean的數據。強烈建議您爲此使用JSTL,而不是通過放入代碼片段.JSTL標記<c:out>可用於在JSP中顯示數據。您的JSP可能包含以下內容;

<p> 
<c:out value="${myObject.message}"/> 
</p> 

這將調用會話對象myObject的'輸出到頁面上的getMessage()方法。

只是爲了完整性,您的MyObject視圖bean可能看起來像這樣;

public class MyObject 
{ 
    String message; 

    public MyObject(String message) 
    { 
    this.message = message; 
    } 

    public String getMessage() 
    { 
    return message; 
    } 
} 
2

這不是它如何使用。

出於您已證明的目的。

你應該包括Servletjsp或靜態HTML只是在helloworld.html

打印Hello World

<jsp:include page="/staticfile/helloworld.html" /> 

只是

hello world

或包括servlet的

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

和HelloWorld的Servlet的doGet()

out.println("hello world");

請參見

+0

其實,我並不想創建一個招呼wordwebapp =) 我試圖建立的accademic目的的小框架,我需要一些基本的信息來建立框架體系。 – ArtoAle 2011-01-24 16:38:14

+0

*確定*,我只是建議標準做法:) – 2011-01-24 16:39:43

0

沒有將上下文傳遞給類方法,也沒有將其存儲在ThreadLocal變量中(我認爲這不是一個好主意),但我不明白怎麼做。

如果您的類需要訪問JSP上下文,則可能意味着該類應該是JSP片段或自定義JSP標記(<custom:sayHello/>)。

相關問題