SpringMVC框架

1.MVC架构(SSH框架之一)
MVC是model、view、controller的缩写。分别代表web应用程序中的3种职能。
在这里插入图片描述
2.springmvc

优化页面跳转、优化参数获取、封装了基于反射的接口访问、不需要去写BaseServlet,也不需要在web.xml中配置控制器。
Spring framework是我们平时说的Spring框架,是Spring全家桶内其他框架的核心和基础。
springMVC工作原理

Spring MVC 的工作原理/流程如下:
1)客户端请求提交到调度器DispatcherServlet;
2)由 DispatcherServlet调度器解析URL,调用URL对应的映射处理器HandlerMapping,获得处理请求的Controller和对应的拦截器Interceptor;
3)DispatcherServlet 将请求提交到控制器Controller;
4)Controller调用业务逻辑(service层和dao层)处理后,向DispatcherServlet返回ModelAndView;
5)DispatcherServlet 根据modleAndView获取对应的视图解析器ViewResolver ,找到 ModelAndView 指定的视图view;
6)ViewResolver将数据渲染到视图;
7)响应视图显示到客户端;

3.Controller:
1)控制器,接受来自dispatcherServlet转发的HTTP请求,处理请求
2)所有能够通过HTTP请求访问到的controller方法,称为接口
3)调度器DispacherServlet是springMVC的入口
4)tomcat容器扫描控制器类,指定要扫描的包路径,并扫描所有被@controller注解声明的类
5)容器完成所有被扫描到的控制器类的实例化
<context:component-scan base-package="com.st.controller" />

4.拦截器Interceptor
4-1 拦截器Interceptor:对于进入到controller的请求进行预处理、后处理
过滤器Filter预处理。

    <!--配置拦截器-->
    <mvc:interceptors>
        <!--配置一个全局拦截器,拦截所有请求-->
        <!--<bean class="interceptor.UserInterceptor"/>-->
        <mvc:interceptor>
            <!--配置拦截器的请求路径-->
            <!--/*智能拦截一层请求,/**可以拦截多层请求-->

            <mvc:mapping path="/def/*" />
            <!--定义拦截器类的包路径-->
            <bean class="com.st.interceptor.DefInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

4-2 拦截器Interceptor几个方法:
1.preHandle方法:在控制器controller处理请求之前被调用
1)该方法返回值是boolean类型,当返回false时,表示请求结束,后续的interceptor和controller都不会再执行
2)当返回值为true时就会继续调用下一个interceptor的prehandle方法。
3)如果请求到达最后一个interceptor,就会调用当前请求的controller方法。
2.postHandle方法:
在controller处理请求结束之后,在dispatcherServlet进行视图数据渲染之前,调用该方法。
可以在这里对Controller处理之后的ModelAndView对象进行操作
3.afterCompletion
在DispatcherServlet渲染了对应的视图之后执行,这个方法的主要作用是用于进行资源清理工作
拦截器方法调用顺序
5.ModelAndView
作用:添加数据、添加跳转页面名称。

   public ModelAndView test3(){
        ModelAndView mv = new ModelAndView();
        //添加数据
        mv.addObject("name","思途");
        //添加跳转页面名称
        mv.setViewName("welcome");
        return  mv;
    }
  //  ModelAndView交给DispatcherServlet处理,DispatcherServlet去加载配置文件中的视图解析器,拼接前后缀,形成文件路径。
    
        <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <!--前缀-->
        <property name="prefix" value="/page/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

6.封装工作单元:
如果客户端请求中的参数很多时,为了避免controller方法参数列表过长,可以用一个类的对象接收全部参数。
但是前提是,要求类的属性名和请求中的参数名相同。

Modelpublic class User {//User类
    private String name;
    private int age;
    private int id;
    public User(){
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    ...........................
  }
@Controller
  public String test(User user){//类对象为参数
        System.out.println(user.getName());
        return "你好 hello spring mvc";//向浏览器返回字符串
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值