1. 程式人生 > >SpringMVC重要知識點

SpringMVC重要知識點

一.自定義格式轉換

1.定義一個類實現Converter
2.新增預設方法,進行格式轉換
3.在SpringMvc.xml檔案中進行配置最後還有掛在到註解驅動中

	<!-- 載入註解驅動 -->
	<mvc:annotation-drivenconversion-service="conversionService"/>
	<!-- 轉換器配置 -->
	<beanid="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<propertyname="converters">
			<set>
				<beanclass="cn.itcast.springmvc.convert.DateConverter"/>
			</set>
		</property>
	</bean>

二.SpringMVC框架的圖片上傳

上傳檔案的時候表單的設定
	form表單中應該有一個屬性enctype="multipart/form-data";
	匯入兩個檔案上傳的jar包
		commons-io-2.4.jar
		commons-fileupload-1.2.2.jar
	配置檔案上傳
		<!-- 檔案上傳 -->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 設定上傳檔案的最大尺寸為5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
		</bean>
	controller類的編寫:
		方法中帶有一個引數MultipartFile pictureFile(前端介面檔案上傳的name屬性物件的名字,必須完全相同)
		//獲取圖片完整名稱
		String fileStr = pictureFile.getOriginalFilename();
		//使用隨機生成的字串+原始檔副檔名組成新的檔名稱,方式圖片重名
		String newfileName = UUID.randomUUID().toString()+fileStr.substring(fileStr.lastIndexOf("."));
		//將圖片儲存到專案訪問的路徑中
		pictureFile.transferTo(new File("檔案路徑"));
		//將圖片名稱儲存到資料庫

三.json資料互動

  1. 第一步匯入jackson的jar包在controller的方法中可以使用@RequestBody,讓springMvc講json格式字串自動轉換成java中的pojo頁面json中的key要等與Java中pojo的屬性名稱

  2. 想要在介面中返回json格式

    • 在方法添加註解
    • @ResponseBody
    • 返回值就是想要返回的物件

四.restful

	Restful就是一個資源定位及資源操作的風格。不是標準也不是協議,只是一種風格,是對http協議的詮釋。
	

	- 資源定位:網際網路所有的事物都是資源,要求url中沒有動詞,只有名詞。沒有引數
	

	 - Url格式:http://blog.csdn.net/beat_the_world/article/details/45621673

	

	- 資源操作:使用put、delete、post、get,使用不同方法對資源進行操作。分別對應新增、刪除、修改、查詢。一般使用時還是post和get。Put和Delete幾乎不使用。

	

<servlet-mapping>
			<servlet-name>springmvc-servlet-rest</servlet-name>
			<!-- 必須用/ -->
			<url-pattern>/</url-pattern>
		</servlet-mapping>
  • @RequestMapping(value="/viewItems/{id}"):{×××}佔位符,請求的URL可以是“/viewItems/1”或“/viewItems/2”,通過在方法中使用@PathVariable獲取{×××}中的×××變數。

  • @PathVariable用於將請求URL中的模板變數對映到功能處理方法的引數上。 @ResponseBody
    public viewItems(@PathVariable(“id”) String id,Model model) throws Exception{ … }

五…攔截器

  1. 定義一個攔截器類實現HandlerInterceptor

  2. 裡面有三個方法

  • 最後執行 執行時機:controller方法已經執行,ModelAndView已經返回 使用場景:記錄日誌
    afterCompletion(…){ }

  • 中間執行 執行時機:controller方法已經執行,ModelAndView沒有被返回 使用場景:可以在此方法中設定全域性的資料處理業務
    postHandler(…){ }

  • 最先執行 執行時機:controller方法沒有被執行,ModelAndView沒有被返回 使用場景:許可權認證
    preHandler(…){ }

    在springmvc.xml中進行配置

     	<mvc:interceptors>
     		<mvc:interceptor>
     	
     			<!--攔截請求的路徑 攔截所有必須配置成/**-->
     			<mvc:mapping path="/**"/>
     			<!--指定攔截器的位置-->
     			<bean class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean>
     		
     		</mvc:interceptor>
     		<mvc:interceptor>
     			<mvc:mapping path="/**"/>
     			<bean class="cn.itcast.springmvc.filter.HandlerInterceptor2"></bean>
     		</mvc:interceptor>
     	
     </mvc:interceptors>
    

實戰:登陸許可權認證

  1. 編寫登陸的controller,編寫跳轉到登陸介面的方法,編寫登陸驗證方法
  2. 編寫登陸介面
  3. 編寫攔截器

執行過程:

  1. 任意訪問一個介面,攔截器會攔截請求,hui驗證session中是否有登陸資訊

    • 如果已經已登入,放行

    • 如果未登入,跳轉到登陸介面

  2. 在登陸介面中輸入使用者名稱密碼,點選登陸按鈕,攔截器會攔截請求如果是登陸路徑放行

    在controller中判斷使用者名稱密碼是否正確,如果正確把登陸資訊放到session中