用过struts2的朋友都知道,struts2其实是webwork+Apache Shale的一个结合,最初的名字是struts action 2,和他的两个父类相比,struts2 是通过接口代理实现的(struts和webwork2 是基于servlet),而在struts里虽然很多都是用的jsp作为展示,但是freemarker已经被大量的使用了(至少我接触到的很多公司都开始使用freemarker作为现实的首选代替jsp),所以在下整理了一点freemarker经常会用到的取值方法以供参考。
${Request["a"]}
${RequestParameters["a"]}
${Session ["a"]}
${Application ["a"]}
${JspTaglibs ["a"]}
注意RequestParameters等内部对象时常不能获得所以要:
${RequestParameters?default({})["_errors"]?default("params")}
${Request["request"]?default("request")}
${Session["session"]?default("session")}
${Application["ctx"]?default("ctx")}
${RequestParameters?default({})?keys?size}
${Request?keys?first}
Freemarker可以直接取pageContext,requestAttribute,session,application中的数据,就是不能取requestParameter;
然后,里面还有一个和webwork出自opensymphony的是SiteMesh(就是我们常说的页面装饰器),首先是在web.xml里面加入
<!-- siteMesh start -->
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- siteMesh end -->
然后是在web-inf下面加入decorators.xml,当然了,由于在装饰页面的时候会用到显示标签,最好吧sitemesh-decorator.tld和sitemesh-page.tld一起放入。而在decorators.xml里面:
<decorators defaultdir="/">
<!-- 排除页面 -->
<excludes>
<pattern>/index.jsp</pattern>
<pattern>/alipay/toquery*</pattern>
</excludes>
<!-- 制定main容器 -->
<decorator name="main_sitemesh" page="/sitemesh/main.jsp">
<pattern>/*</pattern>
<pattern>/pages/center/message/*</pattern>
<pattern>/usercenter/message/*</pattern>
<pattern>/usercenter/readuser*</pattern>
<pattern>/usercenter/account/*</pattern>
<pattern>/usercenter/membercenter*</pattern>
<pattern>/usercenter/searchuser*</pattern>
</decorator>
<decorator name="joblist_sitemesh" page="/sitemesh/joblist.jsp">
<pattern>/pages/joblist/*</pattern>
<pattern>/joblist/*</pattern>
</decorator>
<!--装饰用的统一界面-->
<decorator name="pagehead" page="/sitemesh/head.jsp"/>
<decorator name="pagefoot" page="/sitemesh/foot.jsp"/>
<decorator name="jobsearch" page="/sitemesh/jobserach.jsp"/>
<decorator name="joblist_left" page="/sitemesh/joblist_model_left.jsp"/>
<decorator name="joblist_roll" page="/sitemesh/joblist_model_roll.jsp"/>
<decorator name="usercenter_left" page="/sitemesh/usercenter_left.jsp"/>
</decorators>
而在页面里会用到
<%@ taglib uri="/WEB-INF/sitemesh-decorator.tld" prefix="decorator" %>
<%@ taglib uri="/WEB-INF/sitemesh-page.tld" prefix="page" %>
其中page是最关键的部分,因为他是控制页面的相关显示,而decorator主要是用于显示默认和过滤页面自带的信息。
当然了,在配置ssh的时候我遇到一个很弱智的问题,这个问题主要是我自己的原因,和struts一样struts2 也有个相关的在spring的xml里面会涉及
<bean id="demoAction" class="com.aea.demo.web.DemoControlAction" scope="request" destroy-method="destroyDemoControlAction"/>
而在struts.xml里面会使用<action name="togo" class="demoAction" method="togo">这样就可以使用传统的依赖注入了。
当然了struts2 最吸引人的地方还是不断有新的东西加入,比如说注释编程,最开始的时候及struts2.0.11是用的codebehind,说实话,没有感觉到他给我带来的方便,相反,我倒觉得xml的效率比他高,因为他要在类文件里面写入相应的@注释,等于说没有减少工作量,反而增加了维护的工作量,但是现在struts2.1已经完全摆脱了那种模式,更加你文件下面的路径来自动生成相应的action,不过也有个难点就是action跳action不如xml那么方便
分享到:
相关推荐
struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...
struts2 资料struts2 资料struts2 资料struts2 资料
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...
struts2源码 struts2案例 struts2使用包
一个很好的关于Struts2的讲义!struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义
Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档
struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子
struts2的概述struts2下的HelloWord struts2基础 struts2做好准备 struts2的标志 struts2的Action讲解 struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中...
struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...
Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2...
struts2-scan 检测struts2漏洞,认证检测struts2漏洞
《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...
Struts2漏洞检查工具Struts2.2019.V2.3
struts2官方文档
使用struts2开发之前必须引入struts的包。
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
struts2标签库struts2标签库struts2标签库struts2标签库
struts2 Https , 轻松开发基于struts2的https开发