2011-09-23 71 views
0

假设有一个名为Demo的类,它不是一个Javabean,并且有一个方法m1(),我想从我的JSP页面调用此方法m1()而不使用scriptlets。我怎样才能做到这一点?我们如何创建一个Java类对象并在没有scriptlet的JSP中调用它的方法?

+0

@ russell和balusC,即时通讯问我在scriptlet我可以做以下 - <%new Demo()。m1()%> 现在我的问题是我怎么能做到上面的操作没有scriptlet在jsp和演示没有设置任何范围? 对于$ {demo.m1}演示必须处于任何范围内。 –

回答

0

创建一个servlet并在doGet()方法中完成这项工作。

@WebServlet(urlPatterns={"/page"}) 
public class PageServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     new Demo().m1(); 
     request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 
    } 

} 

,或者如果它返回一些对象作为结果,你需要它是可作为EL ${result}

@WebServlet(urlPatterns={"/page"}) 
public class PageServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     Object result = new Demo().m1(); 
     request.setAttribute("result", result); 
     request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 
    } 

} 

(注意:page.jsp隐藏在/WEB-INF文件夹,以防止直接访问,而无需调用首先是小服务程序)

现在调用http://localhost:8080/context/page而不是http://localhost:8080/context/page.jsp

0

我个人建议使用基于JSTL和表达式语言的溶液:

A JSTL primer, Part 1: The expression language

Expression Language

“的JSP技术版本2.0的主要特点是它的表达式语言支持(EL )。一种表达式语言可以轻松访问存储在JavaBeans组件中的应用程序数据,例如,JSP表达式语言允许页面作者使用简单的语法来访问bean,例如$ {name}作为简单变量或$ {name .foo.bar}为一个嵌套属性。 “

这将允许您使用标签,而不是形式小脚本:

<c:out value="${demo.m1}"/> 

JSTL还允许你通过使用标签执行条件,迭代和更多

相关问题