【问题标题】:How to get an object of java class from JSP如何从 JSP 中获取 java 类的对象
【发布时间】:2011-02-23 08:40:59
【问题描述】:

我有一个结果jsp页面,它打印java类的字符串变量。 有人可以给我任何想法。

我使用简单的 httpServlet 作为操作类。

Class A 
{  
String name;  
public void setName()
{  
   this.name = callMethod(); // somehow it assigns the value. Nothing to do with problem  
}  
}

Result.jsp

这里需要打印String的当前值

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我假设 servlet 最后将请求转发给 JSP。

    您应该将要在请求中的 JSP 中使用的对象存储为属性。

    在动作类/servlet中:

    request.setAttribute("name", name);
    

    在 JSP 中(使用 JSTL):

    <c:out value="${name}"/> or <c:out value="${requestScope.name}"/>
    

    【讨论】:

    • @JB hww 你在引用 java bean 实例吗?你在 request 中设置,对于每个请求你都在创建一个新实例。
    • @Suresh:您的示例覆盖了 servlet 设置的任何实例。此外,在设计良好的面向 MVC 的 web 应用程序中,jsp:useBean 没有位置。
    • @BalusC 我知道useBean每次都会创建实例,根据JBNzet的代码,他从哪里引用实例?
    • @BalusC:你的意思是说属性名是指A类。
    • @Balusc 我想知道他从哪里获取对象引用(即谁在设置 name 变量?)
    【解决方案2】:

    在顶部的jsp中你需要放置

    <jsp:useBean id= "classAReference" scope= "page" class= "A"  > </jsp:useBean>
    

    在你需要放置的身体里 请不要使用scriplets,我用的例子,需要使用JSTL

     ECHO <jsp:getProperty name="classAReference" property="name"/> 
    
    <c:out value='${pageScope.classAReference.name}'/>
    

    【讨论】:

    • 这将创建一个类 A 的新实例。它不会重用存储名称的 A 实例。此外,jsp:xxx 标记已过时,几乎不再使用,还有 scriptlet。
    猜你喜欢
    • 2016-03-22
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多