Spring MVC学习笔记

MVC模式:

按组件职责不同可以将程序中的组件分为Model、View、Controller三部分

  • Model模型:负责业务处理和数据封装(如Dao)
  • View视图:负责与用户交互界面(如Jsp)
  • Controller控制器:接收请求,协调模型和视图,完成处理和相应(如servlet)

Spring MVC主要构成组件:

  • DispatcherServlet:主控制器,接收请求,在web.xml中配置
  • HandlerMapping:根据请求寻找对应的Controller
  • Controller:调用Dao等逻辑处理请求(开发者编写)
  • ModelAndView:封装模型和视图信息
  • ViewResolver:视图解析器,根据ModelAndView找到对应jsp页面,返回数据

Spring MVC处理流程:

  1. 浏览器发出请求,请求进入DispatcherServlet
  2. DispatcherServlet调用HandlerMapping,根据请求寻找Controller组件处理
  3. Controller处理请求,返回一个ModelAndView对象
  4. ViewResolver解析ModelAndView信息,找到对应jsp页面,返回数据

例:/hello.form-->DispatcherServlet-->HandlerMapping-->HelloController-->ModelAndView-->ViewResolver-->hello.jsp

Spring MVC配置:

首先在web.xml中配置DispatcherServlet

<!-- Spring MVC 核心控制器 DispatcherServlet 配置 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring/spring-mvc.xml</param-value>
        </init-param>
        <!-- 是否在启动的时候就加载这个servlet -->
        <!-- 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet; 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载 -->
        <!-- 正数的值越小,该servlet的优先级越高,应用启动时就越先加载。 当值相同时,容器就会自己选择顺序来加载 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

然后按照上面的classpath路径创建配置文件spring-mvc.xml:

<!-- 注解默认扫描的包路径 -->
    <context:component-scan base-package="com.xzh.ssm.controller" />
    <!-- 添加mvc注解驱动(HandlerMapping) -->
    <mvc:annotation-driven />

<!-- 对模型视图添加前后缀 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/WEB-INF" p:suffix=".jsp" />

<!-- 获取静态资源不拦截 -->
    <mvc:resources location="/" mapping="/**/*.html" />
    <mvc:resources location="/" mapping="/**/*.js" />
    <mvc:resources location="/" mapping="/**/*.css" />
    <mvc:resources location="/" mapping="/**/*.png" />
    <mvc:resources location="/" mapping="/**/*.gif" />

<!-- mvc内捕获指定异常,重定向页面,其他异常到web.xml中配置error-page -->    
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>                
                <prop key="java.long.Exception">  
                    /jsp/error
                </prop>
            </props>
        </property>
    </bean>
原文地址:https://www.cnblogs.com/Jason-Xiang/p/6677109.html