JavaWeb案例
创始人
2024-11-15 06:33:46

目录

整体思路:

具体实施:

准备步骤

环境搭建

开发规范

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拦截器

全局异常处理

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...