2012-08-16 74 views
1

如何在Java中傳遞JSP隱式對象(請求,響應)。 我想訪問Java代碼中的JSP隱式對象。 請建議如何做到這一點?如何在Java中訪問JSP隱式對象(請求,響應)

我的Java代碼是:

package test.here; 
import java.sql.*; 
import java.util.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import com.ibm.commerce.server.WcsApp; 
import com.ibm.commerce.server.JSPHelper; 

public class SomeBean { 
    String punchOutRes = null; 
    HttpServletResponse response; 
    HttpServletRequest request; 

    public String getPunchOutRes() {   
    response.setContentType("text/xml"); 
    return "testing";  
    } 
} 

這裏的時候,我試圖設置或請求和響應得到任何東西,我得到NUllPointerException

+1

使用爲什麼ü想進入到Java bean的這些對象,反正你已經可以訪問隱含對象在Servlet中。您可以在java bean中編寫業務邏輯並在servlet中訪問該bean。 – 2012-08-16 09:35:55

+0

但我不想在Servlet中訪問。取而代之的是一個普通的java類。 – user1602657 2012-08-16 09:37:15

+1

如果要訪問JSP的隱式對象,可以通過servlet訪問,並將其作爲參數傳遞給普通的java方法。但是我不會建議這種方法,因爲你正在將更大的物體傳遞給小的東西。 – Kalpak 2012-08-16 11:59:30

回答

0

國際海事組織我不認爲有可能將隱式對象直接傳遞給java類,但有一件事你可以做的是將會話和請求對象從servlet傳遞給java類,無論是在某些方法或在java類的構造函數。

另見this question

+0

我在JAVA下面寫的代碼如下: – user1602657 2012-08-16 09:43:32

+0

@ user1602657:哪個代碼? – 2012-08-16 09:45:17

0

您將能夠使用一些servlet類。 例如:

public class ActionServlet extends HttpServlet 
{ 

public ActionServlet() 
{ 
    super(); 
} 

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException 
{ 
    request.setCharacterEncoding("UTF-8");  
    String action = request.getParameter("action");   

    //do smth. with "action" you are able to use your class "SomeBean" 

    response.setContentType("text/plain"); 
    response.setCharacterEncoding("UTF-8"); 
    response.sendRedirect(someUrl);     

} 
} 

必須添加到web.xml中如下:

<servlet> 
    <description></description> 
    <display-name>ActionServlet</display-name> 
    <servlet-name>ActionServlet</servlet-name> 
    <servlet-class>com.your_package.servlet.ActionServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>ActionServlet</servlet-name> 
    <url-pattern>/Action</url-pattern> 
</servlet-mapping> 

「/行動」 是您的網址。

我舉了一個簡單的例子,我沒有考慮GET或POST方法。 另外我會建議使用JSTL。在「視圖」中使用一些腳本是不好的編碼風格:)

但是,最好使用MVC模式(Spring/Struts)。

1

您可以使用<jsp:setProperty和EL表達式將對象傳遞給bean。你必須修改getter和setter方法的bean。

public class SomeBean { 
    String punchOutRes = null; 
    HttpServletResponse response; 
    HttpServletRequest request; 

    public HttpServletResponse getResponse() { 
    return response; 
    } 

    public void setResponse(HttpServletResponse response) { 
    this.response = response; 
    try { 
     response.getWriter().println("Some Output"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

    public HttpServletRequest getRequest() { 
    return request; 
    } 

    public void setRequest(HttpServletRequest request) { 
    this.request = request; 
    } 

    public String getPunchOutRes() { 
    response.setContentType("text/xml"); 
    return "testing"; 
    } 
} 

然後在JSP

<jsp:useBean id="someBean" class="beans.SomeBean" scope="request"/> 
<jsp:setProperty name="someBean" property="request" value="${pageContext.request}"/> 
<jsp:setProperty name="someBean" property="response" value="${pageContext.response}"/> 
相關問題