web 過濾器(jsp+cookie+filter免登陸Tomcat)使用記錄
注意:過濾器主要過濾request,response裡面的值。
*web.xml----
*登入action新增cookie-------
*filter過濾器獲取cookie------
(不用從新輸入使用者名稱,密碼,直接讀取cookie通過查詢資料庫,獲取User user ,
request.getSession().setAttribute("user",user1))
*其他action裡面獲取---------
(DUser user=(DUser) request.getSession().getAttribute("user");//)自動登入
*登出:刪除cookie----------
1、web配置檔案--過濾所有請求
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.djh.listener.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、登入的action裡面新增cookie
session.setAttribute("user", user); Cookie cookie1 = new Cookie("username",user.getUPhoneNum()); Cookie cookie2 = new Cookie("password",user.getUPassword()); // Cookie cookie3 = new Cookie("SESSIONID","----"); cookie1.setMaxAge(60 * 60); cookie2.setMaxAge(60 * 60); // cookie3.setMaxAge(0); cookie1.setPath("/"); cookie2.setPath("/"); // cookie3.setPath("/"); response.addCookie(cookie1); response.addCookie(cookie2);
3、過濾器類LoginFilter--主要方法是doFilter,在此方法裡取出request.getCcookies()值,set到request.getSession().setAttribute("user",user1);
,其他介面通過過濾器set過來的“user”值取出uname,password自動登入。
package com.djh.listener;
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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.djh.entity.DUser;
import com.djh.service.LoginService;
import com.djh.util.MD5;
/**
* @author shenpai
* 實現使用者自動登入的過濾器
*/
public class LoginFilter implements Filter {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-*.xml"});
LoginService loginService=(LoginService) context.getBean("loginService");//獲取UserService的bean的例項
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
try {
// System.out.println("----------------");
//把ServletRequest和ServletResponse轉換成HttpServletRequest和HttpServletResponse的型別
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp ;
//首先檢查使用者是否登入
DUser user=(DUser) request.getSession().getAttribute("user");//
if(user!=null){
chain.doFilter(request, response);
return;
}
//檢查使用者是否帶來cookie
String username= null;
String password =null;
Cookie[] cookies=request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
// System.out.println(cookies[i].getName()+cookies[i].getValue()+"----過濾器獲取cookies---");
if(cookies[i].getName().equals("username")){
username = cookies[i].getValue();
}
if(cookies[i].getName().equals("password")){
password = cookies[i].getValue();
}
}
if(username==null || password==null){//使用者沒有帶來cookie
chain.doFilter(req, resp);
return;
}
//使用者帶來了cookie
DUser user1 = loginService.findUserByPhoneNumAndPassword(
username, password);
String save_password = user1.getUPassword();
if(!password.equals(save_password)){
chain.doFilter(req, resp);
return;
}
request.getSession().setAttribute("user",user1); //通過requsest放到相關需要登入資訊的action裡面,action裡面通過reqest.獲取使用者資訊,實現自動登入。
chain.doFilter(req, resp);
return;
} catch (Exception e) {
e.printStackTrace();
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
4、Action獲取使用者資訊,實現自動登入。
DUser user=(DUser) session.getAttribute("user");//獲取登入使用者物件
5、登出:刪除cookie
// 使用者登出
public String logout() {
HttpSession session = request.getSession(false);
if (session != null)
session.removeAttribute("user");
Cookie cookie = cookieUtils.<span style="BACKGROUND-COLOR: #3333ff">delCookie</span>(request);
if (cookie != null)
response.addCookie(cookie);
return "login";
}
private CookieUtils cookieUtils = new CookieUtils();
// 刪除cookie
public Cookie <span style="color:#3333ff;">delCookie</span>(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("username".equals(cookie.getName())) {
cookie.setValue("");
cookie.setMaxAge(0);
}else if("password".equals(cookie.getName())){
cookie.setValue("");
cookie.setMaxAge(0);
}
return cookie;
}
}
return null;
}
相關推薦
web 過濾器(jsp+cookie+filter免登陸Tomcat)使用記錄
注意:過濾器主要過濾request,response裡面的值。 *web.xml---- *登入action新增cookie------- *filter過濾器獲取cookie------ (不用從新輸入使用者名稱,密碼,直接讀取cookie通過查詢資料庫,獲取User
防止web端腳本攻擊的過濾器(可過濾大部分腳本攻擊)
bool 輸入 後臺 getmethod else 重復 servlet inpu pre 在後臺進行攻擊攔截是必要的,下面是我所使用的防止web端腳本攻擊的過濾器工具。 1.配置文件: 1 <!-- 請求攔截 --> 2 <mvc:intercepto
web專案(jsp+Java)錯誤總結
一:當部署專案時出現Project facet Java version 1.8 is not supported.(jdk版本不一致) 解決方案:錯誤專案右鍵properties ——》 找到project Facets修改裡面的Java版本(適合的版本)
Java的web專案中使用cookie儲存使用者登陸資訊
最近在編寫論壇系統的實現,其中就涉及到使用者登陸後保持會話直到瀏覽器關閉,同時可以使用cookie儲存登陸資訊以便在下次可以自動登陸。使用struts2框架實現。 下面是在action裡登陸和登出的函式 Java程式碼
訪問控制過濾器(Access Control Filter)
訪問控制過濾器是檢查當前使用者是否能執行訪問的controller action的初步授權模式。 這種授權模式基於使用者名稱,客戶IP地址和訪問型別。 訪問控制過濾器,適用於簡單的驗證。 需要複雜的訪問控制,需要使用將要講解到的基於角色訪問控制(role-bas
Apache配置與應用,虛擬目錄;訪問控制;虛擬Web主機(多域名;多端口),
ESS hat 負載 httpd服務器 數據庫文件 nbsp 新建 需要 工具 1,虛擬目錄Httpd 虛擬目錄 便於網站管理和維護,內容分類。例如;hhtpd://www.benet.com/news 新聞Httpd://www.benet.com/edu 學習以
樹莓派安裝opencv跳坑指南(pip安裝,免原始碼編譯)
在樹莓派上安裝opencv-Python用sudo pip install opencv-python命令總是安裝不上,顯示錯誤說網頁上找不到原始檔 而你又不想用很複雜的壓縮包安裝,可以考慮一下這個方法。廢話不多說下面開始 工具 :1. 樹莓派3b (官方系統)
Kerberos環境下KafkaManager的安裝使用(編譯版和免編譯版)
為了能夠方便的檢視及管理Kafka叢集,yahoo提供了一個基於Web的管理工具(Kafka-Manager)。這個工具可以方便的檢視叢集中Kafka的Topic的狀態(分割槽、副本及訊息量等),支援管理多個叢集、重新分配Partition及建立Topic等功能。
idea熱部署(更新jsp程式碼不用重編譯Tomcat)
前端熱部署(更改前端程式碼,不用重啟tomcat,重新整理瀏覽器就可以) 主要在於 On frame deactivation選項配置選擇為 Update classes and re
【J2EE】【2.JDBC】JDBC連線資料庫(MariaDB,Mysql)(繼續之前jee的登陸例子)
零,名詞解釋 JDBC JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據此可以構建更高階的
Python基礎(reduce,filter,map函式)
map函式: map函式特點:對可迭代物件中的每個元素進行相同的操作(例如每個元素+1等等) 1 #————————————————map函式———————————————————— 2 #對列表的各個元素實現加一功能 3 li=[1,2,3] 4 #定義一個加一函式
Servlet編碼過濾器(Post和get方式都支援)
package com.pdsu.filter; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.Filter; import j
JavaWeb系列之九(jsp,javabean,el表示式)
1.jsp:java server pages,java伺服器端的頁面 sun公司提供開發動態網站的技術servlet jsp jsp會編譯成servlet,會放到tomcata的work目錄 jsp的包含:html+java程式碼+jsp自身
Servlet 過濾器Filter判斷使用者是否登陸(jsp頁面)
過濾器Servlet類: package servlet; import java.io.IOException; //import java.io.PrintWriter; import javax.servlet.Filter; import javax.serv
Filter過濾器(自動登陸、通用的字符集編碼的過濾【處理不同請求的亂碼問題】、。。。)
XML under amt 有關 filter過濾器 pre 繼承 擴展名 獲取 Filter過濾器:可以過濾(攔截)從客戶端向服務器發送的請求。 過濾器的作用: 進行ip的過濾,臟話敏感詞語的過濾,自動登陸,響應壓縮。。。 過濾器的使用: 1.編寫類實現Filte
vue問題記錄(二):cookie實現三天內免登陸,以及記住使用者名稱密碼等
首先,我們是要在自己的專案目錄下面建立一個資料夾,如下圖 ,然後就在我標記的地方,寫關於cookie的方法,獲取cookie,設定,清除等,如下圖 程式碼如下,方便拷貝 //獲取cookie、 export functio
理清jsp的filter(過濾器)和struct2的攔截器(Interceptor)
先放著,待會寫 先記住下面這幾點: 1、filter是servlet,jsp裡面的東西,應該說是屬於規範了,而攔截器是struts的東西,不通用。 2、一個請求,get,post等方式,到後臺,必須先經過filter,然後經過Interceptor,最後在通過在filter
Web開發---過濾器(Filter)
開發人員通過對Filter配置,可以管理所有的web資源,對jsp,servlet,靜態圖片或者靜態html進行攔截。還可以在返回之前進行攔截處理。 一個java類實現了Filter介面,就可以成為一
java web過濾器你瞭解嗎?(Filter和ChainFilter鏈)
1、什麼是過濾器? 在客戶端到伺服器的過程中,當傳送請求時,如果有不符合的資訊將會被filter進行攔截,如果符合則會進行放行,在伺服器給客戶端響應時也會進行判斷 如果有不符合的資訊將會被filter進行攔截,如果符合則會進行放行。 OOP:Java面向物件
SpringMVC的攔截器(Interceptor)和過濾器(Filter)的區別與聯系
get err 實例 分享 切面 簡介 () lee XML 一 簡介 (1)過濾器: 依賴於servlet容器。在實現上基於函數回調,可以對幾乎所有請求進行過濾,但是缺點是一個過濾器實例只能在容器初始化時調用一次。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取