过滤器中怎么获得请求地址
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