2014-09-19 2 views
1

struts.xml 내가 doFilter 방법에서 작업 (dologincheck)를 호출 할 필요가doFilter 방법에서 스트럿츠 액션을 호출하는 방법

<action name="dologincheck" class="com.platinum.uac.biz.LoginAction" method="doLogin"> 
    <result name="success" type="tiles">Homepage</result> 
    <!-- <result name="success">/Profile/view/ViewProfile1.jsp</result>--> 
    <result name="none">/Profile/add/Failure.jsp</result>    
    <result name="mail">/Profile/add/EmailAuthentication.jsp</result> 
</action> 
<action name="newuseraction" class="com.platinum.uac.biz.NewUserAction" method="newuser"> 
    <result name="success" >/Profile/add/ProfileDetails.jsp</result> 
    <result name="error" >/index.jsp</result> 
</action> 

다음과 같이 두 가지 작업이 있습니다. 내가 doFilter 방법에서 작업을 호출하는 방법을 모르기 때문에 여기 붙어

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws 
     IOException, ServletException { 
    try { 
    System.out.println("this is do filter before the jsp page"); 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = ((HttpServletResponse) res); 
    HttpSession session = request.getSession(true); 
    String username, password; 
    Cookie[] cookies; 
    LoginPojo user = (LoginPojo) session.getAttribute("username"); 
    if (user == null) { 
     cookies = request.getCookies(); 
     if (cookies != null && cookies.length > 0) { 
      username = getCookieValue(cookies, "username"); 
      password = getCookieValue(cookies, "password"); 
      System.out.println(username); 
      System.out.println(password); 
      if (username != null && password != null) { 
       LoginPojo pojo = new LoginPojo(username, password); 
       results = dao.Login(pojo); 
       session.setAttribute("userName", user); // usersession? 

       request.getRequestDispatcher("dologincheck").forward(request, 
       response); 
      } else { 
      request.getRequestDispatcher("/index.jsp").forward(request, 
      response); 
      } 
     } else { 
     request.getRequestDispatcher("/index.jsp").forward(request, 
     response); 
     } 
    } 
    } catch (Exception e) { 
    } 
    chain.doFilter(req, res); 
    //throw new UnsupportedOperationException("Not supported yet."); 
} 

web.xml의 내 필터 부분은 내가 대답을 얻었다

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter> 
    <filter-name>AutomaticLogin</filter-name> 
    <filter-class>com.platinum.uac.biz.AutomaticLogin</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>AutomaticLogin</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>*.action</url-pattern> 
    <servlet-name>action</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 
+0

바이 패스 struts2 필터 체인 그리고, 실제 작업에 리디렉션 인터셉터를 사용할 때까지 행위 실행. –

+0

대신에 인터셉터를 사용하여 동일한 결과를 얻으십시오. – Rajesh

답변

1

인터넷에서 검색 후입니다.

사용

response.sendRedirect("dologincheck"); 

대신

request.getRequestDispatcher("dologincheck").forward(request, response); 
관련 문제