SpringMVC

springMVC是一種基於Java實現的、WEB的MVC設計模式的、請求驅動類型的、輕量級的WEB框架。
1、springMVC使用了MVC的設計模式思想。
2、基於驅動請求,就是指使用了請求-響應的模式。
3、將WEB層進行了解耦。
springMVC的工作流程
瀏覽器發送一個請求給WEB服務器,由服務器來控制發送給哪一個servlet來進行處理。
在流程中的作用
springMVC中的前端控制器DispatcherServlet:又被成爲中央處理器。負責接收請求進行響應。通過調用其他的組件控制整個流程的跳轉。
處理器映射器:根據前端控制器轉給的URL請求地址去查詢handler處理器。
處理器適配器:前端控制器將根據URL查詢到的結果發送給適配器去適配執行處理器。
處理器:(需要自己進行開發)controller。
視圖解析器:對view信息進行解析。
在這裏插入圖片描述
過程(個人理解)

  1. 瀏覽器發出一個請求到前端控制器
  2. 前端控制器把請求信息的URL轉給處理器映射器
  3. 處理器映射器根據接收的URL進行處理,將處理結果返回給前端控制器
  4. 前端控制器將查詢到的結果轉給處理器適配器。
  5. 適配器根據結果適配合適的時處理器
  6. 處理器將結果進行處理後返回ModelAndView數據給處理器適配器
  7. 處理器適配器再將處理器返回的數據返會給前端控制器
  8. 前端控制器再將ModelAndView數據轉給視圖解析器
  9. 視圖解析器對View信息進行解析後將解析結果返回給前端控制器
  10. 前端控制器將得到的視圖 信息進行數據渲染
  11. 最後前端控制器將渲染好的視圖信息響應給瀏覽器
    程序的基礎配置文件
    配置web.xml文件
    前端控制器
<servlet>
  	<servlet-name>springMVC</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 初始化信息 -->
  	<init-param>
  		<!-- springMVC的配置文件位置 -->
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springMVC.xml</param-value>
  	</init-param>
  	
  	<!-- 項目啓動就會加載,填寫加載順序 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>

處理的請求
*.do:處理以.do結尾的請求。不會攔截靜態資源
/:攔截所有請求。符合RESTFUL風格。會導致靜態資源也會被攔截,而無法加載。
/*:錯誤寫法。

  <servlet-mapping>
  	<servlet-name>springMVC</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>

編碼過濾器的配置

<!-- 編碼過濾器 -->
<filter>
 	<filter-name>EncodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>utf-8</param-value>
	</init-param>
 </filter>
 
 <filter-mapping>
 	<filter-name>EncodingFilter</filter-name>
 	<url-pattern>/*</url-pattern>
 </filter-mapping>

注意:前端控制器中的name要與處理請求中的name一致
springMVC配置文件

處理器映射器 HandlerMapping
功能:根據url查詢處理器或者攔截器
BeanNameUrlHandlerMapping:把bean名字作爲請求的url

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
</bean>

處理器適配器 HandlerAdapter
功能:配置處理器,執行處理器
SimpleControllerHandlerAdapter:對所有實現了controller接口的處理器進行適配

 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
 </bean>

視圖解析器

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

在編寫springMVC配置處理器映射器和處理器適配器時需要寫兩個<bean></bean>來配置,這裏也可以使用註解驅動,它提供了支持註解開發的處理器映射器和處理器適配器,還提供了json之和和數據綁定支持。
註解開發的詳情
@RequestMapping 裏需要配置映射的路徑,‘first’前面的‘/’可加可不加,後邊的‘.do’可加可不加
@ RequestMapping 可以註解到方法上也可以註解到類上。當註解到類上時,表示該類的所有方法都將映射到配置屬性的路徑下
例:
註解的屬性:
value:指的是請求的地址。是缺省的默認值。string[]支持多路徑、傳值
method:指請求的method類型。get、post。不配置method,代表支持所有請求類型。 method=RequestMethod.GET只支持get請求

@RequestMapping(value="first",method=RequestMethod.GET)
public ModelAndView first() {
	ModelAndView mv = new ModelAndView();
	mv.addObject("msg","註解開發的項目");
	mv.setViewName("user");
	return mv;
}

springMVC支持返回的類型
1、ModelAndView
2、返回類型爲void:可以重定向或者轉發。或者是設置響應類型。類似於原生的Servlet開發
3、返回字符串類型:返回字符串可作爲邏輯視圖的名,可實現重定向 redirect: ;可進行轉發forward:
例:

// 重定向
@RequestMapping("third")
public String third() {
	return "redirect:/one/first.do";	
}
-------------------------------
// 轉發
@RequestMapping("fourth")
public String fourth(HttpServletRequest request,HttpServletResponse response){
	request.setAttribute("msg", "轉發數據");
	return "forward:/two/second.do";
}

4、返回map:異步開發的時候,會被轉成json格式的

數據綁定
處理器適配器會在執行handle之前,把http請求的信息的數據綁定到handle方法的形參上。
默認支持的參數類型

HttpServletRequest:
HttpServletResponse:
HttpSession
Model:作用:將數據填充到request域中

簡單數據類型的綁定
當請求中的參數名和處理器方法的參數名字一致時,會將請求中的參數數據與形參進行綁定
支持java基本數據類型:int、String、double、boolean等。
同時支持多參數。
@RequestParam :
value:綁定的傳參的參數名
required:是否是必須傳遞的,默認值是true
defaultValue:設置默認值

@RequestMapping("third")
public String third(@RequestParam(value="ids",required=false,defaultValue="1")int id,String name){
	System.out.println("id:"+id);
	System.out.println("name:"+name);
	return "user";
}

簡單的實體類對象類型的數據綁定(屬性都是基本數據類型)
包裝實體類對象類型
在jsp中的屬性是一個對象時:在實體類中對象屬性名.對象中的屬性

<input type="text" name="car.carName">```


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