zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    P2572 [SCOI2010]序列操作
    P2787 语文1(chin1)- 理理思维
    P1835 素数密度_NOI导刊2011提高(04)
    P3942 将军令
    P1273 有线电视网
    U45490 还没想好名字的题Ⅱ
    U40620 还没想好名字的题
    P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚
    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
    T51071 Tony到死都想不出の数学题
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6677109.html
Copyright © 2011-2022 走看看