Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 过滤器工作不正常_Servlets_Servlet Filters - Fatal编程技术网

Servlets 过滤器工作不正常

Servlets 过滤器工作不正常,servlets,servlet-filters,Servlets,Servlet Filters,我为我的拍卖web应用程序制作了两个过滤器。我实现了两个过滤器,第一个过滤器执行简单的日志操作,第二个过滤器检查用户是否有权访问特定的资源 问题是这些过滤器只有在我第一次连接到网站时才能正常工作。实际上,它会在工具栏中显示用户的名称,只有在您正确登录时才会出现这种情况。之后,我注销并重复该过程,但第二个过滤器根本不工作 我使用println语句检查过滤器是否实际执行,但事实并非如此。第一个过滤器持续工作。当我更改xml映射时,会出现奇怪的部分。事实上,当我为两个过滤器绘制映射时,第一个过滤器继续

我为我的拍卖web应用程序制作了两个过滤器。我实现了两个过滤器,第一个过滤器执行简单的日志操作,第二个过滤器检查用户是否有权访问特定的资源

问题是这些过滤器只有在我第一次连接到网站时才能正常工作。实际上,它会在工具栏中显示用户的名称,只有在您正确登录时才会出现这种情况。之后,我注销并重复该过程,但第二个过滤器根本不工作

我使用println语句检查过滤器是否实际执行,但事实并非如此。第一个过滤器持续工作。当我更改xml映射时,会出现奇怪的部分。事实上,当我为两个过滤器绘制映射时,第一个过滤器继续工作!为了理解这一点,我昨天一整天都发疯了

更奇怪的是,如果我重写过滤器的xml映射,它们在第一次登录过程中都可以工作,但是一旦我注销并重复操作,登录过滤器就不再工作了。要制作我的web应用程序,我只需要JAVA7、NetBeans7.2和Tomcat7。我担心这可能是Netbeans想法的一个缺陷,但我不确定

xml映射如下所示:


过滤法
Filtri.FiltroLoggingFumettopoli
过滤法
/*
向前地
过滤蛋白
Filtri.FiltroLogin
过滤蛋白
/注册/*
伊尔米孔托
文迪
要求
**
以下是第一个在日志文件中进行日志记录的过滤器:

private void doBeforeProcessing(ServletRequest请求,ServletResponse响应)
抛出IOException、ServletException{
如果(调试){
日志(“FiltroLoggingFumettopoli:DoBeforeProcessing”);
}
HttpServletRequest httpRequest=(HttpServletRequest)请求;
HttpServletResponse=(HttpServletResponse)响应;
此.log(httpRequest.getRemoteHost()+)正在尝试访问页面:“+httpRequest.getRequestURL()+
“il”+TimeUtility.ottieniDataOra()+”+filterConfig.getFilterName());
System.out.println(“FILTRO文件DI日志-->日志文件中发生日志记录:”
+httpRequest.getRequestURL()+“il”+TimeUtility.ottieniDataOra()+”+filterConfig.getFilterName());
}    
私有void doAfterProcessing(ServletRequest请求、ServletResponse响应)
抛出IOException、ServletException{
如果(调试){
日志(“filterologgingfumettopoli:DoAfterProcessing”);
}
}
public void doFilter(ServletRequest请求、ServletResponse响应、,
过滤链(链条)
抛出IOException、ServletException{
重新处理(请求、响应);
可丢弃问题=null;
试一试{
链式过滤器(请求、响应);
}捕获(可丢弃的t){
问题=t;
t、 printStackTrace();
}
doAfterProcessing(请求、响应);
if(问题!=null){
if(ServletException的问题实例){
抛出(ServletException)问题;
}
if(IOException的问题实例){
抛出(IOException)问题;
}
发送处理错误(问题、响应);
}
}
下面是一个过滤器,用于检查是否是授权用户希望访问Registrato文件夹中包含的资源,以及一些servlet:

公共类filterologin实现过滤器
{    
private FilterConfig FilterConfig=null;
public void init(FilterConfig FilterConfig)
{
this.filterConfig=filterConfig;
}
public void doFilter(ServletRequest请求、ServletResponse响应、,
FilterChain链)抛出IOException、ServletException
{
HttpServletRequest httpRequest=(HttpServletRequest)请求;
HttpServletResponse=(HttpServletResponse)响应;

HttpSession sessione=httpRequest.getSession(); ServletContext sc=filterConfig.getServletContext(); String filterName=filterConfig.getFilterName(); 字符串servletPath=“Servlet路径:”+httpRequest.getServletPath(); 字符串url=“”; Utente user=null; user=(utete)sessione.getAttribute(“utete”); if(user==null){ Cookie[]cookies=httpRequest.getCookies(); 字符串email=CookieUtility.ottieniValoreCookie(cookies,userCookie); 如果(email.equalsIgnoreCase(“”){ System.out.println(“FILTRO登录------>NESSUN COOKIE TROVATO!”); System.out.println(“FILTRO登录------>SERVLET上下文:+sc.getContextPath()); url=“/mostrainserrzioni”; httpResponse.sendRedirect(sc.getContextPath()+url); 返回; } 否则{ System.out.println(“FILTRO登录------>COOKIE TROVATO:+电子邮件”); user=uteSQL.cercautent(电子邮件); System.out.println(“FILTRO登录------>Utene TROVATO:+user.getUsername()); setAttribute(“utente”,用户); 字符串salloutente=“Benvenuto”+user.getNome(); setAttribute(“messaggio”,行礼者); } } 其他的 System.out.println(“FILTRO登录------>USER-FOUND:+USER.getUsername()); sc.log(httpRequest.getRemoteHost()+“cerca di accessere alla risorsa:”+httpRequest.getRequestURL())+ “il”+TimeUtility.ottieniDataOra()+”+filterConfig.getFilterName()); System.out.println(“FILTRO文件DI日志-->日志文件中发生日志记录:” +httpRequest.getRequestURL()+“il”+TimeUtility.ottieniDataOra()+”+filterConfig.getFilterName()); 链式过滤器(请求、响应); } 公共空间销毁() { filterConfig=null; } }
简单地
user=sessione==null?null:(utete)sessione.getAttribute(“utete”)
和之后的
else{
只是:
sessionone=httpRequest.getSession(true);
防止为非用户举行会话

–Salvatore Servodio 44米
HttpSession sessione = httpRequest.getSession(false);
if (sessione == null) {
    System.out.println("FILTRO LOGIN----->USER NOT FOUND IN SESSION!");