在 jsp 中执行对象方法
Execute object method in jsp
我想从 jsp 中的对象调用方法。
我有一个将对象传递给 jsp 页面的 servlet。在此页面上,我想执行 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);
}
MyClass
public class MyClass {
public String getHtml() {
return "<p>Hello World</p>";
}
}
你可以这样做:
<div>${myObject.getHtml()}</div>
因为它是 属性 并且带有 get 前缀,您也可以这样做:
<div>${myObject.html}</div>
或者用这种方式转义 HTML 个字符以避免跨站点脚本:
<div><c:out value="${myObject.hHtml}"/></div>
所有这些方法都假设这些方法 return 是一个字符串。如果你需要一段动态 HTML 就可以了。如果您在 JSP 中执行某些业务逻辑,这将被视为潜在的不良做法。尝试在控制器或服务中放置尽可能多的逻辑,并将结果预处理为属性或使用 jsp 标记。在某些时候,jsp 的 html 需要更改,否则您将使用 html 代替。
我想从 jsp 中的对象调用方法。
我有一个将对象传递给 jsp 页面的 servlet。在此页面上,我想执行 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);
}
MyClass
public class MyClass {
public String getHtml() {
return "<p>Hello World</p>";
}
}
你可以这样做:
<div>${myObject.getHtml()}</div>
因为它是 属性 并且带有 get 前缀,您也可以这样做:
<div>${myObject.html}</div>
或者用这种方式转义 HTML 个字符以避免跨站点脚本:
<div><c:out value="${myObject.hHtml}"/></div>
所有这些方法都假设这些方法 return 是一个字符串。如果你需要一段动态 HTML 就可以了。如果您在 JSP 中执行某些业务逻辑,这将被视为潜在的不良做法。尝试在控制器或服务中放置尽可能多的逻辑,并将结果预处理为属性或使用 jsp 标记。在某些时候,jsp 的 html 需要更改,否则您将使用 html 代替。