参考《Struts 2完全学习手册》
想到一个问题,struts中,每个请求(对应的线程对象?)访问一个action实例,该实例是归请求独有的,即自己new后delete。但new、delete一个对象是很耗时间和资源的,为什么不新建一个pool,事先new好了;某个请求(对应的线程对象)要用(线程对象中要new),就来拿克隆,用完了,归还给pool并恢复原本状态后。
1、Action配置(接前一章)
1.1 通配符映射
1.2 默认Action
当用户请求找不到对应的<action>时,使用默认Action.
2、result配置
Action处理用户请求,但不能提供对用户的直接响应。Action处理完用户请求后,<result>将处理结果对应到相应的视图(response响应)或执行另一个Action(这个还没遇到过呢,呵呵)。
结果类型分析(FreeMarker以后介绍)
1、默认的结果类型是dispatcher转发!!
和<jsp:forward>几乎是一样的效果。<result>将处理结果对应到相应的视图,request对象、action对象也一并传过去了(所以相应视图可以直接访问action对象的属性值)。URL显示form act="test"中的test.action。说明这是服务器端处理的,没有将相应的视图的URL发给客户端,让客户端请求新地址。
2、可以设置结果类型是重定向redirect。
和response.sendirect几乎是一样的效果系统将调用HttpServletResponse的sendRedirect()方法。redirect结果类型的实现类时org.apache.struts2.dispatcher.ServletRedirectResult。使用redirect重定向到其他资源,将重新产生一个请求,而原来的请求内容和请求参数将全部丢失。URL显示新的资源地址。
3、redireckAction
输出的是源代码??
使用通配符配置
使用OGNL动态配置
xiaoxue.jsp能获得action对象的属性值,是因为<result>默认的是转发类型。