可以看出,map 中不管是什么数据类型,都可以转成相应的 json 格式,这样就非常方便。
通过封装,我们不但将数据通过 json 传给前端或者其他接口,还带上了状态码和提示信息,这在实际项目场景中应用非常广泛。
@Value
注解上通过 ${key}
即可获取配置文件中和 key 对应的 value 值。我们启动一下项目,在浏览器中输入 localhost:8080/test/config
请求服务后,可以看到控制台会打印出订单服务的地址:
说明我们成功获取到了配置文件中的订单微服务地址,在实际项目中也是这么用的,后面如果因为服务器部署的原因,需要修改某个服务的地址,那么只要在配置文件中修改即可。
JointPoint 对象很有用,可以用它来获取一个签名,然后利用签名可以获取请求的包名、方法名,包括参数(通过 ("====doAfter方法进入了====");
启动项目,在浏览器中输入
localhost:8080/aop/CSDN
,观察一下控制台的输出信息:
该方法我就不测试了,大家可以自行测试一下。
OK,到此为止,拦截器已经定义完成,接下来就是对该拦截器进行拦截配置。
默认登录的 url:身份认证失败会访问该 url
认证成功之后要跳转的 url
权限认证失败会访问该 url
需要拦截或者放行的 url:这些都放在一个 map 中
从上述代码中可以看出,在 map 中,针对不同的 url,有不同的权限要求,这里总结一下常用的几个权限。
("整个请求都处理完咯,DispatcherServlet也渲染了对应的视图咯,此时我可以做一些清理的工作了");
然后将自定义的拦截器加入到拦截器配置中。
在 Spring Boot 中,我们通常会在如下目录里存放一些静态资源:
上面代码中配置的
/**
是对所有 url 都进行了拦截,但我们实现了 WebMvcConfigurer 接口,不会导致 Spring Boot 对上面这些目录下的静态资源实施拦截。但是我们平时访问的 swagger 会被拦截,所以要将其放行。swagger 页面在 swagger-resources 目录下,放行该目录下所有文件即可。然后在浏览器中输入一下 swagger 页面,若能正常显示 swagger,说明放行成功。同时可以根据后台打印的日志判断代码执行的顺序。
全局异常处理是每个项目中必须用到的东西,在具体的异常中,我们可能会做具体的处理,但是对于没有处理的异常,一般会有一个统一的全局异常处理。在异常处理之前,最好维护一个异常提示信息枚举类,专门用来保存异常提示信息的。如下:
在全局统一异常处理类中,我们一般会对自定义的业务异常最先处理,然后去处理一些常见的系统异常,最后会来一个一劳永逸(Exception 异常)。
* 拦截业务异常,返回业务异常信息 * 系统异常 预期以外异常在 UserController 中有个 testException 方法,用来测试全局异常的,打开 swagger 页面,调用一下该接口,可以看出返回用户提示信息:”系统发生异常,请联系管理员!“。当然了,实际情况中,需要根据不同的业务提示不同的信息。
本文主要手把手带领大家快速搭建一个项目中可以使用的 Spring Boot 空架构,主要从统一封装的数据结构、可调式的接口、json的处理、模板引擎的使用(代码中体现)、持久层的集成、拦截器和全局异常处理。一般包括这些东西的话,基本上一个 Spring Boot 项目环境就差不多了,然后就是根据具体情况来扩展了。
zuiji最后,推荐一个很值得学习的项目学习专@
另外还有一个很值得学习的springboot项目关于可以直接用毕业答辩的项目:
最后呢,不要忘记来关注我哈
一般用来和数据库的字段做映射 ORM;
登录--->接收用户登录的请求--->处理用户请求(获取用户登录的参数,username password) --->交给业务层处理登录业务(判断用户密码是否争取)--->持久层查询用户名和密码是否正确--->数据库-->正确 跳转到视图层
Filter:过滤器,用来过滤网站的数据:
注销手动或自动注销session
案例要求:需要用户输入正确的用户名之后才能进入主页,并且用户注销与以后不能再通过输入主页的网址进入(报错,进入error页面).
用户输入正确的用户名之后,向Session中存放用户的数据,因为使用的是重定向,数据不会保留,所以使用Session(数据存储在web服务器中)
进入主页的时候判断用户是否已经登录(即Session中是否有(User_Session)对应的属性.在过滤器中
测试项目是否能够跑起来进入主页
ORM映射:表-类映射(根据数据库编写实体类(无参构造 有参构造 get set 方法))
编写基础公共类(公共类的方法一般写为静态方法 在别的类中可以用类名.方法名直接调用)
如果css不显示需要加一个样式过滤器
编写业务层接口并实现接口方法
UserDao接口及其实现方法
//Ajax传递的参数 method相当于在Pol.XML中注册了 因此pwdmodify方法中取到的前端参数一定是吃醋Ajax方法中的参数