doFilter () не вызывает - PullRequest
       10

doFilter () не вызывает

0 голосов
/ 27 августа 2018

Не могли бы вы помочь проверить, почему doFilter не вызывается

Сначала я начал с создания webFilter и реализации необходимых методов, таких как doFilter () и doInit () ..

 @WebFilter("/app/*")
public class NoCacheFilter implements Filter {
private FilterConfig filterConfig;

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    System.out.print("inDoFilter");


    if (!request.getRequestURI().startsWith(request.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        response.setDateHeader("Expires", 0); // Proxies.
    }

    HttpSession session = request.getSession(false);
    String loginURI = request.getContextPath() + "/LoginPage.xhtml";


    if (request.getRequestURI().indexOf(loginURI) >= 0
            || request.getRequestURI().indexOf("/Login") >= 0) {
        chain.doFilter(request, response);
        System.out.print("in2");
    } else if (session == null || session.getAttribute("login") == null) {
        System.out.print("in");
        response.sendRedirect(loginURI);
    } else {
        System.out.print("out");
        chain.doFilter(request, response);
    }

}
 }

web.xml

  <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
    <filter-name>NoCacheFilter</filter-name>
    <filter-class>src.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCacheFilter</filter-name>
    <url-pattern>/app/*</url-pattern>
</filter-mapping>
</web-app>

Login.java этот класс представляет логин, отвечающий за проверку существования пользователя в базе

     public boolean checkuser(){
    //UserBean bean=new UserBean();
    //preparing some objects for connection 

    Statement stmt = null;    

    Sql sql = new Sql("localhost", "XE", "HR", "HR");

    String query = "select * from users where login='"
                    + login
                    + "' AND password='"
                    + password
                    + "'";
        System.out.println(query);
        try{ 
            sql.Open_Connexion();
            Statement st = sql.Get_Connection().createStatement();
            ResultSet rs = st.executeQuery(query);

            boolean more = rs.next();
            // if user does not exist set the isValid variable to false
        if (!more) 
        {
            System.out.println("Sorry, you are not a registered user! Please sign up first");
            FacesContext.getCurrentInstance().addMessage("myform1:loginBtn", new FacesMessage("login ou mot de passe incorrect"));
            setValid(false);
        } 

        //if user exists set the isValid variable to true
        else if (more) 
        {
            String firstName = rs.getString("login");
            //String lastName = rs.getString("LastName");
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("login", firstName);
            System.out.println("Welcome " + firstName);
            setLogin(login);
            //setLastName(lastName);
            setValid(true);
            sql.Fermer_Cnn();
            return true;
        }


        }catch(Exception e){
            e.printStackTrace();
        }

  return false;


}

, хотя я и использовал фильтр и использовалон в правильном пути к классу не вызывался, я попытался использовать журнал, чтобы увидеть, соответствуют ли выходные данные, но все еще ничего не показывает из System.out.println (), поэтому я знал, что метод doFilter () не вызывается.

Последний метод представляет logout ()

public boolean logout() throws IOException {

    FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
    return true;
}

Наша цель состоит в том, чтобы отменить использование кнопки, другими словами, после того, как пользователь был отклонен, он не может вернуться на последнюю страницу, нажавкнопка возврата браузера.и перенаправление используется face-config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...