SpringWeb

目录

SpringWeb介绍

SpringWeb运行流程

搭建SpringWeb

处理器类

1.处理器类获取请求数据

2.处理器方法接收参数

拦截器


SpringWeb介绍

SpringWeb是Spring框架中的一个模块,SpringWeb 是Spring为Web层开发提供的一整套完备的解决方案。

SpringWeb运行流程

1.用户从前端发送请求到DispatcherServlet(分配器服务程序)

2.DispatcherServlet调用HandlerMapping(处理器映射器),HandlerMapping根据请求的URL寻找相对的处理器,然后向DispatcherServlet发送响应信息。但是中间会经过拦截器,如果说DispatcherServlet并没有找到相对的处理器,则会被拦截,不再有后续操作。反之DispatcherServlet则调用找到的处理器。

3.DispatcherServlet 调用 HandlerAdapter(处理器适配器)

4.HandlerAdapter适配后调用具体的处理器。

5.Handler实现功能。

6.Controller 执行完成向前端响应结果。

其中拦截器和自定义处理器需要我们程序员自己去编写,其他的内容SpringWeb框架已经为我们编写好了。

搭建SpringWeb

1.导入SpringWeb框架的jar包

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

2.在web.xml中配置DispatcherServlet(分配器服务程序)

<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.在Spring.web中开启SpringWeb注解

<!--开启springWeb注解-->
<mvc:annotation-driven></mvc:annotation-driven>

处理器类

@RestController可以用在类上面,被此标签打上的类就会成为SpringWeb控制类,我们一般将其写在我们自定义的处理器上。Spring在对指定包进行扫描的时候,如果扫描到有该标签的类则会SpringIOC容器中,会在需要时进行调用。

我们对处理器类设置调用地址,并对其底下的方法也设置地址。

1.处理器类获取请求数据

1.RequestMapping(path=“*********”)

此种注解会让path中的地址被调用时接受各种类型的请求。

2.GetMapping(path=“*********”)

此种注解会让path中的地址被调用时只接受get请求

3.PostMapping(path=“*********”)

此种注解会让path中的地址被调用时只接受Post请求

2.处理器方法接收参数

1.自定义参数接收

这里要求自定义参数名和前端发来的参数名一致

如果前段数据名称和对象中属性名称不一致,我们可以使用@RequestParam("")进行参数绑定。

表单的发来adminAccount和控制器中的形参并不一致,但是@RequestParam注解的value值和表单的adminAccounr保持一致仍然可以将表单的adminAccount映射到形参的account上。

2.使用request和response

3.使用一个对象接收

还是确保对象中的属性和前端传来的数据名一致。Spring会将前端的数据自动映射到形参对象中

4.特殊情况

4.1当前端发来一个Token字符串

我们需要加入RequestBody标签来将前端提交的json格式数据,将json格式封装到对象中。

我们需要导入相关的jar包

<!--jackson-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.2</version>
</dependency>

4.2前端传来一个日期

当前端传来一个日期,我们想将其转为我们需要的日期格式

使用@DateTimeFormat(pattern="yyyy-MM-dd")来限定我们需要的格式

4.3向前端返回一个json格式的数据

我们不需要进行其他额外操作,只肖返回一个对象即可,SpringWeb框架会自动将该对象转化成json类型的字符串。

拦截器

Spring中的拦截器有点类似于Servlet中的过滤器,然其作用位置和功能上还是有一定差异

过滤器作用在请求进入服务器之前,而拦截器是作用在处理器映射器响应给前端控制器的过程中。

拦截器实现

定义一个类实现拦截器接口HandlerInterceptor,重写preHandle方法,如果preHandle方法返回true表示继续流程(即调用下一个拦截器或处理器方法),返回false表示流程中断,不会继续调用其他的拦截器或处理器方法

1.添加拦截器依赖的jar包

<!--servlet-->
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>4.0.1</version>
 <scope>provided</scope>
 </dependency>

2.注册拦截器

<!--配置拦截器-->

<mvc:interceptors>

<mvc:interceptor> <mvc:mapping path="/**/"/><!--配置进入拦截器-->

<mvc:exclude-mapping path="/loginCtl/login"/><!--配置不进入拦截器-->

<bean id="TokenInterceptor" class="com.wjc.ssm.interceptor.TokenInterceptor"></bean><!--拦截器实现类-->

</mvc:interceptor>

</mvc:interceptors>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值