简体   繁体   English

带有Servlet过滤器的JSF 2.2

[英]Jsf 2.2 with servlet filter

I use jsf 2.2 and i want to redirect jsf pages to login page without session i didn't use http session here.iam trying to use session scoped variable and check whelther variable is null or not and redirect it to login page because session scoped is enough instead of http session right?? 我使用jsf 2.2,我想将jsf页面重定向到没有会话的登录页面,我在这里不使用http session.iam尝试使用会话范围的变量并检查whelther变量是否为null并将其重定向到登录页面,因为会话范围是足够代替http会话了吗?

my filter class is 我的过滤器类是

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
    }

}

my bean class is here 我的豆类在这里

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

    }




}

my web.xml filter tag is 我的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>

but page is not getting redirected 但是页面没有被重定向

b.username=="" will NEVER be true . b.username=="" 永远不会true

Required Reading 必读

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM