JavaEE框架學習筆記——SpringMVC篇

文章部分內容整理自郭永鋒視頻教學內容!   

目錄

一、SpringMVC的註解開發

二、Controller接收請求參數

三、SpringMVC和Struts的區別

四、轉發和重定向

五、RequestParam註解

六、 ResponseBody和RequestBody

七、Oscache頁面緩存

八、SpringMVC的攔截器


 

一、SpringMVC的註解開發

配置DispatchServlet-Servlet.xml

<!-- 1.配置註解掃描位置 -->

<context:component-scan base-package="com.gyf.backoffice.web.controller"/>

 

<!-- 2. 配置處理器映射,通過註解來查找 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<!-- 3.配置註解處理適配器來執行控制器的方法 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

 

<!-- 配置springmvc視圖解析器

視圖解析器解析的視頻路徑爲:前綴 + 後綴 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views"/>

<property name="suffix" value=".jsp"/>

</bean>

修改UserController

 

測試註解配置的訪問

 

優化mvc配置文件

 

二、Controller接收請求參數

1、接收int,String,Date,數組類型

提供一個form表單

 

在UserController提供一個用戶註冊的方法

 

2、接收pojo類型

創建一個pojo User類型

 

form表單

 

配置一個註冊方法,表單參數將自動封裝到user對象中

 

3、接收包裝類型參數

把User寫成一個類的屬性(模型中有模型)

 

添加一個註冊方法

 

修改form表單

 

4、接收集合List類型參數

在UserExt中添加一個集合

添加一個註冊 的方法,參數寫UserExt

 

form表單

 

5、接收集合Map類型參數

UserExt上添加一個Map

 

添加一個註冊方法

 

form表單

 

三、SpringMVC和Struts的區別

1、實現機制:

  • Struts2是基於過濾器實現的。
  • SpringMVC基於servlet實現。

2、運行速度:

Servlet比過濾器快。

  • Struts2是多例。每一次請求,都會創建一個Action對象,請求來了以後,struts2創建多個對象:ActionContext,valuestack,UAction,ActionSuport,ModelDriven。
  • SpringMVC是單例。同一個Controller請求,只會創建一個Controller。

四、轉發和重定向

轉發到同一個控制器的方法

轉發到不同一個控制器的方法

重定向,只需要把forward改成redirect

 

五、RequestParam註解

RequestParam參數描述:

  •  value:參數名稱
  •  defaultValue:默認值
  •  required:參數是否必須有值,如果爲true,參數又爲空,會報錯

六、 ResponseBodyRequestBody

  • @ResponseBody把後臺pojo轉換json對象,返回到頁面。
  • @RequestBody接受前臺json數據,把json數據自動封裝javaBean

 

七、Oscache頁面緩存

商品頁面訪問量特別大,給商品頁面緩存。Items路徑下所有請求都緩存。

在web.xml中配置頁面緩存

<!-- 配置頁面緩存 -->

<filter>

<filter-name>oscache</filter-name> <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>

<init-param>

<param-name>time</param-name>

<param-value>3600</param-value>

</init-param>

<init-param>

<param-name>scope</param-name>

<param-value>application</param-value>

</init-param>

</filter>

 

<filter-mapping>

<filter-name>oscache</filter-name>

<url-pattern>/items/*</url-pattern>

</filter-mapping>

如圖,把持久化緩存加到項目中,緩存的數據是一個頁面

 

oscache.properties配置內容如下:

cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener

cache.path=C:\\test

八、SpringMVC的攔截器

Spring Web MVC 的處理器攔截器類似於Servlet 開發中的過濾器Filter,用於對處理器進行預處理和後處理。下面以登錄攔截器爲例。、

登錄攔截器

public class LoginInterceptor implements HandlerInterceptor{
	//controller執行後且視圖返回後調用此方法
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("返回視圖前  後處理");
	}
	//controller執行後但未返回視圖前調用此方法
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("未返回視圖前 後處理....");
	}

	// controller執行前調用此方法
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("預處理....");
		//如果是登錄頁面則放行
		if(request.getRequestURI().indexOf("login.do")>=0){
			return true;
		}
		HttpSession session = request.getSession();
		//如果用戶已登錄也放行
		if(session.getAttribute("user")!=null){
			return true;
		}
		//用戶沒有登錄挑戰到登錄頁面
		request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
		
		return false;
	}
}

登錄控制器

 

登錄界面

 

 

springmvc.xml登錄攔截器配置

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章