SpringMVCコントローラ層のrequestと対応するview層のrequestの違い
2403 ワード
webコンテナ用resin、プロジェクトはspringMVCを採用し、重要な構成は以下の通りである.
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
コントローラレイヤには、次の方法があります.
戻るページforum.jspページの部分コードは以下の通りです.
コントローラレイヤの結果:
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を持ち込んだためである.
コントローラレイヤには、次の方法があります.
@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を持ち込んだためである.