我对JSP不是很熟悉,所以,让我们以这个问题为例:
假设我有一个JSP文件(index.jsp),其中包含以下语句:
<%
MyObject mO = new MyObject();
mO.sayHelloWorld();
%>
并在MyObject.java中:
public class MyObject(){
public void sayHelloWorld(){
//something like getJSPApplicationContext.getOut.println("<p>Hello World</p>");
}
}
有没有一种简单的方法来实现这个目标(没有将JSPApplicationContext传递给我的类?)
也许我做错了什么,无论如何,谢谢你的帮助:)。
答案 0 :(得分:3)
让我借此机会向您介绍MVC (Model View Controller)中的V(观点)。
通常应将视图bean放入控制器的会话中,以将数据放入视图中。您可以将类MyObject
视为视图bean,因为它包含要在视图中显示的信息。在这种情况下,控制器是你的servlet(你做有一个servlet,对吗?)并在其doGet
或doPost
方法中包含以下内容;
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;
}
}
答案 1 :(得分:2)
这不是它的使用方式。
出于你所证明的目的。
您应该包含Servlet
或jsp
或静态HTML
,以便打印Hello World
<jsp:include page="/staticfile/helloworld.html" />
helloworld.html
中的
只是
hello world
或包含servlet
<jsp:include page="/helloworldServlet" />
和HelloWorld Servlet doGet()
out.println("hello world");
另见
答案 2 :(得分:0)
没有将上下文传递给类方法,并且没有将它存储在ThreadLocal变量中(我认为这是一个坏主意),我不知道你怎么能这样做。
如果您的类需要访问JSP上下文,则可能意味着该类应该是JSP片段或自定义JSP标记(<custom:sayHello/>
)。