SpringWeb(SpringMVC)

目录

SpringWeb介绍

搭建 SpringWeb


SpringWeb介绍

Spring Web是一个基于 Servlet API 构建的原始 web 框架,用于构建基于MVC模式的Web应用程序。在 web 层框架历经 Strust1,WebWork,Strust2 等诸多产品的历代更选 之后,目前业界普遍选择了 springWeb 作为 Java EE 项目 web 层开发的首选方案。其中DispatcherServlet是一个关键的组件,它负责处理客户端的HTTP请求,并将请求分派到相应的Handler中处理DispatcherServlet是Spring MVC框架的核心组件,它接收客户端的HTTP请求,并将其传递给相应的Handler来处理。

DispatcherServlet的工作原理:

  1. 请求接收:当客户端发送一个HTTP请求时,DispatcherServlet会创建一个请求对象,并从中获取请求的URL路径、HTTP方法、请求头等信息。
  2. 请求映射:DispatcherServlet会使用HandlerMapping实例来根据请求的URL路径和HTTP方法来匹配一个或多个Handler实例。HandlerMapping实例负责将URL路径和HTTP方法映射到具体的Handler实例上。
  3. 请求解析:当一个Handler实例被选中后,DispatcherServlet会调用HandlerAdapter实例来解析请求,获取请求的参数、请求头等信息。
  4. 业务处理:当请求被解析后,Handler实例会调用业务逻辑来处理请求。这个过程通常由Controller类中的方法来完成。
  5. 视图渲染:当业务逻辑处理完成后,Handler实例会调用ViewResolver实例来选择一个合适的视图来生成HTTP响应。ViewResolver实例负责将业务逻辑的结果转化为HTML、XML等格式的视图内容。
  6. 响应生成:当视图被选择后,Handler实例会调用View类中的render方法来生成HTTP响应。这个过程通常包括设置响应头、生成响应内容等操作。
  7. 响应发送:当HTTP响应生成完成后,DispatcherServlet会将响应发送给客户端。这个过程通常由Servlet容器来完成。
SpringWEB 运行流程 SpringWeb(SpringMVC)_第1张图片

搭建 SpringWeb

导入spring-webmvc包

    org.springframework
    spring-webmvc
    5.2.2.RELEASE
在 web.xml 文件中配置 DispatcherServlet
 
    
        application
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring.xml
        
        0
    
    
    
        application
        /
    
开启 springmvc 注解(spring核心配置文件)
    
    

处理器类搭建

  • RestController定义web层的类,Spring 会扫描使用了@RestController 标识的类,然后将类加入到 Spring IOC 容器 中,注入依赖;
  • @RequestMapping 注解是一个用来处理请求地址映射的注解,可用于类或方法上。

常用注解: 

  1. @RequestMapping(path = "/"):post请求和get请求都可以
  2. @GetMapping(path = "/"):用于get请求
  3. @PostMapping(path = "/"):用于post请求
  4. @RequestParam:名字不一致时,RequestParam可以绑定,其中有required默认为false,接收的参数可以为空,required=true时就不能为空,可以继续设置defaultValue作为默认值
  5.  @RequestHeader(“user-Agent”):接收请求头中的内容
  6. @RequestBody:当前端传来是json形式,用@RequestBody来接收
  7. @DateTimeFormat(pattern = "yyyy-MM-dd"):在日期形式的属性前加
//RestController定义web层的类
@RestController
@RequestMapping(path = "/loginCtl")
public class LoginCtl {

    @Autowired
    LoginService loginService;
    @RequestMapping(path = "/test")
    public String Login(){
        return "hello world!!!!!!!";
    }


    //path与value都可以 定义映射地址
    @RequestMapping(path = "/test1")
    public String Login1(){
        return "hello world1";
    }

    //path与value都可以 定义映射地址
    @GetMapping(path = "l")
    public String Login2(HttpServletRequest httpServletRequest){

    String account =  httpServletRequest.getParameter("account");
    String password =  httpServletRequest.getParameter("password");
        System.out.println(account+":"+password);
        return "hello world1";
    }
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date password;

拦截器:

拦截器类

返回 true是离开拦截器,进目标处理器;

返回false是不进处理器

public class DemoInterceptor implements HandlerInterceptor {
    //preHandle预处理
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入到拦截器");
        return true;
     /*
     true是离开拦截器,进目标处理器
     false是不进处理器
      */
    }
}

 注册拦截器

/**:任何地址都进入拦截器,exclude-mapping:不进入拦截器的地址。

    

    
        
            
            
            
            
            
        
    

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