導航:首頁 > 凈水問答 > javaweb過濾器配置

javaweb過濾器配置

發布時間:2022-08-16 02:32:06

❶ java裡面過濾器和攔截器的區別

java裡面過濾器和攔截器的區別:
①攔截器是基於java的反射機制的,而過濾器是基於函數回調。
②攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
③攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
④攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
⑤在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。
⑥攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器里注入一個service,可以調用業務邏輯。

攔截器:是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
下面通過實例來看一下過濾器和攔截器的區別:
使用攔截器進行/admin 目錄下jsp頁面的過濾
<package name="newsDemo" extends="struts-default"
namespace="/admin">
<interceptors>
<interceptor name="auth" class="com.test.news.util.AccessInterceptor" />
<interceptor-stack name="authStack">
<interceptor-ref name="auth" />
</interceptor-stack>
</interceptors>
<!-- action -->
<action name="newsAdminView!*" class="newsAction"
method="{1}">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authStack">
</interceptor-ref>

下面是我實現的Interceptor class:
package com.test.news.util;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.test.news.action.AdminLoginAction;
public class AccessInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -4291195782860785705L;
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
ActionContext actionContext = actionInvocation.getInvocationContext();
Map session = actionContext.getSession();
//except login action
Object action = actionInvocation.getAction();
if (action instanceof AdminLoginAction) {
return actionInvocation.invoke();
}
//check session
if(session.get("user")==null ){
return "logout";
}
return actionInvocation.invoke();//go on
}
}
過濾器:是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的 action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字元集,或者去除掉一些非法字元.
使用過濾器進行/admin 目錄下jsp頁面的過濾,首先在web.xml進行過濾器配置:
<filter>
<filter-name>access filter</filter-name>
<filter-class>
com.test.news.util.AccessFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>access filter</filter-name>
<url-pattern>/admin
public void destroy() {

}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();
if(session.getAttribute("user")== null && request.getRequestURI().indexOf("login.jsp")==-1 ){
response.sendRedirect("login.jsp");
return ;
}
filterChain.doFilter(arg0, arg1);

}
public void init(FilterConfig arg0) throws ServletException {
}
}

❷ javaweb中怎麼添加過濾器

web.xml中配置,如filter>
<!-- Filter的名字 -->
<filter-name>log</filter-name>
<!-- Filter的實現類 -->
<filter-class>lee.LogFilter</filter-class>
</filter>
<!-- 定義Filter攔截的版URL地址 -->
<filter-mapping>
<!-- Filter的名字 -->
<filter-name>log</filter-name>
<!-- Filter負責攔截的URL 全部以/的請求,如果<url-pattern>/*.action </>,將會權以攔截*.action的請求-->
<url-pattern>/*</url-pattern>
</filter-mapping>

❸ java web項目中過濾器的使用(過濾器執行多次)

圖片中顯示的log是執行一次的。

不是本來就打開login.jsp嗎,不用再跳轉到login.jsp,不是的時候,再跳轉。

❹ java web項目裡面的加了過濾器,在自己電腦上面測試項目的時候就打不開網頁了,怎麼回事

這是我自己寫過的一個登陸過濾器

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

System.out.println("=============LoginFilter============");

//將父類轉成子類
HttpServletRequest request=(HttpServletRequest) req;

//javaweb_T7/LoginServlet
String uri=request.getRequestURI();

//控制登錄的
HttpSession session=request.getSession();
String userName=(String) session.getAttribute("userName");
//如果沒有登錄就跳轉

//要麼你session中有東西(已經登錄) ,要麼你是登錄的動作
if(userName!=null || uri.indexOf("LoginServlet")!=-1){
//如果登錄過,就不阻攔
chain.doFilter(req, res);
}else{
request.setAttribute("msg", "請先登錄後操作");
request.getRequestDispatcher("login.jsp")
.forward(request, res);
}
}

❺ Java Web 過濾器

路徑配置錯誤,你的來filter包應該放在WEB-INFO/lib/下面源。所有的class路徑都會到lib或classes目錄下面找,肯定不會去你的/common/classes/zs/simplefilter/找類。

是打成jar包放到lib下的不? 在lib下的要是.jar的。

❻ 用javaweb怎樣實現過濾器

public class FilterImpl implements Filter{
public void destroy() {
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
/**
*根據自己的需要,編寫相應功能內的過濾語容句
*/
chain.doFilter(request, response);
}
}else{
chain.doFilter(request, response);
}

}

public void init(FilterConfig arg0) throws ServletException {
System.out.println("---程序已啟動---");
}
}

❼ Java Web 中的過濾器如何使用

你你在配置過來濾器的自 時候
配置web.xml

<filter>

<filter-name>Set Character Encoding</filter-name>

<filter-class>com.SetCharacterEncodingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>Set Character Encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

最後的<url-pattern>/*</url-pattern> 就是過濾的路徑

比如你在文件夾下吧不過濾的放在根目錄,過濾的放在一個filter的文件夾下,那麼就配<url-pattern>/filter/*</url-pattern> 這樣根目錄的所有文件都不過濾,名字我隨便起的,你可以根據你自己的寫,或者這個*也可以用匹配符,比如<url-pattern>/*.jsp</url-pattern>
再或者<url-pattern>/java*</url-pattern> 這樣只有以java開頭的才過濾,其他的不過濾
你可以根據實際設置

❽ java 過濾器必須要配置在web.xml中嗎

servlet3.0開始就可以用註解代替web.xml裡面的好多配置了

❾ java web 過濾器跟攔截器的區別和使用

java web 過濾器跟攔截器的區別和使用分別介紹如下:

1、過濾器的使用

Filter主要對客戶端的請求和伺服器的響應進行過濾,使用場景:

作用:可以通過Filter技術,對web伺服器管理的所有web資源,例如JSP、Servlet、靜態圖片文件或靜態 html文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的許可權訪問控制、過濾敏感詞彙、壓縮響應信息等一些高級功能。

同開發Servlet一樣,寫完了類,接下來就是配置了,我們需要在web.xml文件中配置Filter。具體的配置和Servlet配置如出一轍。

<filter>
<filter-name>log</filter-name>
<filter-class>com.jellythink.practise.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

上面配置中比較重要的就是url-pattern和dispatcher了。

過濾類:

public class LogFilter implements Filter
{
private FilterConfig config;

public void init(FilterConfig config)
{
this.config = config;
}

public void destroy()
{
this.config = null;
}

// 這個方法是Filter的核心方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
// 對用戶的請求進行處理
ServletContext context = this.config.getServletContext();
long begin = System.currentTimeMillis();

// 輸出過濾信息
System.out.println("開始過濾...");
HttpServletRequest hRequest = (HttpServletRequest)request;
System.out.println("Filter已經截獲到用戶請求的地址:" + hRequest.getServletPath());
// 處理完以後,將請求交給下一個Filter或者Servlet處理
chain.doFilter(request, response);
// 對伺服器的響應進行處理
long end = System.currentTimeMillis();
System.out.println("過濾結束");
System.out.println("請求被定為到:" + hRequest.getRequestURI() + "; 所花費的時間為:" + (end - begin));
}
}

2、攔截器的使用:

攔截器的主要作用是攔截用戶的請求並進行相應的處理。比如通過它來進行許可權驗證,或者是來判斷用戶是否登陸,或者是像12306那樣子判斷當前時間是否是購票時間。

1.在SpringMVC的配置文件中加上支持MVC的schema

xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
下面是聲明示例:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

這樣在SpringMVC的配置文件中就可以使用mvc標簽了,mvc標簽中有一個mvc:interceptors是用於聲明SpringMVC的攔截器的。

❿ 關於JAVA WEB中登陸過濾器的問題

你先把過濾器new出來,再調用不就好了

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();

String name = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();

if(name.equals("admain") && password.equals("admain")){

session.setAttribute("usertype", "admain");

Fileter f=new Fileter();
f.doFilter(request,response,chain);//反正你先把過濾器new出來,再調用不就好了,具體的屬性看實際情況,我是手寫代碼,難免有錯

}else{
out.print("<a href=Admain.html>用戶頁面</a>");
}
}

閱讀全文

與javaweb過濾器配置相關的資料

熱點內容
直飲水機卡掉了不給補怎麼辦 瀏覽:446
氨氮與凈水劑反應生成什麼 瀏覽:369
ro反滲透濾水器怎麼樣 瀏覽:443
汽車水箱里放出來的水有水垢 瀏覽:601
河南樹脂雕塑模具 瀏覽:147
污水生化處理工藝3d圖 瀏覽:89
浴池過濾泵配多大功率 瀏覽:291
最新污水處理招聘信息怎麼寫 瀏覽:678
純水泥加什麼可以做找平 瀏覽:98
意識形態反分裂反滲透發聲亮劍教師 瀏覽:930
tpx樹脂與PE 瀏覽:986
沒有污水怎麼才能不填受納水體 瀏覽:234
污水處理廠負荷率指什麼 瀏覽:153
核廢水排入海洋如何處理 瀏覽:860
amd顯卡過濾器選哪個好 瀏覽:997
上海電鍍廢水治理多少錢 瀏覽:30
金魚缸的過濾器氣管不放水裡嗎 瀏覽:337
化工廢水規模 瀏覽:937
污水廠安全生產情況匯報 瀏覽:130
實驗室反滲透停止使用後怎麼辦 瀏覽:896