2010-12-21 46 views

回答

1

See here:

getServletContext().getNamedRequestDispatcher("servletName") 
    .forward(request, response); 

但是我認爲有更好的選擇。例如,將您需要的代碼移到輔助類/實用程序方法中,然後調用它。

當我想起來了,你可能想另一件事:單獨調用一個servlet。爲此你需要:

InputStream is = new URL(urlOfTheServlet).openStream(); 
IOUtils.copy(is, response.getOutputStream()); 

(這是使用Apache的commons-io的輸入流複製到當前請求的輸出流)

3

使用RequestDispatcher實例,它是可以通過HttpServletRequest實例。但是,如果您正在查找由servlet容器持有的單個實例(例如在ServletContext實例中使用getServlet方法),則這是一個完全不同的故事。 servlet規範有目的地棄用了可能允許這種選項的操作。但是,如果你真的在執行另外一個調用servlet的一個,使用RequestDispatcher代替forward方法include方法。

0

使用ServletContext的或當前請求得到的RequestDispatcher,然後用RequestDispatcher的forward()方法或包括()。

可以使用Spring MockHttpServletRequest和MockHttpServletResponse創建新的請求和響應,而不是使用當前請求。

例子:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
RequestDispatcher dispatcher = request.getRequestDispatcher(url); 

MockHttpServletRequest servletRequest = new MockHttpServletRequest(); 
servletRequest.setServerName(request.getServerName()); 
servletRequest.setServerPort(request.getServerPort()); 
servletRequest.setSession(request.getSession()); 
servletRequest.setMethod(HttpMethod.GET.name()); 

servletRequest.setRequestURI(url); 
servletRequest.setParameters(parameters); 

MockHttpServletResponse servletResponse = new MockHttpServletResponse(); 
servletResponse.setCharacterEncoding("UTF-8"); 
// Use include() instead of forward(). Similar as client HttpClient GET 
dispatcher.include(servletRequest, servletResponse); 
String content = servletResponse.getContentAsString(); 
0
String destinationBlockAccount ="./BlockAccount"; 
response.sendRedirect(response.encodeRedirectURL(destinationBlockAccount)); 

此外,你還可以直接從JSP發送一個參數,如:

response.sendRedirect(response.encodeRedirectURL("./GetAccount?accountID="+accountID)); 
+0

請添加解釋你的代碼。 – 2016-02-27 18:49:54

+0

這意味着你有一個名爲BlockAccount的URL模式/ BlockAccount的servlet。然後我們可以重定向到這個servlet。看到http://stackoverflow.com/questions/20371220/what-is-the-difference-between-response-sendredirect-and-request-getrequestdis – 2016-02-27 20:27:21

+0

和https://tomcat.apache.org/tomcat-5.5-doc/ servletapi /使用javax/servlet的/ HTTP/HttpServletResponse.html – 2016-02-27 20:28:01

相關問題