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>
  • 相关阅读:
    《当程序员的那些狗日日子》(六)继续熬夜学习的日子
    《当程序员的那些狗日日子》(四)喘过气来了
    《当程序员的那些狗日日子》(二)走上不归路
    《当程序员的那些狗日日子》(八)床上等你
    《当程序员的那些狗日日子》(一)毕业后的徘徊
    wince定时拍照功能(转)
    Excel公式找出某一列中是否有某值
    2010年到10月的流水帐
    不错的windows phone的博客
    将同一个表中的一个域更新到另外一个域的SQL文
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6677109.html
Copyright © 2011-2022 走看看