Struts2.5: 与2.3唯一区别:在2.5版本中不支持使用ParameterAware接口,同样,不可以赋值 注意:在Aware和ActionContext两种方式中,如果一个Action类中的多个action方法都需要使用域对象中的map或parameters,则建议使用Aware接口的方式注意:session实际上是sessionMap类型的!如果强转后调用其invalidate()方法,可以使session失效
5.通过耦合方式获取web资源: 通过ServletActionContext来获取到当前Action 对象所需要用到的一切Servlet API相关的对象 使用方式: 获取 HttpServletRequest:ServletActionContext.getRequest();获取 HttpSession:ServletActionContext.getRequest().getSession();获取 ServletContext:ServletActionContext.getServletContext(); 通过实现ServletXxxWare接口的方式可以由Struts2注入Servlet 相关的对象 使用方式 ServletRequestAware:注入HTTPServletRequest对象(比较常用)ServletResponseAware:注入HttpServletResponse对象ServletContextAware:注入HttpServletContext对象(比较常用) 6.Struts2扩展名问题: 打开jar包struts2-core,找到org.apache.struts2 包下面的default.properties,打开后会找到关于struts扩展名的配置,其默认的扩展名为action或者为空 如何自定义扩展名: 在struts2的配置文件中添加一个常量:
注意:在给命名空间命名后,同一个package中的action跳转不需要带/xx 7.ActionSupport: 概述:ActionSupport即为默认的Action类,若某个action节点没有配置class属性,则ActionSupport为待执行的Action类,execute为默认执行的方法ActionSupport的五个常量;LOGIN、SUCCESSS、INPUT、ERROR、NONE继承ActionSupport类的好处:ActionSupport类帮我们实现了多个常用接口,而我们只需要继承这个类就可以调用这些接口中的方法 8.result: 概述: result是action节点的子节点,是一个action方法执行后,可能去的目标。 一个action可以配置多个resultresult的name属性值对应着action方法可能有的返回值 result一共有两个属性值:name和type,type代表结果的响应类型 type的值:红色为常用型 chain:转发到actiondispatcher:默认值freemarker:httpheader:redirect:重定向redirectAction:重定向到actionstream:主要是文件的上传和下载velocity:xslt:plainText:postback:注意:重定向到action的时候,可以直接使用redirect便捷的重定向到action,但是转发的时候只能使用chain注意:在重定向到一个action时,且该action返回值为'success'时,其返回值最好不要为“success”,即不要重复 9.通配符映射: 概念:一个web工程可能有多个action声明,为了减少重复配置的问题,可以使用Struts2提供的通配符映射机制,将多个相似的映射关系简化为一个 通配符映射规则: 若找到多个匹配,则有精确匹配先映射精确匹配若指定action不存在,则通配符会将其与任意一个包含通配符*的action进行匹配{0}表示匹配整个URI若struts2找到的带有通配符的匹配不止一个,则按先后顺序执行*可以匹配零个至多个字符,但不能匹配“/”,若有需要则使用**表示,使用“\”进行转义 10.动态方法调用: 概念:通过URL动态的调用方法而忽略配置文件中的方法配置 调用方法: 找到struts-core中的org.apache.struts包下面的default.properties,找到搜索Dynamic,找到并复制在struts.xml文件中使用constant配置:在.action之前通过action名!方法名进行调用:Product!save.action注意:此写法会暴露所调用方法,存在安全隐患,在2.3以后版本已不支持,此处仅做了解
转载于:https://www.cnblogs.com/lxc-2017/p/8530356.html
