• 1. Struts2的结果类型
  • 2. 结果类型转发举例action中增加: HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("username", "username"); success.jsp页面中增加: resulttype : ${requestScope.username} 得出结果: 在success.jsp页面中得到username的值。resulttype : username
  • 3. result每个 action 方法都将返回一个 String 类型的值, Struts 将根据这个值来决定响应什么结果. 每个 Action 声明都必须包含有数量足够多的 result 元素, 每个 result 元素分别对应着 action 方法的一个返回值. result 元素可以有下面两个属性 name: 结果的名字, 必须与 Action 方法的返回值相匹配, 默认值为 success type: 响应结果的类型. 默认值为 dispatcher
  • 4. 北京传智播客教育 www.itcast.cn结果类型在struts2-core-2.3.3.jar包下的struts-default.xml配置文件:
  • 5. 结果类型: dispatcherdispatcher 结果类型是最常用的结果类型, 也是 struts 框架默认的结果类型 该结果类型有一个 location 参数, 它是一个默认参数 查看API文档org.apache.struts2.dispatcher.ServletDispatcherResult dispatcher 结果类型将把控制权转发给应用程序里的某个资源. dispatcher 结果类型不能把控制权转发给一个外部资源. 若需要把控制权重定向到一个外部资源, 应该使用 redirect 结果类型等同
  • 6. 结果类型: dispatcher的两种写法 /resulttype/success.jsp /resulttype/success.jsp
  • 7. 结果类型: dispatcher的底层代码说明在struts-default.xml文件中找到 ServletDispatcherResult.action public class ServletDispatcherResult extends StrutsResultSupport { public void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { RequestDispatcher dispatcher = request.getRequestDispatcher(finalLocation); dispatcher.forward(request, response); } } StrutsResultSupport.action public abstract class StrutsResultSupport implements Result, StrutsStatics { public void setLocation(String location) { this.location = location; } }
  • 8. 结果类型: redirectredirect 结果类型将把响应重定向到另一个资源, 而不是转发给该资源. redirect 结果类型接受下面这些参数: location: 用来给出重定向的目的地 parse: 用来表明是否把 location 参数的值视为一个 OGNL 表达式来解释. 默认值为 true redirect 结果类型可以把响应重定向到一个外部资源 struts-default.xml中的 等同
  • 9. 结果类型: redirect的底层代码说明在struts-default.xml文件中找到 ServletRedirectResult.action public class ServletRedirectResult extends StrutsResultSupport implements ReflectionExceptionHandler { protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { sendRedirect(response, finalLocation); } protected void sendRedirect(HttpServletResponse response, String finalLocation) throws IOException { response.sendRedirect(finalLocation); } } StrutsResultSupport.action public abstract class StrutsResultSupport implements Result, StrutsStatics { public void setLocation(String location) { this.location = location; } }
  • 10. 北京传智播客教育 www.itcast.cn结果类型: redirectActionredirectAction 结果类型把响应重定向到另一个 Action redirectAction 结果类型接受下面这些参数: actionName: 指定 “目的地” 动作的名字. 它是默认属性 namespace: 用来指定 “目的地” 动作的命名空间. 如果没有配置该参数, Struts 会把当前 Action 所在的命名空间作为 “目的地” 的命名空间查看API文档
  • 11. 结果类型: redirectAction的底层代码说明在struts-default.xml文件中找到 ServletActionRedirectResult.action public class ServletActionRedirectResult extends ServletRedirectResult { public void setActionName(String actionName) { this.actionName = actionName; } public void setNamespace(String namespace) { this.namespace = namespace; } } ServletRedirectResult.action public class ServletRedirectResult extends StrutsResultSupport implements ReflectionExceptionHandler { protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { sendRedirect(response, finalLocation); } protected void sendRedirect(HttpServletResponse response, String finalLocation) throws IOException { response.sendRedirect(finalLocation); } }