2014-11-04 4 views
0

jsf 2.2를 사용하고 jsf 페이지를 세션없이 로그인 페이지로 리디렉션하려고합니다. 여기서는 http 세션을 사용하지 않았습니다 .iim은 세션 범위 변수를 사용하고 whelther 변수가 null인지 아닌지 확인하려고합니다. 및 세션 범위가 HTTP 세션 권한 대신 충분하기 때문에 로그인 페이지로 리디렉션 하시겠습니까 ??서블릿 필터가있는 Jsf 2.2

내 필터 클래스는

package com.invoice; 

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.annotation.WebFilter; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet Filter implementation class sessionfilter 
*/ 


public class sessionfilter implements Filter { 

    /** 
    * Default constructor. 
    */ 
    public sessionfilter() { 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see Filter#destroy() 
    */ 
    public void destroy() { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) 
    */ 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     // TODO Auto-generated method stub 
     // place your code here 

     // pass the request along the filter chain 
     HttpServletResponse httpResponse = (HttpServletResponse) response; 
     login b=new login(); 
     if(b.username=="") 
     { 

      httpResponse.sendRedirect("Login.xhtml"); 

     } 
     else{ 
     chain.doFilter(request, response); 
     } 
    } 

    /** 
    * @see Filter#init(FilterConfig) 
    */ 
    public void init(FilterConfig fConfig) throws ServletException { 
     // TODO Auto-generated method stub 
    } 

} 

내 빈 클래스가 여기에있다

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; 


public class login { 

    String username,userpassword,errormess,navipg; 



    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(""); 
       navipg="invoiceinfo"; 


      } 
      else 

      { 

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


      } 

     } 
     catch(Exception e) 
     { 

      e.printStackTrace(); 

     } 
     return navipg; 

    } 
    public String logout() 
    { 

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

    } 




} 

내 web.xml에 필터 태그는

<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> 

하지만 페이지가 리디렉션 점점되지

답변