LogonAction.java:package app;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;public final class LogonAction extends Action{
//Validate credentials with busines tier
/*
public boolean isUserLogon(String username,String password)
throws UserDirectoryException{
return (UserDirectory.getInstance().isValidPassword(username,password));
}
*/
public boolean isUserLogon(String username,String password){
System.out.println(username+":"+password+" log on ...");
if ((username=="TUD")&&(password=="Hustle"))
{
return true;
}
else
return false;
} public ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest Request,HttpServletResponse Response)
throws IOException,ServletException{
//Obtain username and password from web tier
System.out.println("perform");
String username=((LogonForm)form).getUsername();
String password=((LogonForm)form).getPassword();
//Validate credentials
boolean validated=false;
try{
validated=isUserLogon(username,password);
}
catch(Exception ude){
//couldn't connect to user directory
ActionErrors errors=new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("Error.logon.connect"));
saveErrors(Request,errors);
//return to input page
return (new ActionForward(mapping.getInput()));
}
//Save our logged-in user in the session,because we use it again later.
HttpSession session=Request.getSession();
session.setAttribute(Constants.USER_KEY,form);
//Log this event,if appropriate
//if (servlet.getDebug()>=Constants.DEBUG)
{
StringBuffer message=new StringBuffer("LogonAction:User'");
message.append(username);
message.append("' logged on in session");
message.append(session.getId());
servlet.log(message.toString());
}
//return success
System.out.println("welcome"+Constants.WELCOME);
return (mapping.findForward(Constants.WELCOME));
}
}
-------------------------------------------------------------------------------------Constants.java中定义了Constants.WELCOME、Constants.SUCCESS等。perform()一开始就加了打印语句,但是控制台里却没有打出来。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;public final class LogonAction extends Action{
//Validate credentials with busines tier
/*
public boolean isUserLogon(String username,String password)
throws UserDirectoryException{
return (UserDirectory.getInstance().isValidPassword(username,password));
}
*/
public boolean isUserLogon(String username,String password){
System.out.println(username+":"+password+" log on ...");
if ((username=="TUD")&&(password=="Hustle"))
{
return true;
}
else
return false;
} public ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest Request,HttpServletResponse Response)
throws IOException,ServletException{
//Obtain username and password from web tier
System.out.println("perform");
String username=((LogonForm)form).getUsername();
String password=((LogonForm)form).getPassword();
//Validate credentials
boolean validated=false;
try{
validated=isUserLogon(username,password);
}
catch(Exception ude){
//couldn't connect to user directory
ActionErrors errors=new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("Error.logon.connect"));
saveErrors(Request,errors);
//return to input page
return (new ActionForward(mapping.getInput()));
}
//Save our logged-in user in the session,because we use it again later.
HttpSession session=Request.getSession();
session.setAttribute(Constants.USER_KEY,form);
//Log this event,if appropriate
//if (servlet.getDebug()>=Constants.DEBUG)
{
StringBuffer message=new StringBuffer("LogonAction:User'");
message.append(username);
message.append("' logged on in session");
message.append(session.getId());
servlet.log(message.toString());
}
//return success
System.out.println("welcome"+Constants.WELCOME);
return (mapping.findForward(Constants.WELCOME));
}
}
-------------------------------------------------------------------------------------Constants.java中定义了Constants.WELCOME、Constants.SUCCESS等。perform()一开始就加了打印语句,但是控制台里却没有打出来。
你struts-config.xml中的action中怎么没有<forward>元素,你要ation往哪跳转啊。
Struts In Action中就是这样写的。
我理解的是在应用的LogonAction中根据应用处理的情况forward,比如最后一句:
return (mapping.findForward(Constants.WELCOME));
在你的struts-config.xml配置文件中的action也要有相应的 <forward name="welcome" path="/success.jsp">元素,不然就出现你的错误。
我觉得我肯定是忽略了什么,要不然我照着网上做了好几个例子都是这样。
映射关系之类我也检查了,觉得没什么错了啊。<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config>
<form-beans>
<form-bean name="logonForm"
type="app.LogonForm"/>
</form-beans>
<!-- ========================================= Global Exception Definitions --> <global-exceptions>
<!-- sample exception handler
<exception
key="expired.password"
type="app.ExpiredPasswordException"
path="/changePassword.jsp"/>
end sample -->
</global-exceptions>
<!-- =========================================== Global Forward Definitions --> <global-forwards>
<forward
name="logon"
path="/Logon.do"/>
<forward
name="welcome"
path="/Welcome.do"/>
<forward
name="LogonSubmit"
path="/LogonSubmit.do"/>
</global-forwards>
<!-- =========================================== Action Mapping Definitions --> <action-mappings>
<!-- Default "Welcome" action -->
<!-- Forwards to Welcome.jsp -->
<action
path="/Welcome"
forward="/pages/Welcome.jsp"/>
<action
path="/Logon"
forward="/pages/logon.jsp"/>
<action
path="/LogonSubmit"
type="app.LogonAction"
name="logonForm"
scope="request"
validate="false"
input="/pages/logon.jsp"/>
</action-mappings>
<!-- ============================================= Controller Configuration --> <controller
processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<!-- ======================================== Message Resources Definitions --> <message-resources parameter="MessageResources" /> <plug-in className="org.apache.struts.tiles.TilesPlugin" > <!-- Path to XML definition file -->
<set-property property="definitions-config"
value="/WEB-INF/tiles-defs.xml" />
<!-- Set Module-awareness to true -->
<set-property property="moduleAware" value="true" />
</plug-in>
<!-- =================================================== Validator plugin --> <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>