什麼是SpringMvc
Spring Mvc 與Struts2都屬於表現層框架。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發框架。
處理流程
入門程序
導包
配置前端控制器
SpringMvc所有的請求,都先通過前端控制器進行過濾,然後交給處理器,然後處理器做出響應給前端控制器。所以現在web.xml文件中配置前端控制器 過濾器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>springmvc-01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加載springmvc.xml配置文件。
默認找 /WEB-INF/[servlet的名稱]-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
1. /* 攔截所有 jsp js png .css 真的全攔截 建議不使用
2. *.action *.do 攔截以do action 結尾的請求 肯定能使用 ERP
3. / 攔截所有 (不包括jsp) (包含.js .png.css) 強烈建議使用 前臺 面向消費者 www.jd.com/search /對靜態資源放行
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
- 準備pojo類與前端jsp頁面
前端頁面,進行一個簡單的列表展示,將商品數據封裝到集合中,進行遍歷。
pojo類
public class Item {
// 商品id
private int id;
// 商品名稱
private String name;
// 商品價格
private double price;
// 商品創建時間
private Date createtime;
// 商品描述
private String detail;
創建帶參數的構造器
set/get。。。
}
- 創建springmvc.xml配置文件
這是springmvc框架的核心,SpringMVC本身就是Spring的子項目,對Spring兼容性很好,不需要做很多配置。這裏只配置一個Controller掃描就可以了,讓Spring對頁面控制層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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 配置controller掃描包 -->
<context:component-scan base-package="cn.itcast.springmvc.controller" />
</beans>
- 測試
創建一個ItemController普通的java類,不需要實現任何接口。
需要在類上添加@Controller註解,把Controller交由Spring管理
在方法上面添加@RequestMapping註解,裏面指定請求的url。其中“.action”可以加也可以不加。
@Controller
public class ItemController {
// @RequestMapping:裏面放的是請求的url,和用戶請求的url進行匹配,會自動根據請求地址來掃描指定的包,類,和方法。
// action可以寫也可以不寫
@RequestMapping("/itemList.action")
public ModelAndView queryItemList() {
// 創建頁面需要顯示的商品數據
List<Item> list = new ArrayList<>();
list.add(new Item(1, "1華爲 榮耀8", 2399, new Date(), "質量好!1"));
list.add(new Item(2, "2華爲 榮耀8", 2399, new Date(), "質量好!2"));
list.add(new Item(3, "3華爲 榮耀8", 2399, new Date(), "質量好!3"));
list.add(new Item(4, "4華爲 榮耀8", 2399, new Date(), "質量好!4"));
list.add(new Item(5, "5華爲 榮耀8", 2399, new Date(), "質量好!5"));
list.add(new Item(6, "6華爲 榮耀8", 2399, new Date(), "質量好!6"));
// 創建ModelAndView,用來存放數據和視圖
ModelAndView modelAndView = new ModelAndView();
// 設置數據到模型中
modelAndView.addObject("list", list);
// 設置視圖jsp,需要設置視圖的物理地址
modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");
return modelAndView;
}
}
- 啓動項目
通過訪問RequestMapping的請求地址。