過濾器中怎麼獲得請求地址
1. java過濾器怎麼不過濾一個頁面里包含的多個請求
abstract public class FilterPerRequest implements Filter {
private static final Boolean FILTERED = true;
private ThreadLocal<Boolean> statusLocal = new ThreadLocal<Boolean>();
@Override
final public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
if (hasNotFiltering()) {
doFilterAndDispatchRequest(req, resp, chain);
return;
}
//dispatch request only
chain.doFilter(req, resp);
}
private boolean hasNotFiltering() {
Boolean status = statusLocal.get();
if (status == null) {
return true;
}
return false;
}
private void doFilterAndDispatchRequest(ServletRequest req,
ServletResponse resp, FilterChain chain) throws IOException,
ServletException {
try {
doFilterPerRequest(req, resp);
setFiltered();
chain.doFilter(req, resp);
} finally {
cleanFilterStatus();
}
}
abstract protected void doFilterPerRequest(ServletRequest req,
ServletResponse resp);
private void setFiltered() {
statusLocal.set(FILTERED);
}
private void cleanFilterStatus() {
statusLocal.set(null);
}
}
那要就情況而定了。。。
如果是request范圍內的話,就可以使用上面的過濾器。
如果是session范圍內的話,就需要在session內存儲一個標志變數,方式和request差不多。
如果是限制用戶操作的話,那就必須將用戶操作持久化。
由於你的問題不明確,我也不好多說...
2. javaweb中filter請求轉發問題
先說你的請求是使用的Dispatcher進行的轉發,地址欄不會改變為跳轉後的請求版地址,你可以搜索重定權向和轉發的區別看看
然後頁面為空白先看看是否是頁面內容本來就該沒有,或者你請求的頁面地址跳轉不對,參見
http://77857.blog.51cto.com/67857/167022
如果還沒解決可以上圖看看
3. java filter 如何中獲取請求地址
當我們訪問index.jsp/時,其實並不是我們瀏覽器真正訪問到了伺服器上的index.jsp 文件,而是先由代理伺服器去訪問index.jsp。
代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問index.jsp的。
所以index.jsp中通過 request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址 的方法:
4. tomcat 過濾器 請求不到url的值
<url-pattern>/*Log.do</url-pattern>
</filter-mapping>
有一個過濾器配置。想已Log為結尾的訪問進入此過濾器
訪問路徑如下
basicLog.do?action=init&logType=money_log&moneyType=2"
basicLog.do?action=init&logType=camp_log"
上面的web.xml配置 不會進入指定過濾器。但是改成
<url-pattern>*Log.do</url-pattern>
後 tomcat啟動會有異常 tomcat6、7都會有問題
請問腫么辦
異常為
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/gm_server]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> *Log.do in filter mapping
2013年11月14日 16:17
xiaozhu5615
5
0 0 1
5. java web項目中,如何通過filter獲取當前action的名字請給出具體的代碼
public String intercept(ActionInvocation invocation) throws Exception {
Map session=invocation.getInvocationContext().getSession();
String actionName=invocation.getProxy().getActionName();
String methodName=invocation.getProxy().getMethod();
}你寫過濾器的時候 有這個方法吧,如果沒有你繼承extends AbstractInterceptor 這個類是Struts2 的攔回截器 也是一樣的答
6. JAVA過濾器可以改變請求的內容或者重新設置請求 這里的請求就是這個servlet 或者jsp或
可以。隨意跳轉。
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect(redirectURL);//這里是你的新回請求路答徑
7. 過濾器里得到請求是get還是post
你是過濾器,解決亂碼吧? 過濾器,都post,和get請求都有效的,只不過伺服器對post和get提交的數據,解碼的方式不一致。 應該是這個讓你覺得過濾器有問題。
8. 請問:如何在java過濾器更改url請求地址,然後交給下一個過濾器處理
更改地址?除非你在這個filter里重定向,第二次直接放行,到第二個filter
9. IIS過濾器,怎麼能捕獲到請求的URL並修改後轉向
核心提示:ISAPI的網站,地址為: 「http://www.test.com/disapi.dll/blist?aa=123&bb=456」 我想做個IIS過濾器,獲得這個地址串,進行一些訪問許可權的操作...我從網上找到一些資料,用GetFilterVersion和HttpFilterProc寫了
一個過濾器,可是取不到全部地址串,只能取到「www.test.com」
如何才能取到全部地址串,並在處理後再分別轉向到不同的網址??
//------------向對方發回信息 兩種方案(1 發送 HTML內容給對方,2 打開伺服器已有文件內容給對方)---------------------
if URL_TempFile='' then
BEGIN
sMsg:='<head><title>IISColander(' + IISColanderSession.SessionWebUrl + ')為本站提供 防盜鏈 保護</title></head><body><h1>文件跳轉</h1>';
sMsg:=sMsg+'IISColander(' + IISColanderSession.SessionWebUrl + ')為本站提供 防盜鏈 保護 <a HREF=http://';
sMsg:=sMsg+ sWebSite +'/ErrorFile/' + IISColanderSession.SessionErrorFile_GetUrl +'?URL="'+ sURL + sQUERY_STRING +'">跳轉</a></body>';
sMsgLen:=length(sMsg);
Try
sHead:= 'Location: http://'+ sWebSite + '/ErrorFile/' + IISColanderSession.SessionErrorFile_GetUrl+'?URL="' + sURL + sQUERY_STRING+'"' + #13#10;
pfc.AddResponseHeaders(pfc,pchar(sHead),0);
sHead:= '302 IISColander(' + IISColanderSession.SessionWebUrl + ')為本站提供防盜鏈保據';
pfc.ServerSupportFunction(pfc, SF_REQ_SEND_RESPONSE_HEADER, PChar(sHead), 0, 0);
pfc.WriteClient(pfc, PChar(sMsg), sMsgLen, 0);
Except
IISColanderSession.WriteLog('Error: 防盜鏈回信息於對方操作失敗'); //日誌記錄點
End;
Result:=SF_STATUS_REQ_FINISHED;
End
Else
Begin
Try
IISColanderSession