SpringMVC入門精講

SpringMVC

1、前言-關於SpringMVC

MVC是一種軟件設計的架構,將軟件分爲三層

	M(Model):模型層,用於封裝數據
	V(View):視圖層(表現層),是一般的HTML或jsp頁面
	C(Controller):控制層,用作處理數據,返回結果.相當於servlet

SpringMVC是基於Spring框架實現了web mvc設計模式的輕量級web框架。藉助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡單。

2、SpringMVC的核心組件

1、DispatcherServlet

前端控制器,核心,用作連接其他的組件,完成任務的分發與分配。

2、HandlerMapping

url處理映射,接收url ,根據不同的配置方式交給不同的Controller來處理。它有三種配置:

1  BeanNameUrlHandlerMapping
        功能:尋找Controller
              根據url請求去匹配bean的name屬性,從而獲取Controller
              <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
              <bean name="/user.do" class="com.ldy.backOffice.web.controller.UserController"/>
 2  SimpleUrlHandlerMapping
        功能:尋找Controller
              根據瀏覽器url匹配簡單url的key,key就是Controller的id找到Controller
              <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                <property name="mappings">
                    <props>
                        <prop key="/user1.do">userC</prop>
                    </props>
                </property>
              </bean>
              <bean id="userC" class="com.ldy.backOffice.web.controller.UserController"/>
3  ControllerClassNameHandlerMapping
        功能:尋找Controller
               根據類名(MyController)類名.do來訪問,類名首字母小寫
               <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
               <bean class="com.ldy.backOffice.web.controller.UserController"/>

3、HandlerAdapter

控制器處理適配器,配置Controller的執行方式,它有兩種配置:

1 SimpleControllerHandlerAdapter
        功能:執行controller(控制器)
              調用實現controller接口的控制器中的public ModelAndView handleRequest(...)方法,返回modelAndView
2 HttpRequestHandlerAdapter
        功能: 執行controller
              調用實現HttpRequestHandler接口的控制器中的public void handleRequest(...)方法,無返回值.
        注意: 該兩種配置可以共存

4、Controller

控制器 相當於配置了Controller的訪問路徑,有三個屬性

id     :配合SimpleUrlHandlerMapping url處理映射來找到真正的Controller類
name   :配合BeanNameUrlHandlerMapping url處理映射來找到真正的Controller類
class  :引用Controller全類名

5、InternalResourceViewResolver

前端資源視圖解析器
進行視圖解析,根據邏輯視圖名解析成真正的視圖View
ViewResolver會根據配置將處理結果生成View視圖(HTML,jsp頁面等),展示給用戶。其中ViewResover有幾個屬性

prefix:前綴
suffix:後綴

SpringMVC的執行流程大致如下:
在這裏插入圖片描述

3、HelloSpringMVC-入門案例

XML配置

1、創建項目,導入jar包

如下的jar包有些可以不需要,可以根據項目酌情導入
在這裏插入圖片描述

2、在web.xml配置DispatcherServlet

在這裏插入圖片描述

<?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_3_0.xsd" version="3.0">
    <display-name>spring_mvc_annotation</display-name>
    <servlet>
        <servlet-name>spring_mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring_mvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>\此處注意\/*</url-pattern>
    </filter-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>
</web-app>

3、在WEB-INF目錄下創建xxx-servlet.xml

根據web.xml配置的名稱來創建xxx.servlet.xml文件
在這裏插入圖片描述引入頭文件

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
</beans>

4、配置xxx-servlet.xml

在這裏插入圖片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!--1  配置url處理映射-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--2  配置控制器處理適配器-->
    <bean class="org.springframework.web.portlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--3  配置控制器 相當於配置了訪問路徑-->
    <bean name="/user.do" class="com.ldy.backOffice.web.controller.UserController"/>
    <!--4  配置資源視圖的解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前綴-->
        <property name="prefix" value="/WEB-INF/view/"/>
        <!--後綴-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

5、創建Controller控制器

在這裏插入圖片描述

		package com.ldy.backOffice.web.controller;
		import org.springframework.web.servlet.ModelAndView;
		import org.springframework.web.servlet.mvc.Controller;
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		public class UserAddController implements Controller {
		    @Override
		    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
		        ModelAndView mav = new ModelAndView("user/useradd");
		        return mav;
		    }
		}

注意導入JavaEE的包

6、創建一個hello.jsp頁面

注意根據配置的文件來創建目錄
在這裏插入圖片描述

	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
	<head>
	    <title>Title</title>
	</head>
	<body>
	<h2>${name}</h2>
	</body>
	</html>

7、運行項目,訪問路徑

在這裏插入圖片描述

Annotation方式

創建項目,
導入jar包,
編寫web.xml文件與xml方式無異

1、配置xxx-servlet.xml

在這裏插入圖片描述

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <mvc:annotation-driven/>
    <!-- 1.配置掃描包-->
    <context:component-scan base-package="com.ldy.backOffice.web.controller"/>
    <!-- 2.配置註解處理映射-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <!-- 3.配置適配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </property>
    </bean>
    <!-- 4.配置資源視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

2、編寫Controller

在這裏插入圖片描述

註解詳解

@Controller: 相當於在spring中配置了<bean class="控制器的路徑"/>
@RequestMapping: 指定請求的實際url
@Pathariable: {}裏面參數注入後面參數裏面
@RequestParam: 參數描述

3、運行截圖

在這裏插入圖片描述

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