2011-09-23 5 views
0

Demo이라는 이름의 클래스가 있고 Javabean이 아니며 메소드가 m1() 인 경우 스크립 트을 사용하지 않고이 메소드를 m1()을 JSP 페이지에서 호출하려고한다고 가정합니다. 어떻게해야합니까?Java 클래스 객체를 만들고 스크립틀릿없이 JSP에서 메서드를 호출하려면 어떻게해야합니까?

+0

를 @ russell 및 balusC, 스크립틀릿에서 묻는 메신저 - <% new Demo(). m1() %> 이제 내 질문은 jsp에서 scriptlet없이 위의 작업을 수행 할 수 있으며 데모가 설정되지 않은 것입니다. 범위가? $ {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.jsp 대신 http://localhost:8080/context/page을 호출하십시오.

0

나는 개인적으로 JSTL 및 표현 언어를 기반으로하는 솔루션을 사용하는 것이 좋습니다 : (

A JSTL primer, Part 1: The expression language

Expression Language

은 "JSP 기술 버전 2.0의 주요 기능은 표현 언어에 대한 지원이다 EL) 표현 언어를 사용하면 JavaBeans 구성 요소에 저장된 응용 프로그램 데이터에 쉽게 액세스 할 수 있습니다. 예를 들어, JSP 표현식 언어를 사용하면 페이지 작성자는 간단한 변수 인 $ {name} 또는 $ {name .foo.bar}에 대한 중첩 된 속성 "

이 대신 형태로 스크립틀릿의 태그를 사용할 수있게됩니다.

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

JSTL은 또한 태그의 사용을 통해 훨씬 더 조건, 반복 등을 수행 할 수 있습니다를

관련 문제