SpringMVC框架001

1.第一个SpringMVC项目

1.需求

用户在页面发起请求,请求交给spring mvc控制器对象,并显示请求的处理结果(在页面显示欢迎语句)

2.实现步骤

  1. 新建web maven工程

  2. 加入依赖

  3. 重点:在web.xml张注册springmvc框架的核心对象DispatcherServlet

    • DispatcherServlet叫做中央调度器,是一个servlet,他的父类是继承HttpServlet
    • DispatcherServlet页叫做前端页面控制器(front controller)
    • DispatcherServlet负责接收用户提交的请求,调用其他的控制器对象,并把请求处理结果显示给用户
  4. 创建一个发起请求的页面 index.jsp

  5. 创建控制器类

    • 在类的上面加入@Controller注解,创建对象,并放到springmvc容器中
    • 在类的导航面要加入RequestMapping注解
  6. 创建一个作为结果的jsp,显示请求结果

  7. 创建springmvc配置文件(spring的配置文件一样)

    • 声明组件扫描器,指定@Controller注解所在的包名
    • 声明视图解析器,帮助处理试图的

2.SpringMVC请求处理流程

  1. 发起some请求
  2. tomcat(web.xml --url --pattern 知道 / 的请求发送给 DispatcherServlet
  3. DispatcherServlet(根据springmvc-servlet.xml配置知道 some 对应 MyController里的方法
  4. DispatcherServlet 把请求进行转发给MyController里的方法
  5. 框架执行 该方法后,把得到的ModelAndView 进行处理,转发到show.jsp

some请求—》DispatcherServlet --》MyController–》执行方法 --》返回ModelAndView

3.SpringMVC执行过程源代码分析

  1. tomcat启动创建容器的过程

    通过load - on -start标签指定的1,创建DispatcherServlet对象

    DispatcherServlet 他的父类是继承 HttpServlet 的,他是一个Servlet,在被创建时,会执行 init()方法

    在init()方法中会执行 getServletContext().setAttribute(ket,ctx)

    上面创建容器的作用:创建@controller注解所在对象,创建MyController对象,这个对象放到springmvc容器中,容器是map

    类似于 map.put(“myController”,myController对象);

  2. 执行servlet的service()

    • protected void service(HttpServletRequest request,HttpServletResponse response)

    • protected void doservice(HttpServletRequest request,HttpServletResponse response)

    • doDispatch(request,response){

      ​ 调用MyController 的 .dosome()方法

      }

4.配置视图解析器

/WEB-INF/下是受保护的

 <!--帮助开发人员设置属兔文件路径配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀:视图文件的路径-->
        <property name="prefix" value="/WEB-INF/view/"/>
        <!--后缀:视图文件的拓展名-->
        <property name="suffix" value=".jsp"/>
    </bean>

5.RequestMapping详解

  1. 可以放在方法上面

    value是数组,可以有多个值

  2. 可以放到类上

    value是所有请求地址公共部分,也叫模块名称,更快速的修改所属路径

    http://localhost:8080/SpringMVC/test/some

    http://localhost:8080/SpringMVC/test/other

    可以将公用部分 /test/ 设置为value

  3. 请求映射

    属性method,表示请求方式,他的值RequestMethod类枚举

    get方式:RequestMethod.GET

    post方式:RequestMethod.POST

  4. 接收参数

    • HttpServletRequest

    • HttpServletResponse

    • HttpSession

      request.getParameter(“key”);

    • 请求中所带的参数

      1. 逐个接收

        方法参数名与表单的name保持一致即接收

      2. 使用框架进行接收

        • String name = request.getParameter(“name”);
        • springmvc框架通过 DispatcherServlet 调用 MyController的方法
        • 调用方法时,按名称对应,把接收的参数赋值给形参

      5.post请求中文乱码问题,get无乱码

      需要使用过滤器处理

      过滤器可以自定义,也可以使用框架提供的CharacterEncodingFilter

      在web.xml中做如下配置

       <filter>
              <filter-name>characterEncodingFilter</filter-name>
              <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
              <init-param>
                  <param-name>encoding</param-name>
                  <param-value>utf-8</param-value>
              </init-param>
              <init-param>
                  <param-name>forceRequestEncoding</param-name>
                  <param-value>true</param-value>
              </init-param>
              <init-param>
                  <param-name>forceResponseEncoding</param-name>
                  <param-value>true</param-value>
              </init-param>
          </filter>
          <filter-mapping>
              <filter-name>characterEncodingFilter</filter-name>
              <url-pattern>/* </url-pattern>
          </filter-mapping>
      
characterEncodingFilter /* ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值