2011-09-23 72 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還允許你通過使用標籤執行條件,迭代和更多

相關問題