JavaWeb案例

avatar
作者
猴君
阅读量:0

目录

整体思路:

具体实施:

准备步骤

环境搭建

开发规范

Restful

案例

部门管理

查询部门

Controller层

Service层

Mapper层

删除部门

Controller层

Service层

Mapper层

新增部门

Controller层

Service层

Mapper层

修改部门

查询部门

Controller层

Service层

Mapper层

修改部门

Controller层

Service层

Mapper层

员工管理

分页条件查询(其他略)

Controller层

Service层

Mapper层

xml配置文件

文件上传

介绍

文件上传(本地存储)

存储到指定目录

使用UUID

最大上传大小

MultipartFile常用方法

文件上传(云存储)--阿里云对象存储服务OSS

阿里云-集成

配置文件

参数配置化

yml配置文件

yml

yml常见数据格式

yml样例配置(本地)

@ConfigurationProperties

@ConfigurationProperties与@Value的区别

将文件上传到静态自定义资源包

登录校验

概述

会话技术

Cookie

Session

令牌技术(主流技术!!)

JWT令牌

JWT

JWT-生成

JWT-校验

过滤器Filter

Filter入门程序

Filter拦截路径

过滤器链

登录校验-Filter

拦截器Interceptor

Interceptor入门小程序

拦截路径

拦截器执行流程

登录校验-Interceptor拦截器

全局异常处理


整体思路:

具体实施:

启动类下有四个子包,分别为Controller层、Mapper层,Service层(接口和实现类)

在Controller层面向Service层接口创建对象,调用Service的方法,Service层面向Mapper层接口创建对象,调用Mapper层方法执行SQL语句,将数据返回给Service,Service将结果返回Controller,Controller将结果响应给前端

准备步骤

环境搭建

开发规范

Restful

案例

部门管理

查询部门

Controller层

Service层

Mapper层

删除部门

Controller层

Service层

Mapper层

新增部门

Controller层

Service层

Mapper层

修改部门

修改部门需要两步:先查询再修改

查询部门
Controller层

Service层

Mapper层

修改部门
Controller层

Service层

Mapper层

员工管理

分页条件查询(其他略)

Controller层

Service层

Mapper层

xml配置文件

文件上传

介绍

文件上传(本地存储)

存储到指定目录

将文件存到指定目录中:

获取原始文件名:文件表单名,文件名,文件类型存在MultipartFile类的对象中,因此可以通过调用其中的方法来获得原始文件名(getOriginalFilename()方法)

注意:transferto中路径最后//+文件名

使用UUID

保证文件名称唯一,使得后来上传的文件不会覆盖原有的同名文件

uuid:通用唯一识别码--长度固定的唯一字符串

生成uuid例:

获得文件扩展名:拿到原始文件名,获得最后一个点所处位置,截取到最后转为string

最大上传大小

单个文件最大上传大小和单词请求最大上传大小:(进行如下配置)

MultipartFile常用方法

文件上传(云存储)--阿里云对象存储服务OSS

对云存储的通用使用步骤:(包含但不局限于阿里云OSS)

使用步骤:准备工作->参照官方SDK编写入门程序->案例集成OSS

阿里云-集成

配置文件

参数配置化

使用@Value注解将外部配置的属性值注入到成员变量

yml配置文件

yml

yml常见数据格式

yml样例配置(本地)

@ConfigurationProperties

@ConfigurationProperties与@Value的区别

将文件上传到静态自定义资源包

配置文件需要加入:

获取到静态资源的路径:

登录校验

概述

会话技术

Cookie

Session

令牌技术(主流技术!!)

JWT令牌

JWT

JWT-生成

JWT-校验

过滤器Filter

Filter入门程序

Filter拦截路径

过滤器链

一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链

过滤器拦截顺序:注解配置的Filter,优先级是按照过滤器类名(字符串)的自然排序

登录校验-Filter

在Filter中校验Jwt令牌的有效性

@WebFilter(urlPatterns = "/*") public class LoginCheckFilter implements Filter {      private static final Logger log = LoggerFactory.getLogger(LoginCheckFilter.class);      @Override     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {         HttpServletRequest req = (HttpServletRequest) servletRequest;         HttpServletResponse resp = (HttpServletResponse) servletResponse;          //获取url         String url = req.getRequestURL().toString();         log.info("获得url:{}",url);         //判断请求中是否包含login,如果包含,说明是登录操作,放行         if (url.contains("login")) {             log.info("登录操作,放行!");             filterChain.doFilter(servletRequest, servletResponse);             return;         }         //获取请求头中的令牌         String jwt = req.getHeader("token");         //判断令牌是否存在,如果不存在,则返回错误信息         if(!StringUtils.hasLength(jwt)) {             log.info("请求头token为空,返回未登录的信息");             Result error = Result.error("NOT_LOGIN");             //手动转换 对象-->json   阿里巴巴fastJson             String notLogin = JSON.toJSONString(error);             resp.getWriter().write(notLogin);             return;         }         //解析token,如果解析失败,返回错误结果         try {             JwtUtils.parseJWT(jwt);         } catch (Exception e) {             e.printStackTrace();             log.info("解析令牌失败,返回未登录错误信息");             Result error = Result.error("NOT_LOGIN");             //手动转换 对象-->json   阿里巴巴fastJson             String notLogin = JSON.toJSONString(error);             resp.getWriter().write(notLogin);             return;         }         //放行         log.info("令牌合法,放行");         filterChain.doFilter(servletRequest, servletResponse);     } }

拦截器Interceptor

Interceptor入门小程序

首先三个默认方法(根据需要使用或重写)

拦截路径

拦截器执行流程

登录校验-Interceptor拦截器

全局异常处理

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!