SpringMVCコントローラ層のrequestと対応するview層のrequestの違い

2403 ワード

webコンテナ用resin、プロジェクトはspringMVCを採用し、重要な構成は以下の通りである.
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       
       
   

 
コントローラレイヤには、次の方法があります.
 @RequestMapping("/forum")
    public String forum(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException {

      	System.out.println("controller getContextPath: " + request.getContextPath());
      	System.out.println("controller getServletPath: " + request.getServletPath());
    	System.out.println("controller query string: " + request.getQueryString());
    	request.setAttribute("controllerrequest", request);
return "/templates/" + systemConfig.getAppName() + "/forum"; }

戻るページforum.jspページの部分コードは以下の通りです.
 
<%
	out.print(request.getContextPath());
	out.print("---");
	out.print(request.getServletPath());
	out.print("---");	
	out.print(request.getQueryString());
	out.print("---");	
	out.print(request.equals(request.getAttribute("controllerrequest")));
	
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
// 

 
コントローラレイヤの結果:
controller getContextPath:/bbs7
controller getServletPath:/forum.do
controller query string: fid=1988&filter=type&fval=g6559g80b2g89c2g70b9
 
viewレイヤ出力:
/bbs7---/WEB-INF/view/templates/baby/forum.jsp---fid=1988&filter=type&fval=g6559g80b2g89c2g70b9---false
 
Controller層とview層のrequestにはどんな違いがありますか?印刷の結果から、次のような結論が得られます.
(1)この2つのrequestは2つの異なるオブジェクトである.
(2)この2つのrequestが取得したgetContextPath()は同じであり,いずれも同じアプリケーションを持つContextPathである
(3)2つのrequestが取得したservletPathは異なり,controller層が取得したのは最初に要求したservletパスであり,view層が取得したのはmvc処理による転送を要求した後,jspページのパスである.
(4)2つのrequestが取得したqueryStringは同じで,mvcリクエストがviewレイヤに転送されたときに,最初にリクエストしたqueryStringを持ち込んだためである.