Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Jsf 登录过滤器在url中被重定向,但查看页面显示';此网页有一个重定向循环';_Jsf_Jsf 2_Xhtml_Servlet Filters - Fatal编程技术网

Jsf 登录过滤器在url中被重定向,但查看页面显示';此网页有一个重定向循环';

Jsf 登录过滤器在url中被重定向,但查看页面显示';此网页有一个重定向循环';,jsf,jsf-2,xhtml,servlet-filters,Jsf,Jsf 2,Xhtml,Servlet Filters,问题从这里开始,我在eclipse重新加载上下文时遇到异常 java.lang.NullPointerException at org.richfaces.application.ServiceTracker.release(ServiceTracker.java:100) at org.richfaces.application.InitializationListener.onStop(InitializationListener.java:144) at org.r

问题从这里开始,我在eclipse重新加载上下文时遇到异常

java.lang.NullPointerException
    at org.richfaces.application.ServiceTracker.release(ServiceTracker.java:100)
    at org.richfaces.application.InitializationListener.onStop(InitializationListener.java:144)
    at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:154)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
    at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
    at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2144)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:302)
    at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:332)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3947)
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
    at java.lang.Thread.run(Unknown Source)
我的web.xml在这里

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>JsfEaxmples</display-name>
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>1</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.SEPARATOR_CHAR</param-name>
    <param-value>-</param-value>
  </context-param>
  <context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>classic</param-value>
  </context-param>
  <context-param>
    <param-name>facelets.BUILD_BEFORE_RESTORE</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE</param-name>
    <param-value>true</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>

  </servlet-mapping>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>

    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>

  <filter>
  <filter-name>sessionfilter</filter-name>
  <filter-class>com.invoice.sessionfilter</filter-class>

  </filter>
  <filter-mapping>
  <filter-name>sessionfilter</filter-name>
  <url-pattern>/Jsf Invoice System/*</url-pattern>

  </filter-mapping>

</web-app>
我应该完全改变我的url模式吗?我不知道如何继续

我的登录bean类是

package com.invoice;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

@SessionScoped
public class login {

    String username,userpassword,errormess,navipg;

    boolean isLoggedIn;

    public boolean isLoggedIn() {
        return isLoggedIn;
    }

    public void setLoggedIn(boolean isLoggedIn) {
        this.isLoggedIn = isLoggedIn;
    }

    public String getNavipg() {
        return navipg;
    }

    public void setNavipg(String navipg) {
        this.navipg = navipg;
    }

    public String getErrormess() {
        return errormess;
    }

    public void setErrormess(String errormess) {
        this.errormess = errormess;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpassword() {
        return userpassword;
    }

    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }
    public String navigate()
    {
        try
        {

            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","invoice","google");
            Statement stmt=con.createStatement(); 
            ResultSet rs=stmt.executeQuery("select username,password from usertable where username='"+username+"' and password='"+userpassword+"' ");
            if(rs.next())
            {

                setErrormess("");
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("uname",this.username );
                navipg="invoiceinfo";
                setLoggedIn(true);


            }
            else

            {

                setErrormess("Invalid Login credentials");
                username="";
                navipg="Login";
                setLoggedIn(false);

            }

        }
        catch(Exception e)
        {

            e.printStackTrace();

        }
        return navipg;

    }
    public String logout()
    {

         FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
         setLoggedIn(false);
            return "Login";

    }




}
但是我调试并检查了它,实际上执行并没有进入这里

String url="/Login.xhtml";
    if(req.getRequestURI().equals(url))
过滤器中的第50行没有被执行,我甚至像这样更改了

String url="/Jsf Invoice System/Login.xhtml";
        if(req.getRequestURI().equals(url))
请帮助我并给出此问题的解决方案

查看此链接:

String url="/Jsf Invoice System/Login.xhtml";
        if(req.getRequestURI().equals(url))