【SpringMvc】的入門程序和執行過程詳解

1.Springmvc是什麼?
Springmvc是一個web層mvc框架,類似struts2.
這裏寫圖片描述

2.Springmvc入門程序

  • 2.1創建一個maven工程
    這裏寫圖片描述

  • 2.2配置web.xml
    這裏寫圖片描述

  • 2.3配置springmvc.xml
    這裏寫圖片描述

  • 2.4自定義Controller
    這裏寫圖片描述

  • 2.5定義視圖頁面
    這裏寫圖片描述

  • 2.6根據代碼分析springmvc執行流程
    這裏寫圖片描述

  • 2.7適配器源碼
    這裏寫圖片描述

3.中文亂碼解決

-3.1Get請求亂碼
這裏寫圖片描述

  • 3.2Post亂碼
    Spring編碼過濾器:在web.xml配置
<filter>
  <filter-name>characterEncoding</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>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4.註解開發

  • 4.1創建一個web工程,並導入jar,配置web.xml
<!-- Spring編碼過濾器 -->
<filter>
  <filter-name>characterEncoding</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>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- 配置前端控制器DispatcherServlet -->   
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 
        默認加載方式:默認加載文件必須規範
            文件命名:servlet-name-servlet.xml======springmvc-servlet.xml
            路徑規範:必須在WEB-INF目錄下面
     -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
  • 4.2配置springmvc.xml
<context:component-scan base-package="com.springmvc.assess" />

<mvc:annotation-driven />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>
@Controller
public class LoginController {
    @RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }
}

這裏寫圖片描述

5.封裝參數
基本類型,int,String等等基本類型、Pojo類型、包裝類型。Springmvc默認支持類型:HttpSession,HttpRequstServlet,Model等等。Springmvc參數封裝:基於方法進行封裝。

  • 5.1封裝int類型參數
    頁面傳遞參數都是字符串。
    這裏寫圖片描述
    接受參數方法
    這裏寫圖片描述
  • 5.2接受字符串類型
    這裏寫圖片描述
    接受參數方法
    這裏寫圖片描述
  • 5.3接受數組
    checkbox複選框,Value必須有值。
    這裏寫圖片描述
    接受參數方法
    這裏寫圖片描述
  • 5.4接受Pojo
    這裏寫圖片描述
    注意:input框中的name的名稱需要和pojo中的屬性保持一致
    這裏寫圖片描述

  • 5.5接受包裝類型參數

public class userCustom{
    private user user;
    private List<User> userList;
    private Map<K,V> maps;  
    private items items;
    ......
    省略getXxx()和setXxx()
}

這裏寫圖片描述
接受參數方法
這裏寫圖片描述

  • 5.6接受集合類型參數
    接受list集合
    這裏寫圖片描述
    接受參數方法
    這裏寫圖片描述
  • 5.7接受map
    這裏寫圖片描述
    接受參數方法
    這裏寫圖片描述

6.springmvc和struts2區別
實現機制:
Struts2是基於過濾器實現的;Springmvc基於servlet實現,Servlet比過濾器快。
運行速度:
Struts2是多列,請求來了以後,struts2創建多少個對象:ActionContext,valuestack,UserAction,ActionSuport,ModelDriven,UserAction裏面屬性:User對象,userlist集合等;Springmvc是單列。
參數封裝來分析:
Struts基於屬性進行封裝;Springmvc基於方法封裝。

7.頁面回顯

//查詢所有
@RequestMapping("list")
public String list(Model model){
    //model 相當於application域對象
    List<User> userList = new ArrayList<User>();    
    User user1 = new User();
    user1.setId(1);
    user1.setSex("男");
    user1.setUsername("張山峯");
    user1.setAddress("武當山");
    user1.setBirthday(new Date());

    User user2 = new User();
    user2.setId(2);
    user2.setSex("男");
    user2.setUsername("張無忌");
    user2.setAddress("武當山");
    user2.setBirthday(new Date());

    userList.add(user1);
    userList.add(user2);        
    model.addAttribute("userList", userList);   
    return "list";      
}

頁面獲取:

這裏寫圖片描述

這裏寫圖片描述
這裏寫圖片描述

8.URL模版映射

  • 8.1url模版映射過程

這裏寫圖片描述

  • Restfull風格設計
    這裏寫圖片描述
    Web.xml攔截方式:在rest目錄下所有請求都被攔截,servlet可以攔截目錄。
    這裏寫圖片描述
    {}:匹配接受頁面Url路徑參數
    @Pathariable:{}裏面參數注入後面參數裏面
    這裏寫圖片描述

9.轉發和重定向

  • 9.1 轉發forward
    本類進行轉發:本類方法與方法之間進行forward。
    方式一:return ”forward:list.do“;
    這裏寫圖片描述
    方式二:return ”forward:/user/list.do“;
    這裏寫圖片描述
    注意:user根路徑前面必須有/.

    跨類進行轉發,轉發方式:return ”forward:/items/list.do“;
    這裏寫圖片描述

  • 9.2重定向redirect
    重定向方式:return ”redirect:list.do“;
    這裏寫圖片描述

發佈了64 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章