Ho il seguente struts-config.xml:


codice:
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">


<struts-config>
    <form-beans>
        <form-bean name="loginForm" type="com.storefront.struts.form.LoginForm"/>
     
    </form-beans>
    
    <global-exceptions>
       <exception key="global.error.invalidlogin" path="/login.jsp" scope="request" type="com.storefront.struts.exception.InvalidLoginException"/>
    </global-exceptions>

    <global-forwards>
       
    </global-forwards>

    <action-mappings>
        <action input="/login.jsp" name="loginForm" scope="request" validate="true" path="/login" type="org.apache.struts.action.LoginAction">
          <forward name="success" path="/action/getMainPage" redirect="true"/>
          <forward name="failure" path="/login.jsp" redirect="true"/>
        </action>
        
    </action-mappings>
    
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter="com/myapp/struts/ApplicationResource"/>    
    
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
        <set-property property="moduleAware" value="true" />
    </plug-in>
    
    
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
  
</struts-config>
mentre la classe LoginAction è la seguente:


codice:
package com.storefront.struts.action;

import com.storefront.struts.form.LoginForm;
import com.storefront.struts.service.IAuthentication;
import com.storefront.struts.service.SecurityService;
import com.storefront.struts.view.UserView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author campagna
 */
public class LoginAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
      
        ActionForward forward=null;
        UserView userView=null;
        String email=((LoginForm)form).getEmail();
        String password=((LoginForm)form).getPassword();
        IAuthentication service=new SecurityService();
        userView=service.login(email, password);
        HttpSession session=request.getSession(false);
        if(session!=null){
            session.invalidate();
        }
        session=request.getSession(true);
        
        session.setAttribute("USER_VIEW_KEY", userView);
        return mapping.findForward(SUCCESS);
       
    }
}
la classe SecurityService è invece:

codice:
package com.storefront.struts.service;
import com.storefront.struts.view.UserView;
import com.storefront.struts.exception.InvalidLoginException;
/**
 *
 * @author campagna
 */
public class SecurityService implements IAuthentication{
    public UserView login(String userName,String pwd) throws InvalidLoginException{
       if("123".equals(userName) && "456".equals(pwd)){  
        UserView userView=new UserView("John","Doe");
        userView.setId("39017");
        return userView;
       }else{
           
           String msg="Invalid Login Attempt by"+userName+":"+pwd;
           System.out.print(msg);
           throw new InvalidLoginException(msg);
       } 
    }
}
se inserisco nei campi email e password dei valori diversi da "123" e "456" ottengo una eccezione che non viene gestita mentre nel file struts-config.xml è inserito l'eccezione InvalidLoginException......

perchè?


tulipan