瑞吉外卖day1

这篇具有很好参考价值的文章主要介绍了瑞吉外卖day1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目整体介绍

项目介绍

本项目(瑞吉外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括系统管理后台和移动端应用两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品、套餐、订单等进行管理维护。移动端应用

主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。
本项目共分为3期进行开发:
第一期主要实现基本需求,其中移动端应用通过H5实现,用户可以通过手机浏览器访问。

第二期主要针对移动端应用进行改进,使用微信小程序实现,用户使用起来更加方便。

第三期主要针对系统进行优化升级,提高系统的访问性能。

技术选型

瑞吉外卖day1

 功能架构

瑞吉外卖day1

角色

  • 后台系统管理员:登录后台管理系统,拥有后台系统中的所有操作权限

  • 后台系统普通员工:登录后台管理系统,对菜品、套餐、订单等进行管理
  • C端用户:登录移动端应用,可以浏览菜品、添加购物车、设置地址、在线下单等

 开发环境搭建

数据库环境搭建

瑞吉外卖day1

瑞吉外卖day1

 maven环境搭建

创建maven项目导入相关依赖

瑞吉外卖day1

将前端静态资源放到resource目录下

 文章来源地址https://www.toymoban.com/news/detail-434796.html

瑞吉外卖day1

创建webMvc配置类,映射静态资源,解决前端页面放在resource目录下无法访问的问题

@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 设置静态资源映射
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始进行静态资源映射 ");
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");

}
}

后台登录功能开发

 

 @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
        //1.获取密码进行md5加密
        String password = employee.getPassword();
        password=DigestUtils.md5DigestAsHex(password.getBytes());
        //2.根据用户提交的username查询数据库
        LambdaQueryWrapper<Employee> queryWrapper=  new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername,employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);
        //3.如果没有查询结果则返回登陆失败结果
        if (emp==null){
            return R.error("登陆失败");
        }
        //4.密码比对,如果不一致则返回登陆失败结果
        if (!emp.getPassword().equals(password)){
            return R.error("登陆失败");

        }
        //5.查看员工状态,是否为已被禁用
        if (emp.getStatus()==0){
            return R.error("员工已被禁用");
        }
        //6.登录成功,将员工id存入session并返回登陆成功结果
        request.getSession().setAttribute("employee",emp.getId());
        return  R.success(emp);


    }

设置过滤器完善登录功能

@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")
@Slf4j
public class loginCheckFilter implements Filter {
    public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //1.获取本次请求的URI
        String requestURI = request.getRequestURI();
        //2.判断本次请求·是否要处理
        String[] urls = new String[]{
          "/employee/login", "employee/logout","/backend/**","/front/**"
        };
        //判断本次请求是否需要处理
        boolean check = check(urls,requestURI);
        //如果不需要处理,则直接放行
        if (check){
            filterChain.doFilter(request,response);
            return;
        }
        //判断登陆状态,如果以登录,则直接放行
        if (request.getSession().getAttribute("employee")!=null){
            filterChain.doFilter(request,response);
            return;
        }
        //如果未登录则返回未登录结果,通过输出流方式向客户端页面响应数据
        response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
        log.info("拦截到请求:{}",request.getRequestURI());
        filterChain.doFilter(request,response);
    }
    

    /**
     * 判断请求是否需要处理
     * @param urls
     * @param requestURI
     * @return
     */
    public boolean check(String[] urls,String requestURI){

        for (String url : urls) {
            boolean match = PATH_MATCHER.match(url, requestURI);
            if (match){
                return true;
            }
        }
        return false;
    }
}

PathMatcher接口
Spring的PathMatcher路径匹配器接口,用于支持带通配符的资源路径匹配。

使用场景
PathMatcher接口在Spring的许多场景下使用,比如:

PathMatchingResourcePatternResolver:资源扫描,启动时扫描并加载资源
AbstractUrlHandlerMapping:请求路径映射到 Controller
WebContentInterceptor:拦截器拦截路径分析
接口方法
方法 描述
boolean isPattern(String path) 判断路径是否是模式
boolean match(String pattern, String path) 判断路径是否完全匹配
boolean matchStart(String pattern, String path) 判断路径是否前缀匹配
前缀匹配的意思:路径能与模式的前面部分匹配,但模式可能还有后面多余部分
例如:/test能前缀匹配/test/{id}(但模式还有多余的/{id}部分未匹配)
String extractPathWithinPattern(String pattern, String path) 得到模式匹配的部分值
该方法只返回路径的实际模式匹配部分
例如:myroot/*.html 匹配 myroot/myfile.html 路径,结果为 myfile.html
Map<String, String> extractUriTemplateVariables(String pattern, String path) 提取路径中的路径参数值
Comparator<String> getPatternComparator(String path) 得到一个排序比较器,用于对匹配到的所有路径进行排序
String combine(String pattern1, String pattern2) 合并两个模式
AntPathMatcher类
AntPathMatcher是Spring为PathMatcher接口提供的默认实现,支持Ant风格的路径匹配。

匹配规则
AntPathMatcher支持的匹配规则:

规则 描述
? 匹配一个字符
* 在一个路径段中匹配零个、一个或多个字符
** 匹配零个或多个路径段,直到路径结束
{id} 匹配一个路径段,并将该路径段的值作为变量id的变量值
{id:[a-z]+} 匹配一个满足正则([a-z]+)路径段,并将该路径段的值作为变量id的变量值
4

 

到了这里,关于瑞吉外卖day1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Spring boot和Mybatis外卖项目瑞吉外卖Day9-Redis的快速入门

    4.1 Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 贴心小建议:命令不要死记,学会查询就好啦 Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令: 当然我们

    2023年04月09日
    浏览(52)
  • 【SpringBoot项目实战+思维导图】瑞吉外卖①(项目介绍、开发环境搭建、后台登陆/退出功能开发)

    全文主体框架来源于黑马瑞吉外卖的项目资料,我在文中会嵌入如下五个方面的个人内容: 项目中易发生错误的地方 项目中涉及的一些难理解知识点 一些遗忘知识点的回顾 业务的多种实现方法 我在做项目时的思考和一些踩坑 作为一名软件开发工程师,我们需要了解在软件开

    2024年02月05日
    浏览(53)
  • 瑞吉外卖-Day01

    软件开发整体介绍 瑞吉外卖项目介绍 开发环境搭建 后台登录功能开发 后台退出功能开发 作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这

    2024年02月12日
    浏览(33)
  • 瑞吉外卖day4

    介绍  服务端要接收客户端页面上传的文件,通常都会使用Apache的两个组件 1.commons-file upload 2.commons-io Spring框架在spring-web包中对文件上传进行了封装。只需要在Controller的方法中声明一个MultipartFile类型的参数即可接受上传的文件 代码实现 upload方法里的形参名要保证与前端提

    2024年02月04日
    浏览(45)
  • 瑞吉外卖项目——瑞吉外卖

    需求分析:产品原型、需求规格说明书 设计:产品文档、UI界面设计、概要设计、详细设计、数据库设计 编码:项目代码、单元测试 测试:测试用例、测试报告 上线运维:软件环境安装、配置 项目经理:对整个项目负责,任务分配、把控进度 产品经理:进行需求调研,输

    2023年04月26日
    浏览(91)
  • 项目笔记-瑞吉外卖(全)

    1.对后端返回请求值的分析 2.对不同种请求参数的分析 3.事务管理 1.软件开发整体介绍 2.项目整体介绍⭐️ 后端:管理菜品和员工信息 前台:通过手机端,可以浏览菜品和添加客户端 开发项目流程: 实现基本需求,用户能在手机浏览器访问 对移动端应用改进,使用微信小程

    2024年02月07日
    浏览(40)
  • 瑞吉外卖项目记录

    本文为个人学习黑马《瑞吉外卖》项目后进行的项目总结,更偏向于对自己编写文本能力的锻炼以及对项目知识点的简短记录。因为个人能力问题,其中可行性分析和测试部分只进行了小标题的陈列,并没有进行编辑。对《瑞吉外卖》项目感兴趣的朋友也可以浏览本文后再去

    2024年02月05日
    浏览(33)
  • 瑞吉外卖项目——前后端分离

    前后端分离开发,就是在项目开发过程中,对于前端代码的开发由专门的 前端开发人员 负责,后端代码则由 后端开发人员 负责,这样可以做到分工明确、各司其职,提高开发效率,前后端代码并行开发,可以加快项目开发进度。 目前,前后端分离开发方式已经被越来越多

    2023年04月20日
    浏览(49)
  • 瑞吉外卖项目----(2)缓存优化

    将项目推送到远程仓库里,教程在git 提交远程仓库前建议取消代码检查 创建新的分支v1.0(用于实现缓存优化)并推送到远程仓库 1.1.1 maven坐标 导入spring-data-redis的maven坐标: 1.1.2 配置文件 在application.yml中加入redis相关配置: 1.1.3 配置类 在项目中加入RedisConfig 1.2.1 实现思路

    2024年02月14日
    浏览(47)
  • 苍穹外卖 day1 搭建成功环境

    idea找不到打包生成的文件目录怎么办,首先点击这个小齿轮 然后就能找到隐藏的文件 这个jar包内含tomcat,可以直接丢在linux上用 开发环境:开发人员在开发阶段使用的环境,一般外部用户无法访问 测试环境:专门给测试人员使用的环境,测试项目用 生产环境:正式对外提

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包