Spring--4

SpringWeb

概念

是Spring框架的一个模块,基于Servlet的一个原始Web框架。

SpringWEB 运行流程

描述:前端用户请求发送的后端以后,先经过前端控制器DispatcherServlet(再次之前也可能有过滤器的存在),经过前端控制器解析后,到达处理器映射器HandlerMapping,经过拦截器找对对应的处理器适配器HandlerAdapter区执行自定义处理器Handler来响应前端。
前端控制管理器:接收前端发送的所有请求,调用HandlerMapping解析请求中的地址以及当HandlerMapping解析出有对应的HandlerAdapter时,调用HandlerAdapter去处理请求
处理器映射器:解析请求中的地址,是否有对应的处理器,如果有调用时有拦截器,则进行拦截器相应处理。
拦截器:经过处理器映射器之后可能会进入拦截器,拦截器可以决定请求是否进入处理器适配器
处理器适配器:按照特定规则去执行handler
自定义处理器Handler: 自己写的,处理请求响应数据。

Web搭建

1.导入依赖

XML 复制代码
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>

2.配置DispatcherServlet

配置Spring核心分发器(web.xml)

XML 复制代码
<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.开启springMVC注解

XML 复制代码
<mvc:annotation-driven></mvc:annotation-driven>

获取请求数据

后三种参数名不一致会报错

1. 使用 request 对象接收(HttpServletRequest request)

request.getParameter

2.Spring自动封装

String userName,Integer age

3.参数不一致使用别名

@RequestParam("userName") String name

@RequestParam 注解还有两个属性:

  1. required:参数是否必须。代表页面是否必须传递该参数。如果该值为

true,但没有传递参数,会报错。

  1. defaultValue:默认值。代表如果页面没有传递该参数,使用 defaultValue

的值代替。

@RequestParam(value = "userName", required = true,defaultValue = "jim") String name

4.直接使用对象接收

补充

格式化时间

@DateTimeFormat(pattern = "yyyy-MM-dd")

返回JSON

导入依赖

添加标签@ResponseBody

中文乱码

web.xml

XML 复制代码
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

拦截器

类似于 Servlet 中的过滤器(Filter), 它主要用于拦截用户请求并作相应的处理。
过滤器在进去sservlet之前,拦截器在进去处理器后拦截

预处理方法介绍

预处理方法,实现处理器方法的预处理,就是在处理器方法执行之前这个方法会
被执行,相当于拦截了处理器方法,框架会传递请求和响应对象给该方法,第三
个参数为被拦截的处理器。如果 preHandle 方法返回 true 表示继续流程(如调
用下一个拦截器或处理器方法),返回 false 表示流程中断,不会继续调用其他
的拦截器或处理器方法,此时我们需要通过 response 来产生响应;

实现流程

1.创建一个拦截器类实现HandlerInterceptor接口,重写preHandle方法
2.配置拦截器

spring.xml

XML 复制代码
    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/loginCtl/login"/>
            <mvc:exclude-mapping path="/loginCtl/test2"/>
            <bean id="demo" class="com.ffyc.ssm.util.DemoInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
相关推荐
Lojarro30 分钟前
【Spring】Spring框架之-AOP
java·mysql·spring
zjw_rp1 小时前
Spring-AOP
java·后端·spring·spring-aop
撒呼呼4 小时前
# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
数据库·spring boot·spring·mvc·springboot
天使day5 小时前
SpringMVC
java·spring·java-ee
yaosheng_VALVE6 小时前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king6 小时前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
壹佰大多7 小时前
【spring-cloud-gateway总结】
java·spring·gateway
CodeChampion7 小时前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis
秋意钟7 小时前
Spring框架处理时间类型格式
java·后端·spring
科马10 小时前
【Redis】缓存
数据库·redis·spring·缓存