SpringMVC框架

SpringMVC框架

SpringMVC作为Java EE项目表述层首选开发,对用户的请求做整体处理调度

主要作用:控制层 controller 配置

​ 简化前端请求参数接收(用形参列表)

​ 简化数据响应(用返回值)

围绕前端控制器模式设计的,其中中央 Servlet 和 DispatcherServlet 做整体请求处理调度!

SpringMVC涉及组件理解:

    1. DispatcherServlet :  SpringMVC提供,我们需要使用web.xml配置使其生效,它是整个流程处理的核心,所有请求都经过它的处理和分发![ CEO ]
    2. HandlerMapping :  SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它内部缓存handler(controller方法)和handler访问路径数据,被DispatcherServlet调用,用于查找路径对应的handler![秘书]
    3. HandlerAdapter : SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它可以处理请求参数和处理响应数据数据,每次DispatcherServlet都是通过handlerAdapter间接调用handler,他是handler和DispatcherServlet之间的适配器![经理]
    4. Handler : handler又称处理器,他是Controller类内部的方法简称,是由我们自己定义,用来接收参数,向后调用业务,最终返回响应结果![打工人]
    5. ViewResovler : SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效!视图解析器主要作用简化模版视图页面查找的,但是需要注意,前后端分离项目,后端只返回JSON数据,不返回页面,那就不需要视图解析器!所以,视图解析器,相对其他的组件不是必须的![财务]

大体流程:1.配置类 2.加载类 3.controlle

// 配置类
@Configuration
@ComponentScan(basePackages = "com.attest.controller")
public class MvcConfig {

    // handlerMapping handlerAdapter 加入到ioc容器
    @Bean
    public RequestMappingHandlerMapping handlerMapping(){
        return  new RequestMappingHandlerMapping();
    }

    @Bean
    public RequestMappingHandlerAdapter handlerAdapter(){
        return new RequestMappingHandlerAdapter();
    }

}
// 加载类 ,替代xml的映射文件
// 可以被web项目加载,会初始化ioc容器,会设置dispatcherServlet的地址

public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    // 设置项目对应的配置
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }

    // 配置springmvc内部自带servlet的访问地址
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
// controller
@Controller
public class HelloController {

    //handler -> springmvc / hello   return "hello springmvc"

    // @RequestMapping 对外访问的地址,到handlerMapping注册的注解
    @RequestMapping("/springmvc/hello")
    // @ResponseBody 直接返回字符串给前端,不要通过视图解析器
    @ResponseBody
    public String hello(){
        System.out.println("HelloController.hello");
        //返回给前端
        return "hello springmvc!!";
    }

}

你可能感兴趣的:(Spring,spring,java,后端)