一般用法,全局与局部,动态修改Struts配置文件,手动完成转向.动态 ActionForward
全局ActionForward配置
<global-forwards>
<forward name="success" path="/WEB-INF/jsp/login_success.jsp" />
<forward name="error" path="/WEB-INF/jsp/login_error.jsp" />
</global-forwards>
struts-config.xml文件不能在运行期修改
LoginActionForm laf=(LoginActionForm)form;
String username=laf.getUsername();
String password=laf.getPassword();
if("admin".equals(username)&&"admin".equals(password)){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
mapping.setAttribute("att");//这里这样动态的去修改是会报错的,不能这样去修改
LoginActionForm laf=(LoginActionForm)form;
String username=laf.getUsername();
String password=laf.getPassword();
手动完成转向:
在Action必须返回null给struts框架,而不是ActionFowrad对象,自己用request或是response来进行转向,一般不建议这样做,除非你有特殊的需求,如要输出jfreeChart图片
动态的ActionForward,动态的ActionForward可以运行期修改,即是自己在Action中自己new 一个ActionForward返回给struts框架,这样更灵活,那么在代码中就动态的去修改配置:
public class DynaActionForwardTestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
int page = Integer.parseInt(request.getParameter("page"));
ActionForward af = new ActionForward();
af.setPath("/page" + page + ".jsp");
return af;
/*
ActionForward af = null;
if (page == 1) {
af = mapping.findForward("page1");
}
if (page == 2) {
af = mapping.findForward("page2");
}
return af;
*/
}
被注释部分是一般性的做法
}