2025年springmvc aop实现日志管理(springmvc日志级别在哪配置)

springmvc aop实现日志管理(springmvc日志级别在哪配置)文章目录 SpringMVC 一 环境准备 1 建立 maven 下的 web 工程 2 在 pom xml 加入相关 jar 包依赖 3 创建 web 工程完成目录 4 在 web xml 中配置 DispatcherSe 类 5 在 resources 目录下创建 springMVC 的 xml 文件 6 配置 tomcat 服务器 二 正式进入 SpringMVC 的世界 1

大家好,我是讯享网,很高兴认识大家。



文章目录

  • SpringMVC
  • 一.环境准备
  • 1.建立maven下的web工程
  • 2.在pom.xml加入相关jar包依赖
  • 3.创建web工程完成目录
  • 4.在web.xml中配置DispatcherServlet类
  • 5.在resources目录下创建springMVC的xml文件
  • 6.配置tomcat服务器
  • 二.正式进入SpringMVC的世界
  • 1.SpringMVC下的第一个helloWorld工程
  • 2.SpringMVC中最强大的注解:@RequestMapping
  • 2.1RequestMapping的属性
  • 3.SpringMVC中@PathVariable注解的使用
  • 3.1说明
  • 3.2获取不同图书实例,结合Rest理解
  • 4.SpringMVC中Rest风格的URL地址
  • 4.1说明
  • 4.2怎样表示对一个资源的增删改查用请求方式来区分
  • 5.SpringMVC中获取请求参数
  • 5.1最简单的获取方法
  • 5.2请求参数的注解
  • 5.3请求参数为一个pojo对象
  • 6.SpringMVC中发送响应参数(Map、Model和ModelMap这三者的关系图)
  • 6.1获取方式
  • 6.2简单获取Map、Model、ModelMap中的value
  • 6.3方法的返回值可以变为ModelAndView类型
  • 6.3.1使用说明
  • 6.3.2具体应用
  • 6.3.3运行结果
  • 6.4SpringMVC提供了一种可以临时给Session域中保存数据的方式
  • 6.4.1使用说明
  • 6.5ModelAttribute注解;
  • 6.5.1使用说明
  • 6.5.2具体用法
  • 7.SpringMVC中视图解析
  • 7.1说明
  • 7.2视图解析流程
  • 7.3视图国际化
  • 7.3.1说明
  • 7.4问题
  • 8.SpringMVC中数据校验
  • 8.1说明
  • 8.2数据校验流程图
  • 8.3数据校验注解
  • 8.3.1 JSR 303
  • 8.3.2 Hibernate Validator
  • 9.mvc:annotation-driven标签的解析
  • 9.1请求有问题时
  • 9.SpringMVC中数据格式化
  • 9.1日期格式化
  • 9.1.1注解
  • 9.1.2注解属性
  • 9.1.3注意
  • 9.2数据格式化
  • 9.2.1注解
  • 9.2.2注解属性
  • 9.2.3注意
  • 10.SpringMVC中数据国际化
  • 10.1说明
  • 10.2步骤
  • 11.SpringMVC中文件上传
  • 11.1配置
  • 11.2具体实现
  • 12.SpringMVC拦截器
  • 12.1说明
  • 12.2单拦截器流程
  • 12.3多拦截器流程
  • 13.SpringMVC国际化
  • 13.1说明
  • 13.2不同方法前都要的步骤
  • 13.3自定义区域信息解析器 (LocaleResolver)
  • 13.5显示结果
  • 13.4出现的问题
  • 13.SpringMVC异常处理
  • 13.1说明
  • 13.2异常注解
  • 13.3具体实现
  • 三.SpringMVC下WEB的三大组件的各种配置
  • 1.HiddenHttpMethodFilter解决从页面上只能发起两种请求,GET、POST
  • 1.1说明
  • 1.2在web.xml中配置HiddenHttpMethodFilter
  • 1.3如何发其他形式请求?
  • 1.4出现的问题
  • 2.提交数据乱码问题
  • 2.1国际化出现乱码问题
  • 四.SpringMVC中AJAX与JSON
  • 1.AJAX
  • 说明&步骤
  • 五.SpringMVC执行流程

1.建立maven下的web工程

如果出现Cannot resolve plugin org.apache.maven.xxxxx等类似在pom.xml中出现的错误,请到本地仓库下删除相应jar包的文件夹,然后点击刷新

2.在pom.xml加入相关jar包依赖

3.创建web工程完成目录

  • 在main目录下创建java与resources
    注意:如果这里的java不是蓝色的,需要自己去目录结构里面设置

4.在web.xml中配置DispatcherServlet类

  • 说明:这个类DispatcherServlet就是区别与普通MVC的最大特征,这是一个前置的控制器,会比servlet更早的拦截下请求,然后进行分发处理提高效率。

5.在resources目录下创建springMVC的xml文件

  • 切记一定要配置扫描全部包注解的标签

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring
讯享网

6.配置tomcat服务器

1.SpringMVC下的第一个helloWorld工程

  • Java类的书写
  • index.jsp的书写
  • 配置springMVC的xml文件在标签下

2.SpringMVC中最强大的注解:@RequestMapping

2.1RequestMapping的属性
  1. value及path(默认):
    作用:
  1. method:限定请求方式
    据我们所知HTTP协议中请求方式有:
  1. params:规定请求参数
    param1: 表示请求必须包含名为 param1 的请求参数

!param1: 表示请求不能包含名为 param1 的请求参数

param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1

{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1

  1. headers:规定请求头;也和params一样能写简单的表达式
  1. consumes:只接受内容类型是哪种的请求,规定请求头中的Content-Type
  2. produces:告诉浏览器返回的内容类型是什么,给响应头中加上Content-Type:text/html;charset=utf-8

3.SpringMVC中@PathVariable注解的使用

3.1说明

用来接收占位符的值,以达到显示不同的种类

3.2获取不同图书实例,结合Rest理解

4.SpringMVC中Rest风格的URL地址

4.1说明

系统希望以非常简洁的URL地址来发请求;

4.2怎样表示对一个资源的增删改查用请求方式来区分
  • 传递的URL类似于这样:
    /getBook?id=1 :查询图书
    /deleteBook?id=1:删除1号图书
    /updateBook?id=1:更新1号图书
    /addBook :添加图书
  • Rest推荐;
    url地址这么起名; /资源名/资源标识符
    /book/1 :GET—–查询1号图书
    /book/1 :PUT——更新1号图书
    /book/1 :DELETE—–删除1号图书
    /book :POST—–添加图书
    系统的URL地址就这么来设计即可;
    简洁的URL提交请求,以请求方式区分对资源操作;
  • 问题:
    从页面上只能发起两种请求,GET、POST;
    其他的请求方式没法使用;

5.SpringMVC中获取请求参数

5.1最简单的获取方法

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_02

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_MVC_03

5.2请求参数的注解
  • @RequestParam:获取请求参数的;参数默认是必须带的;
    = request.getParameter(“user”)
  • @RequestHeader:获取请求头中某个key的值;
    = request.getHeader(“User-Agent”);
  • @CookieValue:获取某个cookie的值;

这三个注解都有三个属性

  • value():指定要获取的参数的key
  • required():这个参数是否必须的
  • defaultValue():默认值。没带默认是null;
5.3请求参数为一个pojo对象

SpringMVC会自动的为这个POJO进行赋值

  1. 将POJO中的每一个属性,从request参数中尝试获取出来,并封装即可;
  2. 还可以级联封装;属性的属性
  3. 请求参数的参数名和对象中的属性名一一对应就行

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_04

6.SpringMVC中发送响应参数(Map、Model和ModelMap这三者的关系图)

6.1获取方式
  1. 可以在方法处传入Map、或者Mode(接口)或者ModelMap。给这些参数里面保存的所有数据都会放在请求域(request)中。Map、或者Mode(接口)或者ModelMap这三者的关系图如下:
  2. 方法的返回值可以变为ModelAndView类型,既包含视图信息(页面地址)也包含模型数据(给页面带的数据;而且数据是放在请求域中;
    request、session、application;
  3. SpringMVC提供了一种可以临时给Session域中保存数据的方式;
    使用一个注解 @SessionAttributes(只能标在类上)
  4. ModelAttribute注解;
6.2简单获取Map、Model、ModelMap中的value

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_springmvc_05

6.3方法的返回值可以变为ModelAndView类型
6.3.1使用说明

既包含视图信息(页面地址)也包含模型数据(给页面带的数据);

6.3.2具体应用
6.3.3运行结果

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_MVC_06

6.4SpringMVC提供了一种可以临时给Session域中保存数据的方式
6.4.1使用说明

如果不想引发异常(在隐含模型中找不到对象信息,就会自动去session域中找,而session此时可能也没有
所以这个异常也就出现了)。
我们需要注意两点:

  • 隐含模型中有@SessionAttributes标注的属性
  • 如果隐含模型中找不到,那么一定要保证session域中要有

给session中放数据请使用原生API;

6.5ModelAttribute注解;
6.5.1使用说明

当我们进行全字段的数据库更新操作时,例如更新书籍的操作,据我们所知,在更新书籍时是不可能让我们修改书名和作者的。
但由于是全字段操作,SpringMVC会帮助我们创建一个新的JavaBean对象,然后将全字段的信息传入进去,但由于书名和作者我们无法修改,所以我们不会设置这两项的值。
但此时这个新对象,由于我们未传入数据,所以这两项的值为null。然后会覆盖掉数据库里面的信息,这是我们不希望看到的。

这个ModelAttribute的注解的作用是不让SpringMVC使用自己创建的新对象,而是直接使用数据库中的那个已经封装好的对象来供我们修改,这样就不会对关键数据造成影响

这只是ModelAttribute的其中之一的用处

6.5.2具体用法
  • ModelAttribute:
  • 通过map储存到的人信息,取出来然后对个别信息进行修改。在提交,这样就不会把源数据的关键信息覆盖掉
  • 使用一个方法把一个map保存到底层BlindingAwareModelMap中去(代替从数据库取pojo对象的过程),然后全局的ModelAttribute都能使用,这个过程称为在隐含模型中取对象信息

7.SpringMVC中视图解析

7.1说明

视图相关的执行途径都是接口,提供超高定制化的view处理,自己根据里面的抽象方法可定制来完成自己的需求

一句话:
视图解析器(ViewResolver)只是为了得到视图对象;视图对象才能真正的转发(将模型数据全部放在请求域中)或者重定向到页面
视图对象才能真正的渲染视图;

7.2视图解析流程

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_07

7.3视图国际化
7.3.1说明
7.4问题

8.SpringMVC中数据校验

8.1说明

数据校验:我们提交的数据必须是合法的
前端校验:js+正则表达式;
后端校验:由于浏览器可以禁用js,所以对于关键数据只进行前端校验是不行的,我们必须前端+后端

8.2数据校验流程图

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_请求参数_08

8.3数据校验注解
8.3.1 JSR 303

这是一个提供校验的的规范,具体实现的其规范的是一个第三方的框架,名为:Hibernate Validator

8.3.2 Hibernate Validator
  1. 加入jar包
  2. 注解使用
    对封装对象校验的实例(原生标签显示错误信息的写法也在里面):

在jsp页面做相应配置就可让用户看到自己那个地方有错误

这个框架所支持的注解十分多切强大,建议阅读这个博客了解

Hibernate Validator注解大全

9.mvc:annotation-driven标签的解析

9.1请求有问题时

当初出现问题时会依次配置这两个标签

  • 两个如果能没配,动态资源(@RequestMapping映射的资源)能访问,静态资源(.html,.js,.img)不能访问。
    原因:handlerMap中的DefaultAnnotationHandlerMapping没有保存静态资源映射的请求,
  • 加上<‘mvc:default-servlet-handler/>,不加<‘mvc:annotation-driven/> ,静态资源加载出来,动态资源又加载不出来了。
    原因:DefaultAnnotationHandlerMapping被替代,SimpleUrlHandlerMapping把所有请求都映射给tomcat;
  • 加上<‘mvc:default-servlet-handler/>,和加上<‘mvc:annotation-driven/>;两者皆能访问。
    原因:有SimpleUrlHandlerMapping静态资源没问题,handlerMappings中多出了一个RequestMappingHandlerMapping,所以动态资源可以访问

9.SpringMVC中数据格式化

9.1日期格式化
9.1.1注解
  • @DateTimeFormat()
9.1.2注解属性
  • pattern:规定日期显示的格式,例如:yyyy-MM-dd
9.1.3注意

一旦使用注解配置好后格式,以后的日期格式都要遵从这个

9.2数据格式化
9.2.1注解
  • @NumberFormat()
9.2.2注解属性
  • pattern:规定数据的格式,例如:,,.
9.2.3注意

10.SpringMVC中数据国际化

10.1说明

书接8中的数据校验问题,如果出现错误提示用户那个地方出现问题的信息,对这个信息可以进行国际化显示
但如果没有国际化需求,在每个Hibernate Validator注解中都有一个message属性来直接显示错误信息

10.2步骤
  1. 创建两个properties文件专门存放错误信息的国际化配置(配置时还可以对相对应的注解属性信息进行显示)
  2. 然后根据那个字段错误进行配置(如果对同一字段的四种类型都做了配置,那么会精确优先)
    字段错误的分类:
    由上及下逐渐模糊
  3. 在springMVC中交给spring控制

11.SpringMVC中文件上传

11.1配置
  1. 下载上传所需的jar包
    2. 在springMVC.xml中配置九大组件的下载组件
11.2具体实现

单文件上传

多文件上传

12.SpringMVC拦截器

12.1说明

SpringMVC提供了拦截器机制;允许运行目标方法之前进行一些拦截工作,或者目标方法运行之后进行一些其他处理;
Filter:javaWeb(适用范围大)
HandlerInterceptor:SpringMVC(适用范围小)

什么时候用Filter:
简单需求就用Filter
什么时候用HandlerInterceptor:
如果某些功能需要用到其他组件来完成,较难时就用拦截器

HandlerInterceptor接口的三个重写方法:

  • preHandle:在目标方法运行之前调用;返回boolean;return true;(chain.doFilter())放行; return false;不放行
  • postHandle:在目标方法运行之后调用:目标方法调用之后
  • afterCompletion:在请求整个完成之后;来到目标页面之后;chain.doFilter()放行;资源响应之后;
12.2单拦截器流程

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_springmvc_09

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_10

12.3多拦截器流程

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_springmvc_11

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_MVC_12

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_13

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_14

13.SpringMVC国际化

13.1说明

在springMVC中大概有三种配置切换国际化的方法:

  1. 自定义区域信息解析器 (LocaleResolver)
  2. 使用SessionLocaleResolver实现点击切换:区域信息是从session中获取。
  3. SessionLocaleResolver配合Locale使用
13.2不同方法前都要的步骤
  • 先写不同语言的properties文件
  • 依旧在springMVC.xml中配置
13.3自定义区域信息解析器 (LocaleResolver)
  1. 继承LocaleResolver接口重写两个方法:resolveLocale(解析返回locale)、setLocale(修改locale)
  1. 在springMVC.xml中配置自定义区域信息解析器
13.5显示结果

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_springmvc_15

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_springmvc_16

13.4出现的问题
  1. 当出现页面国际化信息有??乱码时,就是springMVC搜索不到相对应的properties文件,但前一天还是正常的,经过改名后恢复正常。

13.SpringMVC异常处理

13.1说明

默认情况下异常处理器(HandlerExceptionResolver)有三个

  • ExceptionHandlerExceptionResolver
  • ResponseStatusExceptionResolver
  • DefaultHandlerExceptionResolver
    如果三个处理器依次都处理不了的异常直接抛给tomcat显示异常
  • SimpleMappingExceptionResolver:这个异常处理器需要自己在springMVC中配置才能使用,指定发生异常时去什么页面

同理如果四个都设置了同一个异常的处理,执行顺序是从上到下的优先级

13.2异常注解
  • @ExceptionHandler
    在一个类中的某个方法上面加,即为告诉springMVC这个方法专门处理这个类中的‘’XX‘’异常
    具体处理什么异常在value属性中配置
    可以专门写个错误页面,当发生错误时跳转进错误页面告诉用户什么地方发生错误了
  • @ControllerAdvice
    当专门写了一个各种异常处理的集合类,用于告诉springMVC这个类专门处理异常
  • @ResponseStatus
    给自定义某个特定的异常类上标注的
13.3具体实现

1.HiddenHttpMethodFilter解决从页面上只能发起两种请求,GET、POST

1.1说明

由于前面我们可以知道增删改查都是使用一个对应的请求来辨别,但是在jsp中只提供了两种请求方式get和post,所有我们只能将删除和更新操作通过过滤器来让servlet来辨别是什么操作

从页面发起PUT、DELETE形式的请求?Spring提供了对Rest风格的支持

SpringMVC中有一个Filter;他可以把普通的请求转化为规定形式的请求;配置这个filter;

1.2在web.xml中配置HiddenHttpMethodFilter

注意:要配置在标签前面

1.3如何发其他形式请求?

按照以下要求:

  1. 创建一个post类型的表单
  2. 表单项中携带一个_method的参数
  3. 这个_method的值就是DELETE、PUT
1.4出现的问题

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_请求参数_17

  • 第一种解决方案:请在处理页面的Java代码方法上加上@ResponseBody注解,方可解决,
  • 第二种解决方案:在跳转后的页面的jsp的头标签中加入isErrorPage=“true

2.提交数据乱码问题

  1. 请求乱码:
  • GET请求(所有请求的信息都带在url中,服务器一收到就开始解析):改server.xml;在8080端口处URIEncoding=“UTF-8”
  • POST请求(所有信息都在请求体中,服务器收到不会了立马解析,直到代码request.getParameter(“xxx”)执行才会解析):SpringMVC提供一个filter(要配置在所有filter之前,不然请求进不去)
  1. 响应乱码:
    response.setContentType(“text/html;charset=utf-8”)
2.1国际化出现乱码问题
  1. 在idea中的setting中选择
  2. 在spring.xml中配置
  1. 如果还是乱码请检查此页面是否经过了spring

1.AJAX

说明&步骤
  • 导包
  • 配置(具体请回顾视频,太多类与注解的用法了)
    在方法上面使用注解@ResponseBody:将返回的数据放到响应体中,导入的jar包自动将对象转化为json

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_MVC_18

@RequestBody:接收json数据

  1. 所有请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理
  2. 根据HandlerMapping中保存的请求映射信息找到,处理当前请求的,处理器执行链(包含拦截器)
  3. 根据当前处理器找到他的HandlerAdapter(适配器)
  4. 拦截器的preHandle先执行
  5. 适配器执行目标方法,并返回ModelAndView
  6. 拦截器的postHandle执行
  7. 处理结果;(页面渲染流程)

Spring mvc 开启aop ProceedingJoinPoint is only supported for around advice_spring_19

小讯
上一篇 2025-04-18 08:52
下一篇 2025-04-27 09:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/172368.html