springMVC框架学习 请求与响应流程、设置内部资源解析器、注解

1、springMVC的执行流程:

  • 用户申请Tomcat处理web应用请求前端控制器DispatcherServlet。
  • DispatcherServlet收到请求并调用HanderMapping处理器映射器。
  • 处理器映射器找到具体的处理器(可以根据xml配置、注解查找),生成处理对象及处理器拦截器(如果有就生成)一并返回给前端控制器。
  • 前端控制器调用HanderAdapter处理器适配器。
  • 处理器适配器经过适配电影具体的处理器(通常是我们设置的controller层,也叫后端控制器)。
  • controller完成任务返回modelandview。
  • 处理器适配器将controller执行结果modelandview传给viewReslover视图解析器。
  • 视图解析器解析后返回具体view。
  • 由modelandview返回给Tomcat进行视图渲染返回客户

这就是springMVC执行的过程。

2、spring 新注解@RequestMapping

  • 作用:用于建立请求URL和处理请求方法之间的对应关系
  • 位置:可以放在类上,也可以放在方法上。注意路径的变化。
  • 属性:value:设置的静态路由的值,也叫URL与path的作用一样。method:指定请求方式,默认是GET请求方式。params:用于指定带参数访问的条件。

3、内部资源解析器

  • 解析内部的资源,可以添加解析bean,用于识别路径,指定添加文件后缀。
  • 详见代码的使用。

4、代码基于昨天的代码框架所以没用到的就不发了,防止水文现象,由于我执行的页面截图都不见了,所以不同语句的不同结果还是测试一下比较好。

  • UserController.java
  • package com.hlc.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    //springMVC利用注解来设置bean的方法比较快捷,而分层也是MVC最大的亮点,关键在web.xml文件里的配置才是最重要的
    @Controller
    @RequestMapping("/User")
    public class UserController {
    //这个注解的作用是请求映射,设置的/hlc是一个自己设置的静态路由,
    // 当在端口访问时可以执行这个路由下的方法
        @RequestMapping("/hlc")
    // 方法默认get的可以直接获取映射,但是我在后面加入了带参数访问,在访问路由时必须带上username这个参数
    //   @RequestMapping(value = "/hlc",method = RequestMethod.GET,params = {"username"})
        public String jump(){
    //  返回一个jump.jsp页面试一下静态页面的跳转
    //  注意当我在上面的类加入了访问映射时由于返回的是/User/jump.jsp所以访问失败,只有当我加入/才能找到,具体看截图对比
    //  forward:就是转发的行为,可以观察截图,端口访问地址其实没有变化
    //        return "forward:/jump.jsp";
    
    //  如果改为redirect:重定向的行为,去访问就是jsp页面的地址了
    //        return "redirect:/jump.jsp";
    
    //        有没有觉得加后缀jsp很烦人?我们可以在xml文件里设置内部资源视图解析器
            return "/jump";
        }
    }
    
  • spring-mvc.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">
    <!--前几次测试过context命名空间去扫描组件以及读取资源文件的方法-->
        <context:component-scan base-package="com.hlc.controller"/>
    <!--    这里的作用就是在com.hlc全部扫描,但是子标签注明只扫描注解controller组件-->
    <!--   <context:component-scan base-package="com.hlc">-->
    <!--       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>-->
    <!--   </context:component-scan>-->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--        前缀解析我们测试没用到-->
    <!--        <property name="prefix" value="/xxx"></property>-->
    <!--        后缀解析-->
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

    最近迷迷瞪瞪的,估计我还是得自己先做一个小项目出来加深理解才行,先做在理解应该会好一些,过几天再发学生管理系统小项目的博客。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForestSpringH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值