【SpringMVC】02 流程分析

2021-01-28 10:15

阅读:477

标签:contex   post   编写   creat   直接   就是   dap   mvc   坐标   

首先是web.xml配置SpringMVC最核心的东西,DispatcherServlet

也称为【请求分发器】【前端控制器】【分发Servlet】

 
    servlet>
        servlet-name>springmvcservlet-name>
        servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        init-param>
            param-name>contextConfigLocationparam-name>
            param-value>classpath:SpringMVC-Servlet.xmlparam-value>
        init-param>
        
        load-on-startup>1load-on-startup>
    servlet>

    
    
    servlet-mapping>
        servlet-name>springmvcservlet-name>
        url-pattern>/url-pattern>
    servlet-mapping>

 

这个Servlet必须是第一个加载出来的,因为这个DispatcherServlet是一个统一的调配分发中心

所以才要设置启动级别为最高级 


        load-on-startup>1load-on-startup>

 

映射配置不要写/*是因为,我们在Bean容器配置了一个视图解析器【ViewResolver】

写/只会匹配请求,不会触发视图解析处理

写上/*将会把所有的请求都会触发视图解析器处理

    servlet-mapping>
        servlet-name>springmvcservlet-name>
        url-pattern>/url-pattern>
    servlet-mapping>

 

服务启动的同时需要加载Spring容器文件

参数名称必须是容器配置坐标

【classpath:】表示工程内当前路径

这个路径指向了我们的容器位置,因为Maven是直接放在resources的

生成工程目录直接在当前目录下,

技术图片

所以这里就能直接写容器文件的名称即可


        init-param>
            param-name>contextConfigLocationparam-name>
            param-value>classpath:SpringMVC-Servlet.xmlparam-value>
        init-param>

 

这个容器里面注册了我们的

【视图解析器】【BeanID处理器映射】【简易控制层适配器】

和我们自己编写的【控制器实现类】

xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    
    bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        
        property name="prefix" value="/WEB-INF/jsp/"/>
        
        property name="suffix" value=".jsp"/>
    bean>

    
    bean id="/hello" class="cn.dai.controller.HelloController"/>
beans>

 

然后我们就像写Servlet一样去编写Controller

起初我们需要继承httpServlet重写GET&POST方法

现在我们只需实现Controller重写handleRequest方法

ModelAndView对象同时处理数据携带和转发视图

addObject() 添加数据

setViewName设置要转发的视图名,

然后视图解析器来处理视图名,拼接URL并转发

package cn.dai.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author ArkD42
 * @file SpringMVC
 * @create 2020 - 05 - 06 - 18:13
 */
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();

        //封装对象,放在ModelAndView中。Model
        mv.addObject("msg","HelloSpringMVC!");
        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
        return mv;
    }
}

 

最后在容器中注册这个Controller,要注意的一点是

这个BeanID直接就是我们这个访问路径的设置


    bean id="/hello" class="cn.dai.controller.HelloController"/>

 

技术图片

【SpringMVC】02 流程分析

标签:contex   post   编写   creat   直接   就是   dap   mvc   坐标   

原文地址:https://www.cnblogs.com/mindzone/p/12838713.html


评论


亲,登录后才可以留言!