当前位置: 首页 > article >正文

Spring--4

SpringWeb

概念

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

SpringWEB 运行流程

描述:前端用户请求发送的后端以后,先经过前端控制器DispatcherServlet(再次之前也可能有过滤器的存在),经过前端控制器解析后,到达处理器映射器HandlerMapping,经过拦截器找对对应的处理器适配器HandlerAdapter区执行自定义处理器Handler来响应前端。

前端控制管理器:接收前端发送的所有请求,调用HandlerMapping解析请求中的地址以及当HandlerMapping解析出有对应的HandlerAdapter时,调用HandlerAdapter去处理请求

处理器映射器:解析请求中的地址,是否有对应的处理器,如果有调用时有拦截器,则进行拦截器相应处理。

拦截器:经过处理器映射器之后可能会进入拦截器,拦截器可以决定请求是否进入处理器适配器

处理器适配器:按照特定规则去执行handler

自定义处理器Handler: 自己写的,处理请求响应数据。

Web搭建

1.导入依赖 

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

2.配置DispatcherServlet

配置Spring核心分发器(web.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注解

<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,但没有传递参数,会报错。

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

的值代替。

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

4.直接使用对象接收

补充

格式化时间

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

返回JSON

 导入依赖

添加标签@ResponseBody

中文乱码

web.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

    <!--配置拦截器-->
    <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>

 


http://www.kler.cn/news/364156.html

相关文章:

  • Jackson Json序列化反序列化的两个坑
  • Bean的实例化方式
  • 京准电钟HR-901GB双GPS北斗卫星时钟服务器
  • 7. 配置
  • window7虚拟机VMware与主机共享文件
  • 程序员:数字时代的先锋
  • C++与现代开发实践第三节:多线程与并发编程
  • 充电器插拔引起电量跳变怎么办?
  • FPGA开发verilog语法基础1
  • springboot033小徐影城管理系统(论文+源码)_kaic
  • 【Jenkins】解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题
  • 使用 Python 解析火狐浏览器的 SQLite3 数据库
  • C++,STL 047(24.10.24)
  • Mysql-count(1)、count(*)和count(列名)的区别?
  • Kafka Tool(Offset Explorer)在windows下配置访问kerberos认证Kafka
  • 【Ubuntu20.04 Visual Studio Code安装】【VSCODE】
  • 相对定位和绝对定位,使得图片在中间 ( html css )
  • Codeforces Round 981(Div. 3)
  • 【开源免费】基于SpringBoot+Vue.JS校园美食分享平台 (JAVA毕业设计)
  • [Python学习日记-53] Python 中的正则表达式模块 —— re
  • docker国内镜像仓库地址
  • Linux Shell 实现一键部署mariadb11.6
  • Hugging Face HUGS 加快了基于开放模型的AI应用的开发
  • 相机外参与相机位姿深度理解
  • 115页PPT华为管理变革:制度创新与文化塑造的核心实践
  • <大厂实战场景> ~ Flutter鸿蒙next 解析后端返回的 HTML 数据详解