1. 导入jar包

    SpringMVC是Spring框架的一个部分,类似于SpringJDBC,我们在Spring中找到包导入(SpringMVC依赖于Spring)
    image.png

    1. SpringMVC充当了控制层的管理,SpringMVC在中间会存在一个自己的配置,建议用注解。

    之前配置ApplicationContext.xml是在src根目录下,现在(目前是web项目)默认在WEF-INF文件夹下找配置文件
    image.png
    如果想要修改默认的配置路径 ,可以在web.xml中 servlet标签内添加init-param

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. <!--配置SpringMVC核心入口执行类,以前的“小总管”-->
    7. <servlet>
    8. <servlet-name>mvc</servlet-name>
    9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    10. <init-param>
    11. <param-name>contextConfigLocation</param-name>
    12. <param-value>classpath:ApplicationContext.xml</param-value>
    13. </init-param>
    14. </servlet>
    15. <servlet-mapping>
    16. <servlet-name>mvc</servlet-name>
    17. <url-pattern>*.do</url-pattern>
    18. </servlet-mapping>
    19. </web-app>

    image.png
    ApplicationContext.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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--配置一个请求和真实资源(Controller-Bean)的关系-->
        <!--将Controller这个类的对象交给Spring容器管理-->
        <bean id="testController" class="controller.TestController"></bean>
        <!--请求和这个类对象之间的映射关系,通过请求找到它-->
        <!--DispatcherServlet类有一个自己的小弟,负责处理映射关系-->
        <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <!--真实的请求和类对应关系-->
                    <prop key="TestController.do">testController</prop>
                </props>
            </property>
        </bean>
    
    
    </beans>
    

    以上的流程虽然可以实现 ,但是相比较而言跟最早的Tomcat一样 ,Controller类有很多规则 耦合度太高了 ,基于xml形式的配置相较于注解稍微麻烦了一些
    将上述的流程改成注解的方式 controller的规则去掉
    ApplicationContext.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:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--将刚才的bean标签配置去掉 改为开启注解扫描-->
        <context:component-scan base-package="controller"></context:component-scan>
    
        <!--上述一堆删掉,添加一个新的配置,开启注解驱动,相当于是加载了HandlerMapping类对象-->
        <mvc:annotation-driven></mvc:annotation-driven>
    
    </beans>
    

    TestController

    package controller;
    
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    //为了替代原有的xml中的bean标签(Spring做的事,Spring注重对象管理),只是告诉Spring容器,有一个Controller
    //类对象需要交由它来管理,放在Spring底层map容器里
    @Controller
    //说明请求名字和一个真实类名字对应关系(MVC该做的事,SpringMVC注重的是请求和响应)
    @RequestMapping("TestController.do")
    public class TestController{
    
        @RequestMapping
        public String test(){
            return "welcome.jsp";
        }
    
    }