java idea中为什么会出现一个out包,而且删除后还会出现?

  • 第01课:Spring Boot开发环境搭建和项目启动
  • 第18课:Spring Boot搭建实际项目开发中的架构

可以看出,map 中不管是什么数据类型,都可以转成相应的 json 格式,这样就非常方便。

通过封装,我们不但将数据通过 json 传给前端或者其他接口,还带上了状态码和提示信息,这在实际项目场景中应用非常广泛。

@Value 注解上通过 ${key} 即可获取配置文件中和 key 对应的 value 值。我们启动一下项目,在浏览器中输入 localhost:8080/test/config 请求服务后,可以看到控制台会打印出订单服务的地址:

说明我们成功获取到了配置文件中的订单微服务地址,在实际项目中也是这么用的,后面如果因为服务器部署的原因,需要修改某个服务的地址,那么只要在配置文件中修改即可。

// 也可以用来记录一些信息,比如获取请求的url和ip

JointPoint 对象很有用,可以用它来获取一个签名,然后利用签名可以获取请求的包名、方法名,包括参数(通过 ("====doAfter方法进入了====");

启动项目,在浏览器中输入 localhost:8080/aop/CSDN,观察一下控制台的输出信息:

// 实际项目中可以根据业务做具体的返回值增强

该方法我就不测试了,大家可以自行测试一下。

("新用户上线了"); // 返回true才会继续执行,返回false则取消当前请求 ("整个请求都处理完咯,DispatcherServlet也渲染了对应的视图咯,此时我可以做一些清理的工作了");

OK,到此为止,拦截器已经定义完成,接下来就是对该拦截器进行拦截配置。

// 判断用户有没有登陆,一般登陆之后的用户都有一个对应的token // 返回true才会继续执行,返回false则取消当前请求

// 通过方法,可以获取该方法上的自定义注解,然后通过注解来判断该方法是否要被拦截

默认登录的 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:过滤器,用来过滤网站的数据:

  1. 注销手动或自动注销session

案例要求:需要用户输入正确的用户名之后才能进入主页,并且用户注销与以后不能再通过输入主页的网址进入(报错,进入error页面).

  1. 用户输入正确的用户名之后,向Session中存放用户的数据,因为使用的是重定向,数据不会保留,所以使用Session(数据存储在web服务器中)

  2. 进入主页的时候判断用户是否已经登录(即Session中是否有(User_Session)对应的属性.在过滤器中


  1. 测试项目是否能够跑起来进入主页

  2. ORM映射:表-类映射(根据数据库编写实体类(无参构造 有参构造 get set 方法))

    编写基础公共类(公共类的方法一般写为静态方法 在别的类中可以用类名.方法名直接调用)

    1. 
      
    2. 如果css不显示需要加一个样式过滤器

      
      
    3. 编写Dao层接口并实现接口方法,获取登录用户的信息
  3. 编写业务层接口并实现接口方法

UserDao接口及其实现方法


//Ajax传递的参数 method相当于在Pol.XML中注册了 因此pwdmodify方法中取到的前端参数一定是吃醋Ajax方法中的参数


我要回帖

更多关于 idea配置artifacts 的文章