SpringWeb

SpringWeb

概述

springweb是sring框架的一个模块,是基于java-serlvet开发的web 框架。

特点

springweb是 spring 的原生产品,与 IOC 容器等基础设施可无缝对接。

而且基于原生的 Servlet,提供了一个前端控制器 DispatcherServlet ,开发者无须额外开发控制器对象。

可以自动绑定用户输入,并正确地转换数据类型。

代码清新简洁,大幅度提升开发效率。

内部组件化程度高,可插拔式组件即插即用。

性能卓著,尤其适合现代大型、超大型互联网项目要求。

流程

用户发送出请求到前端控制器 DispatcherServlet。

DispatcherServlet 收到请求调用 HandlerMapping(处理器映射器)。

HandlerMapping 找到具体的处理器(可查找 xml 配置或注解配置),生成处 理器对象及处理器拦截器(如果有),再一起返回给 DispatcherServlet。

DispatcherServlet 调用 HandlerAdapter(处理器适配器)。

HandlerAdapter 经过适配调用具体的处理器(Handler/Controller)。 Controller 执行完成向前端响应结果。

释义

前端控制器:

DispatcherServlet,由框架提供,在 web.xml 中配置。

作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理 用户的请求.

处理器映射器:

HandlerMapping,由框架提供。

作用:根据请求的 url 查找 Handler(处理器/Controller)

处理器适配器:

HandlerAdapter,由框架提供。

作用:按照特定规则(HandlerAdapter 要求的规则)去执行 Handler。

处理器:

Handler,需要程序员自行根据需求开发。

注意:编写 Handler 时按照 HandlerAdapter 的要求去做,这样适配器才可 以去正确执行 Handler。

作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。

配置

1、导入所需的包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

2、在 web.xml 文件中配置 DispatcherServlet 配置 spring 核心请求分发器

<servlet>
    <servlet-name>application</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
<!-- 请求映射 -->
<servlet-mapping>
    <servlet-name>application</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

3、再开启springweb注解

<mvc:annotation-driven></mvc:annotation-driven>

常用注解

@RestController 
/*
    用于标记在一个类上,使用它标记的类就是一个 SpringWEB
    控制器类. Spring 配置中指定了自动扫描的 basepackage 后,Spring 会扫描这些包以及子包中的使用了@RestController 标识的类,然后将类加入到 Spring IOC 容器中,注入依赖。
*/
@RequestMapping 
/*
    是一个用来为处理器地址映射的注解,可用于类或方法上. 作用在类上,在整个项目中不能重复,作用在方法上,整个类中不能重复. 
    常用属性 path,value,method. path 和 value 用来定义地址
    method 用来定义请求方式
*/
​
//例:
@RequestMapping(value = "",method = RequestMethod.GET)
@RequestMapping(path= "",method = RequestMethod.POST)

结果接收

1.使用 request 对象接收

@GetMapping(path = "/test")
public voidtset(HttpServletRequest request){
System.out.println(request.getParameter("num"));
}

2.spring 自动封装

2.1 当请求参数名与形参名不一致时,可以使用@RequestParam("")进行参数绑定.

@RequestMapping("/save")
public voidsave(@RequestParam("userName") String name,
@RequestParam("userAge") Integer age){
}

注意:

表单的 name 和控制器的形参并不一致,但是@RequestParam 注解的 value 值必须和表单的 name 保持一致。

@RequestHeader("")用来接收请求中的数据. @RequestHeader("user-agent") 可以用来接收请求头中的数据

使用实体类对象接收

@RequestMapping("/save")x
public void save(@RequestBody Admin admin){
}

日期类型转换

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;

拦截器

springweb 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter), 它主要用于拦截用户请求并作相应的处理。

区别

Spring 中的拦截器与过滤器有着本质的区别,过滤器是 servlet 规范中定义并实 现的,在进入到 servlet 之前截获请求.而拦截器是 spring 中定义的一种拦截机制, 是对进入到处理器的请求进行拦截.

配置

使用拦截器需要注册

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <mvc:exclude-mapping path="/loginCtl/checklogin"/>
        <bean id="demo" class="com.ffyc.ssm.util.DemoInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值