2014-02-24 225 views
1

我有一個關於servlets和jsp的問題。從Servlet發送一個變量到JSP

的Servlet:

public class Servlet extends javax.servlet.http.HttpServlet { 

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { 
     Integer i = new Integer(15); 
     request.setAttribute("var", i); 
     RequestDispatcher Dispatcher = getServletContext().getRequestDispatcher("/index.jsp"); 
     Dispatcher.forward(request, response); 
    } 

JSP頁面:

<html> 
    <head> 
    <title></title> 
    </head> 
    <body> 
     <form id="id" method="get" action="servlet"> 
      <%= (request.getAttribute("var")) %> 
     </form> 
    </body> 
</html> 

因此,我希望看到15,但我看空。爲什麼會發生?

+0

固定它。結果是一樣的:( –

+0

同一個應用程序(WAR,項目...)中包含的servlet和JSP? –

+0

是的,它的想法項目 –

回答

5

請求參數從視圖發送到控制器,請求屬性用於傳遞當前請求中的數據以幫助構建新的響應。所以,你should not use scriplets和訪問請求屬性使用Expression Language

<body> 
    <!-- No need to use a form for this page --> 
    The request attribute: ${var} 
</body> 

請注意,您的當前請求,你應該對你的servlet的GET請求。由於你的servlet的名字是的servlet(我建議你立即改變它),你應該訪問這個URL:http://yourServerName/yourApplicationName/servlet

+0

好的建議所有的。 –

0

使用request.getAttribute( 「VAR」);

+0

我修好了。我仍然看到「null」 –

+0

可能是圍繞括號是問題...現在不能檢查。順便說一句,我寧願Luiggi解決方案;) – AzAh

0

我不知道在servlet但在Struts 2中你需要從JSP發送的數據的getter和setter方法,你試試這個:

public class Servlet extends javax.servlet.http.HttpServlet 
{ 
    private Integer i; 
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { 
     i = new Integer(15); 
     request.setAttribute("var", i); 
     RequestDispatcher Dispatcher = getServletContext().getRequestDispatcher("/index.jsp"); 
     Dispatcher.forward(request, response); 
    } 

    public Integer getI() 
    { 
    return i; 
    } 
    public void setI(Integer i) 
    { 
    this.i = i; 
    } 

}//also lacked this