⑴ jsp中過濾器實現什麼功能
過濾器是可用於 Servlet 編程的 Java 類,可以實現以下目的:
在客戶端的請求訪問後端資源之前,攔截這些請求。
在伺服器的響應發送回客戶端之前,處理這些響應。
⑵ jsp+servlet中session失效後跳轉到登錄頁面 ,用過濾器filter來寫,希望能有具體步驟和注釋
public class SsFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession();
if (session.getAttribute("user") == null) {
resp.sendRedirect("/index.jsp");
return;
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
⑶ jsp中添加過濾器
1.首先建一個類(例charset.java),該類實現Filter介面
package com; //com包
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;
public class charset implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//方法拷貝過來即可
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
2.在工程WebRoot/WEB-INIF/web.xml配置文件中寫入以下代碼:
<filter>
<filter-name>名字(可自定義)</filter-name>
<filter-class>類名</filter-class>
</filter>
<filter-mapping>
<filter-name>同上</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
⑷ jsp 過濾器過濾jsp和html怎麼寫
<servlet-mapping>
<servlet-name>servletname</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servletname</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
⑸ jsp !!!servlet!!!為什麼我寫了一個編碼過濾器沒有作用不用粘代碼大神肯定知道怎
你打個斷點看進去過濾器沒, 你是把request和response的編碼都換了嗎?
⑹ 編寫servlet過濾器是,哪個介面用於調用過濾器鏈中下一個過濾器
1、首先要明確攔截器、濾器
1.1 攔截器:
攔截器AOP(Aspect-Oriented Programming)用於某或欄位訪問前進行攔截前或加入某些操作攔截AOP種實現策略
Webwork文文檔解釋——攔截器態攔截Action調用象提供種機制使發者定義action執行前執行代碼action執行前阻止其執行同提供種提取action重用部式
談攔截器詞家應該知道——攔截器鏈(Interceptor ChainStruts 2稱攔截器棧 Interceptor Stack)攔截器鏈攔截器按定順序聯結條鏈訪問攔截或欄位攔截器鏈攔截器按其前定義順序調用
1.2. 攔截器實現原理:
部候攔截器都通代理式調用Struts 2攔截器實現相簡單請求達Struts 2ServletDispatcherStruts 2查找配置文件並根據其配置實例化相攔截器象串列表(list)調用列表攔截器
1.3 濾器
濾器程序先於與相關servlet或JSP頁面運行伺服器濾器附加或servlet或JSP頁面並且檢查進入些資源請求信息濾器作選擇:
①規式調用資源(即調用servlet或JSP頁面)
②利用修改請求信息調用資源
③調用資源發送響應客戶機前其進行修改
④阻止該資源調用代轉其資源返特定狀態代碼或替換輸
1.4 Servlet濾器基本原理
Servlet作濾器使用客戶請求進行處理處理完交給濾器處理客戶請求濾鏈逐處理直請求發送目標止例某網站提交修改注冊信息網頁用戶填寫完修改信息並提交伺服器進行處理需要做兩項工作:判斷客戶端否效;提交數據進行統編碼兩項工作由兩濾器組濾鏈進行處理濾器處理功提交數據發送終目標;濾器處理功視圖派發指定錯誤頁面
-
⑺ jsp題庫什麼是serverlet過濾器作用是
要實現過濾器,必須實現javax.servlet.Filter介面
並重寫doFilter方法
先貼代碼 在解釋
1/**
2*字元過濾器
3*
4*/
5//實現過濾器的方法實現filter介面重寫doFilter方法
{
7
8privateStringencode=null;
9privatebooleanignore=false;//過濾器開關
10
11publicvoiddestroy(){
12encode=null;
13ignore=false;
14}
15
16publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
17FilterChainchain)throwsIOException,ServletException{
18if(!ignore){
19if(null==request.getCharacterEncoding()){
20request.setCharacterEncoding(encode);
21
22}
23}
24chain.doFilter(request,response);
25
26}
27
28publicvoidinit(FilterConfigfilterConfig)throwsServletException{
29Stringencode=filterConfig.getInitParameter("encode");
30Stringignore=filterConfig.getInitParameter("ignore");
31if(this.encode==null)
32this.encode=encode;
33if("1".equals(ignore)||"yes".equals(ignore)){
34this.ignore=true;
35}
36}
37
38}
1<filter>
2<filter-name>encodeFilter</filter-name>
3<filter-class>com.lwx.filter.EncodeFilter</filter-class>
4<init-param>
5<param-name>encode</param-name>
6<param-value>GBK</param-value>
7</init-param>
8<init-param>
9<param-name>ignore</param-name>
10<param-value>false</param-value>
11</init-param>
12</filter>
13<filter-mapping>
14<filter-name>encodeFilter</filter-name>
15<url-pattern>/*</url-pattern>
16</filter-mapping>
這里解釋下
<filter-mapping>中的<url-pattern>就是過濾器要過濾的對象/* 就是對所有的請求進行過濾
當然這里還有一個過濾器的開關ignore 當ignore為true/1/yes的時候,則過濾器不起作用,還有一個就是過濾器要設置的編碼格式的值
java代碼中,init方法是初始化過濾器的時候調用一次
destroy 則不用解釋了
doFilter 則是需要我們去重寫的
作用用到的許可權作用比較多、
詳細介紹:http://blog.csdn.net/songlixing/article/details/7016023
許可權作用案例:http://www.cnblogs.com/draem0507/archive/2012/11/09/2762613.html
希望能對你有幫助!
⑻ JSP中用filter 過濾某個包中的所有servlet
web.xml中這樣配置:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.zq.servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/servlet/Login</url-pattern>
</servlet-mapping>
或者不配置web.xml在servlet中寫註解:
@WebServlet("/servlet/Login")
配置fliter可以在web.xml中這樣寫:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.zy.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
或者不配置web.xml在filter中寫註解:
@WebFilter(filterName="/MyFilter",urlPatterns="/servlet/*")
即在所有想過濾的servlet名字前加上「/setvlet」在過濾的時候過濾路徑就可以寫成「/servlet/*」這樣就能過濾所有的Servlet。
⑼ JSP過濾器的作用是什麼用它有什麼好處
過濾器是一個對象,可以傳輸請求或修改響應。它可以在請求到達Servlet/JSP之前對其進行預處理,而且能夠在響應離開Servlet/JSP之後對其進行後處理。所以如果你有幾個Servlet/JSP需要執行同樣的數據轉換或頁面處理的話,你就可以寫一個過濾器類,然後在部署描述文件(web.xml)中把該過濾器與對應的Servlet/JSP聯系起來。你可以一個過濾器以作用於一個或一組servlet,零個或多個過濾器能過濾一個或多個servlet。一個過濾器實現java.servlet.Filter介面並定義它的三個方法:1. void init(FilterConfig config) throws ServletException:在過濾器執行service前被調用,以設置過濾器的配置對象。2. void destroy();在過濾器執行service後被調用。3. Void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException;
⑽ jsp/servlet過濾器和struts2攔截器的有什麼區別
攔截器和過濾器的區別:
1、攔截器是基於java的反射機制的,而過濾器是基於函數回調
2、過濾器依賴與servlet容器,而攔截器不依賴與servlet容器
3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用
4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能
5、在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次
攔截器
:是在面向切面編程的就是在你的service或者一個方法前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
下面通過實例來看一下過濾器和攔截器的區別:
使用攔截器進行/admin 目錄下jsp頁面的過濾
[html] view plain
<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:
[java] view plain
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;
/**
*
@author chaoyin
*/
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
}
}
過濾器:是在javaweb中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的
action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者
struts的action前統一設置字元集,或者去除掉一些非法字元。
使用過濾器進行/admin
目錄下jsp頁面的過濾,首先在web.xml進行過濾器配置:
[html] view plain
<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/*</url-pattern>
</filter-mapping>
下面是過濾的實現類:
[java] view
plain
package com.test.news.util;
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 AccessFilter
implements Filter {
/**
* @author chaoyin
*/
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 {
}
}
摘自網路--