1. 程式人生 > >web工程設定專案的預設訪問路徑和登入攔截

web工程設定專案的預設訪問路徑和登入攔截

package com.test.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
			FilterChain filterChain) throws IOException, ServletException {
		// 判斷是否是http請求  
        if (!(servletRequest instanceof HttpServletRequest)  
                || !(servletResponse instanceof HttpServletResponse)) {  
            throw new ServletException(  
                    "OncePerRequestFilter just supports HTTP requests");  
        }  
        // 獲得在下面程式碼中要用的request,response,session物件  
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;  
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;  
        HttpSession session = httpRequest.getSession(true);  
  
        String[] strs = { "loginpage", "login", "logout", "static" }; // 路徑中包含這些字串的,可以不用登入直接訪問  
        StringBuffer url = httpRequest.getRequestURL();  
          
        /** 
         * 過濾掉根目錄 
         */  
        String path = httpRequest.getContextPath();  
        String protAndPath = httpRequest.getServerPort() == 80 ? "" : ":"  
                + httpRequest.getServerPort();  
        String basePath = httpRequest.getScheme() + "://"  
                + httpRequest.getServerName() + protAndPath + path + "/";  
        if (basePath.equalsIgnoreCase(url.toString())) {  
            filterChain.doFilter(servletRequest, servletResponse);  
            return;  
        }  
        // 特殊用途的路徑可以直接訪問  
        if (strs != null && strs.length > 0) {  
            for (String str : strs) {  
                if (url.indexOf(str) >= 0) {  
                    filterChain.doFilter(servletRequest, servletResponse);  
                    return;  
                }  
            }  
        }  
        // 從session中獲取使用者資訊  
        String loginInfo = (String) session.getAttribute("username");  
        if (null != loginInfo && !"".equals(loginInfo)) {  
            // 使用者存在繼續訪問此  
            filterChain.doFilter(servletRequest, servletResponse);  
        } else {  
            // 使用者不存在返回登入
            String returnUrl = httpRequest.getContextPath();  
            httpRequest.setCharacterEncoding("UTF-8");  
            httpResponse.setContentType("text/html; charset=UTF-8"); // 轉碼  
            httpResponse  
                    .getWriter()  
                    .println(  
                            "<script language=\"javascript\">alert(\"您還沒有登入,請先登入!\");if(window.opener==null){window.top.location.href=\""  
                                    + returnUrl  
                                    + "\";}else{window.opener.top.location.href=\""  
                                    + returnUrl  
                                    + "\";window.close();}</script>");  
            return;  
        } 
		
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}

四、最後驗證攔截器設定,直接用我們之前寫的user業務請求來訪問:http://localhost:9690/test/index.do


攔截成功!


相關推薦

web工程設定專案預設訪問路徑登入攔截

package com.test.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; im

idea配置application context(web專案預設訪問路徑

idea的application context   eclipse大家應該都用過,eclipse訪問專案的路徑一般是localhost:8080/projectName, 當把IDE換成idea以後,訪問路徑一般情況下就變成了localhost:8080,路

idea中Java Web專案訪問路徑問題

說明 這裡只以 servlet 為例,沒有涉及到框架,但其實路徑的基本原理和框架的關係不大,所以學了框架的同學如果對路徑有疑惑的也可以閱讀此文 專案結構 在 idea 中新建一個 Jav

SpringBoot專案修改訪問訪問路徑

建立SpringBoot專案,啟動後,預設的訪問路徑即主機IP+預設埠號8080:http://localhost:8080/ package com.springboot.test; import org.springframework.web.bind.ann

web專案的相對路徑絕對路徑

這個部落格源於我遇到的bug bug描述:大家都知道相對路徑和絕對路徑的含義,但是大家有沒有想到web工程和非web工程的相對路徑和絕對路徑呢? 這就是我要在這篇部落格中主要說明的。 需求:在web專案中獲取到指定資料夾中的檔名稱 在idea上的目錄:src/main/re

eclipse web工程 設定預設編碼為Utf-8

在eclipse中,js檔案的預設編碼是ISO-8859-1,每次新增一個js檔案,就必須手動的將js檔案的編碼格式改為UTF-8,由於這種針對每個檔案的編碼設定儲存在專案的.settings/org.eclipse.core.resources.prefs檔案中,因此每次

eclipse4.3裡修改專案在tomcat中的上下文訪問路徑部署路徑

1 eclipse裡修改專案在tomcat中的上下文訪問路徑   eclipe裡面部署web專案到整合的tomcat裡預設訪問路徑是專案名稱那麼我要修改訪問的路徑怎麼辦? 看下圖  右鍵點選eclipse中需要改變訪問url的專案找到web project setting

Apache配置對外訪問預設路徑(域名預設訪問路徑

摘抄。同以下博主遇到同樣問題,故此記錄。 作者:ChasingdreamLY 原文:https://blog.csdn.net/qq_26591517/article/details/80414073 ---------------------  百度搜索了快兩小時,發現網上

(Linux)Ubuntu16.04下設定matlab預設工作路徑

一、修改預設工作路徑 方法:編輯matlabrc.m檔案,在matlab的安裝路徑下面。 sudo vim /usr/local/MATLAB/R2016b/toolbox/local/matlabrc.m 編輯檔案在末尾加入: cd ‘/home/yczhang/Document

springboot-靜態資源預設訪問路徑順序

META-INF/resources/hello.html hello.html內容META-INF/resources/hello static/hello.html hello.html內容static/hello resources/hello.html 內容res

dede 修改首頁預設訪問路徑/dede修改安裝目錄

dede下載後解壓了,我們安裝後,發現訪問首頁的路徑不是我們想要的怎麼辦呢? 這種訪問 是不是很煩。我只想要www.cfi.cn後就能訪問我的網站。(1) 你自己安裝的時候 在 訪問路徑那點 自己小心的設定一下(2)  安裝完了之後 自己手動去修改咯。 方法/

nginx配置改變預設訪問路徑

在安裝完nginx服務後,url訪問的預設路徑是安裝的路徑html資料夾下的內容,如果需要指定自定義的路徑,需要配置nginx.conf檔案內容,這樣通過url訪問就可以了,比如: http://12

各種訪問路徑路徑跳轉總結篇

路徑 從一個點到另一個點的過程稱為路徑。 從一個起點到某個具體資源的過程稱為訪問路徑,訪問路徑的最後一個斜槓(/)後面的是資源名稱。 絕對資源路徑是從起點http://開始到某個具體資源的前面的最後一個”/”結束的路徑。 絕對訪問路徑:https://l

Tomcat的預設訪問路徑

放在外網的應用,使用者多是直接輸入域名訪問,相信沒有哪個後面還加個尾巴,而Tomcat的預設目錄是ROOT,所以我們需要更改其預設目錄。 更改Tomcat的預設目錄很簡單,只需要修改server.xml就可以了。 具體是是在<Host></Host>

二十一、在web(ssm/maven)專案中使用slf4jlog4j2記錄系統日誌

本篇的重點在於LOG4J2,它與LOG4J 第一版區別很大。我將教程放在後面,將一些知識放在前面,所以想看教程的直接拉到後面即可。 理論知識 關於兩版的區別 兩版的不同,直接的表現是在Maven倉庫中log4j 表示第一版,org.apache.logging.log4j 表示第

Java之idea建立gradle專案預設沒有srcresources解決方法

在專案根目錄下的build.gradle中新增建立目錄的任務,如下: task "create-dirs" << { sourceSets*.java.srcDirs*.each{ it.mkdirs() }

獲得jsp頁面當前專案訪問路徑

首先,在jsp頁面引入C標籤。 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 然後,在jsp頁面引入ja

linux安裝apache2部署html並修改預設訪問路徑

放到/usrlocal下 # cd /usr/local # tar -zvxf httpd-2.2.29.tar.gz //解壓   # cd httpd-2.2.29  # mkdir -p

更改CI框架預設訪問路徑及去掉index.php

下面是去掉index.php的操作 PHP CodeIgniter(CI)去掉 index.php - Langjun - 部落格園 設定訪問的預設路徑是在 檔案下,找到 $route[‘default_controller’] = “index”;

根據工程實踐專案進行需求分析概念原型建模

1 前言 此篇部落格主要是根據最近學習的軟體工程建模方法,對筆者所參與的工程實踐專案,進行建模與分析。主要是需求分析、業務領域建模以及資料建模,最終形成一個完整的概念原型。現在將建模的過程總結如下: 2 工程實踐背景介紹   工程實踐是一個關於留學生資訊管理與分析的平臺。該系統是為使用者提供有關留學服務資訊的