struct2读书笔记

【前言】

记录一下以前写的struct2的读书笔记

 【内容】
1、启动一个struts2应用的时候,3种配置文件的加载顺序如下:struts-default.xml(包含在Struts2-core.xml文件中)struts-plugin.xml(包含在各插件的JAR文件中)struts.xml(应用相关的配置文件)也就是说应用相关的配置文件总是最后才加载的,因为应用可以依赖于插件,每个插件都可以依赖于Struts2的核心,但是插件之间不可以互相依赖


2、jsp页面可以通过${applicationScope.attribute}${sessionScope.attribute}${requestScope.attribute}等方式直接获取对象里面的属性。


3、Struts2实现下面接口的Action可以直接访问Web应用的ServletContext实例ServletResquestAware-->可以直接访问用户请求的HttpServletRequestServletResponseAware-->可以直接访问服务器响应的HttpServletResponse实例


4、为了直接访问Servlet API,Struts 2提供了一个ServletActionContext类,该类包括下面几个静态方法:static PageContext getPageContext():获得Web应用的PageContext对象static HttpServletRequest getRequest();static HttpServletResponse getResponse();static ServletContext getServletContext();

 

5、定义<action .../>的name时候,如果允许Action name出现斜线(/),必需先设置(struts.properties):struts.enable.SlashesInActionNames=ture


6、<action.../>默认的处理逻辑的方法是:execute()方法,但可以通过method="methodName"属性改变,如<action name="login" class="test.login" method="validate" />则提交处理改Action的方法不再是execute,而是validate()方法


7、6是用显示的方法使一个action可以有多个方法处理多个逻辑。也可以通过匹配的方式达到这种效果,如下:<action name="*action" class="test.login" method="{1}">*action可以匹配多个action,比如Loginaction--->*匹配了LoginRegisteraction-->*匹配了Register而method="{1}",这里的1指的是第一个匹配的字符串所以Loginaction对应的逻辑会有一个Login的方法处理,Registeraction对应的逻辑会有一个Register方法处理。


8、struts 2允许<result.../>使用表达式,如下:<action name="*"> <result>/{1}.jsp</result></action>

9、当用户请求的URL在容器找不到对应的Action时,系统将使用默认的Action处理用户请求,配置默认的Action通过<default-action-ref.../>元素来完成:<default-action-ref name="defaultAction" ><action name="defaultAction" class="test.default.action" ><result .../></action>


10、默认情况下,用<result .../>都是dispatcher结果,表示将请求Forward到指定的JSP资源可以用type参数知道结果类型,比如:<result type="redirect">/test.jsp</result>表示重定向到test.jspredirect-action结果类型也表示重定向,只是重定向到的不是jsp页面,而是action。


11、<result.../>跳转还可以使用${属性}的方式指定视图资源,如下:<action name="myaction" class="test.myaction">  <result name="success">/${target}.jsp</result></action>如果myaction的target值为test,则当返回success时,跳转到.test.jsp页面。


12.某些变量从数据库提取出来,包含了特殊字符,比如&,如果直接用<s:property />显示在页面,&会被转义为&amp,为了防止这种情况,可以添加<s:property />的属性:escape='0',这样输出就不会被转义。<s:select />标签是没有这个属性的,不过可以嵌套<s:property />

posted on 2011-03-09 13:56  形状奇怪的苹果  阅读(1027)  评论(0编辑  收藏  举报

导航