文章部分內容整理自郭永鋒視頻教學內容!
目錄
一、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,參數又爲空,會報錯
六、 ResponseBody和RequestBody
- @ResponseBody把後臺pojo轉換json對象,返回到頁面。
- @RequestBody接受前臺json數據,把json數據自動封裝javaBean
七、Oscache頁面緩存
在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登錄攔截器配置 |
|
|