【问题标题】:Execute object method in jsp在jsp中执行对象方法
【发布时间】:2015-04-21 22:55:21
【问题描述】:

我想在jsp中调用一个对象的方法。

我有一个 servlet,它将一个对象传递给一个 jsp 页面。在此页面上,我想执行 getHtml() 方法。我该如何做到这一点?

Servlet

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    ...
    MyClass myObject = new MyClass();
    response.setAttribute(myObject, "myObject");
    RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
    rd.forward(request, response);
}

我的班级

public class MyClass {
    public String getHtml() {
        return "<p>Hello World</p>";
    }
}

【问题讨论】:

  • 在 index.jsp 中只需通过 (MyClass)request.getAttribute("myObject").getHtml(); 获取它并将其转换为对象 MyClass
  • 一般情况下,您不应从视图层调用方法或逻辑。最好把html放在request中,而不是放在能得到你需要的object中。
  • 这是一个很好的观点。我愿意这样做。但是有一个问题。我有几个http-servlet 类,每个动作一个。如何将创建的对象从一个对象传递到另一个对象?

标签: java jsp servlets


【解决方案1】:

你可以这样做:

<div>${myObject.getHtml()}</div>

因为它是一个属性并且带有 get 前缀,你也可以这样做:

<div>${myObject.html}</div>

或者这种方式来转义 HTML 字符以避免跨站点脚本:

<div><c:out value="${myObject.hHtml}"/></div>

所有这些方法都假定这些方法返回一个字符串。如果你需要一段动态的 HTML 就可以了。如果您在 JSP 中执行一些业务逻辑,这将被视为一种潜在的不良做法。尝试将尽可能多的逻辑放在控制器或服务中,并将结果预处理为属性或使用 jsp 标签。在某些时候,jsp 的 html 需要更改,否则您将使用 html。

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2013-07-02
    相关资源
    最近更新 更多