最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java精品項目瑞吉外賣之登陸的完善與退出功能篇

 更新時間:2022年05月13日 09:05:33   作者:爪哇斗羅  
這篇文章主要為大家詳細(xì)介紹了java精品項目-瑞吉外賣訂餐系統(tǒng),此項目過大,分為多章獨(dú)立講解,本篇內(nèi)容為新增菜品和分頁查詢功能的實現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

上一篇:

后端登錄功能實現(xiàn)

一. 需求分析

員工登錄之后,頁面跳轉(zhuǎn)到后臺首頁(backend/index.html)此前會顯示用戶登錄的用戶名,點(diǎn)擊退出按鈕退出系統(tǒng)。

請求API:

說明
請求地址URLemployee/loginout
請求參數(shù)
返回參數(shù)({
  "code": 1,
  "msg": null,
  "data": "退出成功",
  "map": {}
}

二.功能實現(xiàn)

只需要清除session即可,在controller中添加如下代碼:

/**
     * 后管登出
     * @param request
     * @return
     */
    @PostMapping("/logout")
    public R<String> loginOut(HttpServletRequest request){
        // 去除session
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }

三.功能測試

登錄成功后是有session記錄的:

點(diǎn)擊頁碼按鈕退出后session清除,并返回登錄頁面就表示成功了。

四. 登錄功能完善

4.1 問題分析

前面已經(jīng)完成了登錄功能的開發(fā),但會發(fā)現(xiàn)一個問題,就是員工不登錄情況下,依然能夠進(jìn)入到目標(biāo)頁面很顯然這并不是我們想看到的。

那如何實現(xiàn)呢?使用過濾器或者攔截器,在過濾器或者攔截器中判斷用戶是否是登錄狀態(tài),沒有登錄則跳轉(zhuǎn)到登錄頁面。

4.2 實現(xiàn)步驟

  • 創(chuàng)建自定義過濾器LoginCheckFilter.java
  • 啟動類上加入@ServletComponentScan(這個不要忘記了)
  • 完善過濾器處理邏輯

過濾器處理邏輯主要如下:

  • 獲取本次處理請求的URL
  • 判斷本次請求是否需要處理
  • 若不需要,直接放行
  • 判斷登陸狀態(tài),若已經(jīng)登陸直接放行
  • 若未登陸則返回未登陸結(jié)果

流程圖如下:

4.3 代碼實現(xiàn)

package com.itheima.reggie.filter;
import com.alibaba.fastjson.JSON;
import com.itheima.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.AntPathMatcher;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @author jektong
 * @date 2022/4/26
 */
@WebFilter(filterName = "loginCheckFilter", urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {
    // 進(jìn)行路徑匹配,支持通配符
    public static final AntPathMatcher ANT_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;
        //獲取本次處理請求的URL
        String requestURI = request.getRequestURI();
        String[] urls = new String[]{
          "/employee/login",
          "/employee/logout",
          "/backend/**",
          "/front/**"
        };
        //判斷本次請求是否需要處理
        boolean check = this.check(urls, requestURI);
        log.info("攔截到請求:{}", requestURI);
        //若不需要,直接放行
        if (check){
            log.info("請求無需登錄:{}", requestURI);
            filterChain.doFilter(request,response);
            return;
        }
        //判斷登陸狀態(tài),若已經(jīng)登陸直接放行
        if(request.getSession().getAttribute("employee") != null){
            log.info("用戶已登錄,id為:{}", request.getSession().getAttribute("employee"));
            filterChain.doFilter(request,response);
            return;
        }
        //若未登陸則返回未登陸結(jié)果
        response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
        return;
    }
    /**
     * 進(jìn)行路徑匹配,檢查是否可以放行
     * @param urls 不攔截的路徑
     * @param requestURI 請求路徑
     * @return
     */
    public boolean check(String[] urls, String requestURI) {
        for(String url : urls){
            boolean match = ANT_PATH_MATCHER.match(url,requestURI);
            if(match){
                return true;
            }
        }
        return false;
    }
}

前端代碼(request.js)會通過一個值("NOTLOGIN")來進(jìn)行攔截器響應(yīng)匹配后進(jìn)行頁面的跳轉(zhuǎn):

// 響應(yīng)攔截器
  service.interceptors.response.use(res => {
      if (res.data.code === 0 && res.data.msg === 'NOTLOGIN') {// 返回登錄頁面
        console.log('---/backend/page/login/login.html---')
        localStorage.removeItem('userInfo')
        window.top.location.href = '/backend/page/login/login.html'
      } else {
        return res.data
      }
    }

到此這篇關(guān)于Java精品項目瑞吉外賣之登陸的完善與退出功能篇的文章就介紹到這了,更多相關(guān)Java外賣系統(tǒng)登陸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java生產(chǎn)1-100的隨機(jī)數(shù)簡單實例(分享)

    Java生產(chǎn)1-100的隨機(jī)數(shù)簡單實例(分享)

    下面小編就為大家?guī)硪黄狫ava生產(chǎn)1-100的隨機(jī)數(shù)簡單實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • springboot+shiro+jwtsession和token進(jìn)行身份驗證和授權(quán)

    springboot+shiro+jwtsession和token進(jìn)行身份驗證和授權(quán)

    最近和別的軟件集成項目,需要提供給別人接口來進(jìn)行數(shù)據(jù)傳輸,發(fā)現(xiàn)給他token后并不能訪問我的接口,拿postman試了下還真是不行,檢查代碼發(fā)現(xiàn)項目的shiro配置是通過session會話來校驗信息的,修改代碼兼容token和session
    2024-06-06
  • JDK1.7以上javaFTP上傳刪除文件的實現(xiàn)方法

    JDK1.7以上javaFTP上傳刪除文件的實現(xiàn)方法

    下面小編就為大家分享一篇JDK1.7以上javaFTP上傳刪除文件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Java?shiro安全框架使用介紹

    Java?shiro安全框架使用介紹

    安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會出現(xiàn)問題,這篇文章主要介紹了SpringBoot安全管理Shiro框架的使用
    2022-08-08
  • Java基于IO流讀取文件的方法

    Java基于IO流讀取文件的方法

    這篇文章主要介紹了Java基于IO流讀取文件的方法,涉及Java文件流操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • idea git未提交代碼文件名字變色(圖解)

    idea git未提交代碼文件名字變色(圖解)

    這篇文章主要介紹了idea git未提交代碼文件名字變色,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Flutter ListView 上拉加載更多下拉刷新功能實現(xiàn)方法

    Flutter ListView 上拉加載更多下拉刷新功能實現(xiàn)方法

    這篇文章主要介紹了Flutter ListView 上拉加載更多下拉刷新功能實現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 舉例解析Java多線程編程中需要注意的一些關(guān)鍵點(diǎn)

    舉例解析Java多線程編程中需要注意的一些關(guān)鍵點(diǎn)

    這篇文章主要介紹了Java多線程編程中需要注意的一些關(guān)鍵點(diǎn),包括ThreadLocal變量與原子更新等一些深層次的內(nèi)容,需要的朋友可以參考下
    2015-11-11
  • mybatis plus 開啟sql日志打印的方法小結(jié)

    mybatis plus 開啟sql日志打印的方法小結(jié)

    Mybatis-Plus(簡稱MP)是一個 Mybatis 的增強(qiáng)工具,在 Mybatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。本文重點(diǎn)給大家介紹mybatis plus 開啟sql日志打印的方法小結(jié),感興趣的朋友一起看看吧
    2021-09-09

最新評論

舞阳县| 江口县| 南康市| 高清| 阿尔山市| 大姚县| 政和县| 策勒县| 平遥县| 云浮市| 天台县| 攀枝花市| 太仆寺旗| 永新县| 措勤县| 米林县| 轮台县| 江阴市| 襄汾县| 颍上县| 确山县| 曲麻莱县| 正镶白旗| 丹东市| 巫山县| 太康县| 衡阳市| 巴彦淖尔市| 洛川县| 井研县| 怀仁县| 合阳县| 镇江市| 呈贡县| 宜春市| 汶川县| 长海县| 海阳市| 连山| 筠连县| 尚义县|