日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SpringMVC框架的详细操作步骤和注解的用法

發布時間:2025/3/21 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC框架的详细操作步骤和注解的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springMVC操作步驟:

第一步:導入jar(spring4個核心+日志+spring-web+spring-webmvc+spring-aop)

第二步:在web.xml中配置前端控制器(servlet),并讀取springmvc的資源文件springmvc.xml

<servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!-- 加載資源文件 --><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

如果不手動添加資源文件的話,springmvc默認的資源文件位置在WEB-INF下,默認文件名為:servlet名-servlet.xml.

第三步:建立springmvc.xml的資源文件,并進行controller包掃描和配置視圖解析器

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:component-scan base-package="com.sms.springmvc.controller"></context:component-scan></beans>

第四步:在類上加@Controller注解,代表這是一個處理請求的類

第五步:在方法上添加@RequestMapping注解,其中value屬性的值為用戶請求的地址.

@RequestMapping注解詳解:

@RequestMapping屬性包含以下幾個:

  • ①value:請求路徑和value屬性值一致時,該注解標注的方法即為處理請求的方法
  • ②method:用來設置處理請求的方式,客戶請求的方式和method屬性的值一致時才可以處理請求.
  • ③parmas:用來設置客戶端傳到服務器端的數據必須符合某些規則.要求請求路徑必須帶有parmas屬性的值才能處理該請求.

@RequestMapping作用的位置:

  • ①放在方法上:
    只對該方法有效

  • ②放在類上:
    對當前類的所有方法有效
    放在類上時一般只使用value屬性.加上value屬性后訪問路徑變成:項目名/類上的value值/方法上的value值

@RequestMapping支持Ant方式的訪問路徑:

  • *:表示任意一層目錄
  • ?:表示任意一個字符
  • **:表示任意多層目錄

REST風格:使用@PathVariable獲得占位符的數據,并賦值給形參

@PathVariable注解的使用:

在Spring3.0之后可以支持URL 傳參,帶占位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向REST 目標挺進發展過程中具有里程碑的意義。
通過 @PathVariable 可以將 URL 中占位符參數綁定到控制器處理方法的入參中.

如URL 中的 /student/{name} 占位符可以通過@PathVariable(“name”) 綁定到操作方法的入參中。

@RequestMapping(" /student/{name}")public User testPathVaeiable(@PathVariable("name") String name){return userService.selectUser(name);}

@RequestParam的作用:

當前端向后端傳值時,若請求的參數和controller方法的形參一致就可以自動賦值.若不一致使用@RequestParam進行指定

@RequestParam的value屬性:
通過value指定映射關系
如:@RequestParam(value=“name”)String username,可以指定前端傳過來的name輸入框的值賦值給username這個形參.

@RequestParam的required屬性:
取消自動裝配的必須性
如:@RequestParam(value=“name”,required=false),若前端沒有名為name這個輸入框,服務器也不會報錯,有則獲取,沒有則為空值.

@RequestParam的defaultValue:設置默認值,沒有傳參時使用該值

SpringMVC獲取客戶端傳來的參數的方式:

①在處理器的方法中加入對應的形參,保證該形參和請求的參數name一致

②使用pojo對象接收數據:當pojo對象的屬性和客戶端表單name 的值一致時可以接收數據,且支持級聯關系

③使用servlet原生API獲取參數如:HTTPServletRequest,HttpServletRespnse,HttpSession(不推薦)

SpringMVC中controller方法的返回值的幾種類型解說:

①使用ModelAndView存值并進行跳轉,方法的返回值為ModelAndView類型**

②返回void,使用servlet原生APIrequest和response實現存值和跳轉(不推薦).**

③返回String,直接return " 資源路徑"實現轉發操作,
return "redirect: 資源路徑"實現重定向操作,形參中傳入Model對象,使用model對象進行存值,存在request域中**

設置視圖的方式不一樣后臺所創建的視圖類型也不一樣.

①使用轉發的方式:return “資源路徑”;后臺會創建一個InternalResourceView對象,對該資源路徑進行解析,解析后執行getRequestDispatcher().forward(request,response)命令

②使用重定向的方式:return “redirect:資源路徑"的方式,后臺會創建一個RedirectView對象,對該資源進行解析,解析后執行sendRedirect(”")命令.

< mvc:default-Servlet-handler/>標簽的作用:

配合< mvc:annotation-driven/>標簽,把項目中的靜態資源文件(如js文件,css文件)交給tomcat中默認的servlet去處理,不經過前端控制器的處理.

@ResponseBody的作用:

一個處理器若加上了@ResponseBody這個注解,那么該處理器里面就不能在實現頁面的跳轉。就算返回一個字符串,也會將該字符串作為一個數據響應到客戶端。返回的任何類型都會轉化為json對象。但需要jackson的jar包的支持.因為springMVC底層使用jackson技術進行數據格式的轉換.

Json有兩種形式:①Json對象:{key:value,key:value,…};②Json數組:[{key:value,key:value…},{key:value,key:value…},…]

步驟一:加入jackson的jar包(三個).
步驟二:在springMVC.xml中開啟mvc注解驅動.
步驟三:在需要轉化為json數據的處理器上面加上@ResponseBody注解.
步驟四:在需要轉換為json數據的對象直接作為返回值返回.

示例:
①控制器向客戶端響應一個json數據類型的list集合:

@Controller public class TestController {@RequestMapping("testJson")@ResponseBodypublic List<User> testJson(){ArrayList<User> list = new ArrayList<>();User user1 = new User(1001, "張三", "男", 12);User user2 = new User(1002, "李四", "男", 22);User user3 = new User(1003, "王五", "男", 32);User user4 = new User(1004, "趙六", "男", 42);list.add(user1);list.add(user2);list.add(user3);list.add(user4);//返回的list集合到客戶端后就回轉化成json格式return list;} }

②客戶端執行ajax請求,希望響應回一個json的數組:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.11.3.min.js"></script><script type="text/javascript">//文檔加載函數$(function(){$("#btn").click(function(){//執行ajax請求,請求路徑為controller中的testJson這個控制器$.post("testJson",function(data){//data裝載返回的list集合//循環遍歷出data里面的json數組$(data).each(function(i,u){$("body").append("<p>id="+u.id+",username="+u.username+",gender="+u.gender+",age="+u.age +"</p>")})},"json")})})</script> </head> <body><!-- 點擊按鈕觸發ajax請求 --><input id="btn" type="button" value="測試json"/> </body> </html>

springMVC實現上傳的功能:

在沒有使用springMVC的時候,實現上傳功能,我們需要用一個File類型來接收,但使用了springMVC后,我們可以使用MultipartFile類型來接收,因此,需要在springMVC中配置一個解析器來將File類型轉化為MultipartFile類型

步驟一:導入commons-io和commons-fileload的jar包;
上傳功能需要這兩個jar包才能被支持
步驟二:在springmvc.xml中配置解析器MultipartResolver,其中id必須為multipartResolver,因為要和DispatcherServlet類中的屬性保持一致;
該解析器可以將客戶端傳來的File類型的對象轉化為MultipartFile類型,該類型被springMVC封裝,包含了許多關于上傳的強大的功能.
配置如下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

步驟三:在客戶端編寫上傳文件的代碼,指定文件域中的name 值和控制器形參中Multipart的名一致.:

<form action="up" method="post" enctype="multipart/form-data">頭像:<input type="file" name="uploadFile"/>描述:<input type="text" name="desc"/><input type="submit" value="上傳"/> </form> @RequestMapping(value="up",method=RequestMethod.POST)public String up(String desc,MultipartFile uploadFile) throws IOException{//獲取文件要寫出的路徑String originalFilename = uploadFile.getOriginalFilename();//解決圖片重名問題String finalFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));String path = session.getServletContext().getRealPath("photo") + File.separator + finalFileName;//將上傳的圖片寫到path下uploadFile.transferTo(new File(path));return "success";}

配置攔截器interceptor:

需要實現HandlerInterceptor接口或者繼承HandlerInterceptorAdapter這個類.

第一步:創建一個類實現HandlerInterceptor接口或者繼承HandlerInterceptorAdapter這個類

第二步:將該類作為攔截器配置在springMVC中

<mvc:interceptors><mvc:mapping path="/**"/><mvc:exclude-mapping path="/login"/>   <mvc:exclude-mapping path="/index"/><bean id="myInterceptor" class="com.sms.mvc.interceptor"></bean></mvc:interceptors>

HandlerInterceptor中重寫的方法的作用:
preHandle:在請求之前進行攔截,有boolean類型的返回值,返回true則放行
postHandle:在controller處理器處理完數據后,返回modelAndView之前執行
afterCompletion:頁面渲染后執行,可以對異常進行處理

多個攔截器執行順序:

如有兩個攔截器(1)方法執行前返回值都為true,則順序如下方法執行前1 方法執行前2方法執行后2方法執行后1頁面渲染后2頁面渲染后1

springMVC和Spring 的整合:

問題一:springMVC.xml可以被web.xml以servlet 的形式加載.那么spring的配置文件applicationContext.xml被誰加載?什么時候加載?

spring的配置文件需要被配置在web.xml 的context上下文中,以< context-param> 的形式去加載spring的配置文件,如若不以這樣的形式,那么web.xml會默認加載WEB-INF下的applicationContext.xml.
配置spring后,需要在服務器開啟時創建一個spring 的容器,因此需要配置一個loaderContextListener創建spring的容器.

<!-- 加載spring的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param> <!-- 配置監聽器加載spring容器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

總結

以上是生活随笔為你收集整理的SpringMVC框架的详细操作步骤和注解的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。