天天看點

初識SpringMVC學習目标:初識SpringMVC學習内容:學習時間:學習産出:

學習目标:

初識SpringMVC

學習内容:

初識SpringMVC

學習時間:

學習産出:

初識SpringMVC

初識SpringMVC學習目标:初識SpringMVC學習内容:學習時間:學習産出:

1、SpringMVC執行原理

  • DispatcherServlet表示一個前置控制器,是整個SpringMVC的控制中心。使用者送出請求,DisPatcherServelt接受請求并攔截請求。
  • HandlerMapping為處理映射器。DispatcherServlet調用HandlerServlet,HandlerMapping根據請求url查找Handler。
  • HandlerExecution表示具體的Handler,其主要作用是根據url查找控制器
  • HandlerExecution将解析後的資訊傳遞給DispatcherServlet,如解析控制器映射等。
  • HandlerAdapter表示處理器擴充卡,其按照特定的規則去執行Handler。
  • Handler讓具體的Controller執行。
  • Controller将具體的執行資訊傳回給HandlerAdapter,如ModelAndView。
  • HandlerAdapter将視圖邏輯名或模型傳遞給DispatcherServlet。
  • DispatcherServlet調用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名。
  • 視圖解析器将解析的邏輯視圖名傳給DispatcherServlet。
  • DispatcherServlet根據視圖解析器解析的視圖結果,調用具體的視圖。
  • 最終視圖呈現給使用者。

2、第一個SpringMVC程式

  • 導入依賴
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
           
  • 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--1、注冊DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--關聯一個springmvc的配置檔案:servlet-name:servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--啟動級别1:跟伺服器一起啟動-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--/比對所有請求:(不包括.jsp),隻針對我們編寫的請求;即:.jsp不會進入spring的 DispatcherServlet類 。-->
    <!--/*比對所有請求:(包括.jsp),會出現傳回jsp視圖時再次進入spring的DispatcherServlet類(多層嵌套,出現一個jsp套一個jsp),導緻找不到對應的controller是以報404錯-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
           
  • springmvc-servlet.xml

    配置springmvc-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.xsd">

    <!--添加處理映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--添加處理擴充卡-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--添加視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--字首-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--字尾-->
        <property name="suffix" value=".jsp"/>
    </bean>


    <!--将自己的類交給SpringIOC容器,注冊bean(BeanNameUrlHandlerMapping将會來這裡找bean)-->
    <bean id="/hello" class="com.springmvc.controller.HelloSpringMVC"/>
</beans>
           
  • jsp

WEB/INF下建立jsp檔案夾,在裡面建立hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>HELLO</title>
</head>
<body>
${msg}
</body>
</html>
           
  • HelloSpringMVC

    編寫控制器

public class HelloSpringMVC implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //ModelAndView 模型和視圖層
        ModelAndView mav = new ModelAndView();
        //封裝對象,放在ModelAndView中。Model
        mav.addObject("msg","HelloSpringMVC!");
        //封裝要跳轉的視圖,放在ModelAndView中
        mav.setViewName("hello");//相當于/WEB-INF/jsp/hello.jsp
        return mav;
    }
}
           

注意:出現404确認maven導入的jar包在子產品中存在!

繼續閱讀