`
tou3921
  • 浏览: 68607 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Struts2的一些小总结(转载+补充)

阅读更多

 

Ognl表达式注意事项

OGNL要结合struts标签来使用。由于比较灵活,也容易把人给弄晕,尤其是“%”“#”“$”这三个符号的使用。其中$广泛应用于EL中。

“#”符号有三种用途:

(1)、访问非根对象(struts中值栈为根对象)如OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:

 名称

 作用

 例子

 parameters

 包含当前HTTP请求参数的Map

  #parameters.id[0]作用相当于request.getParameter("id")

 request

 包含当前HttpServletRequest的属性(attribute)Map

 #request.userName相当于request.getAttribute("userName")

 session

 包含当前HttpSession的属性(attribute)的Map

  #session.userName相当于session.getAttribute("userName")

 application

 包含当前应用的ServletContext的属性(attribute)的Map

 #application.userName相当于application.getAttribute("userName")

 

(2)、用于过滤和投影(projecting)集合,如: books.{?#this.price>35} 

books.{?#this.price>35}

(3)、构造Map,如: #{'foo1':'bar1', 'foo2':'bar2'} 

#{'foo1':'bar1', 'foo2':'bar2'}这种方式常用在给radioselectcheckbox等标签赋值上。如果要在页面中取一个map的值可以这样写:

<s:property value="#myMap['foo1']"/> 

<s:property value="#myMap['foo1']"/>

“%”符号的用途

“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。

这是一开始最让我不能理解的符号,原因是一些相关资源在表述时不太准备,经过一翻痛苦的探索,终于明白了它的用途。实际上就是让被理解为字符串的表达式,被真正当成ognl来执行。

“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。

这是一开始最让我不能理解的符号,原因是一些相关资源在表述时不太准备,经过一翻痛苦的探索,终于明白了它的用途。实际上就是让被理解为字符串的表达式,被真正当成ognl来执行。很有点类似javascript里面的eval()功能,例如 :

var oDiv = eval("document.all.div"+index) 

var oDiv = eval("document.all.div"+index)

index变量为1时,语句就会被当作var oDiv = document.all.div1  var oDiv = document.all.div1来执行。%{}就是起这个作用。举例:

<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>  

<s:property value="#myMap['key1']"/>  

<s:url value="#myMap['key1']" />

<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>

<s:property value="#myMap['key1']"/>

<s:url value="#myMap['key1']"/>

上面的代码第2行会在页面上输出“value1”,而第3行则会输出"#myMap['key1']"这么一个字符串。 如果将第3行改写成这样:

<s:url value="%{#myMap['key1']}"/> 

<s:url value="%{#myMap['key1']}"/>

则输出为“value1”


这说明struts2里不同的标签对ognl的表达式的理解是不一样的。如果当有的标签看不懂”(通常这些标签的值是被默认按字面值处理,如value属性的值)类似“#myMap['key1']”的语句时,就要用%{}来把这括进去,翻译一下了。

“$”有两种用途

(1)、在国际化资源文件中,引用OGNL表达式。

(2)、在Struts 2配置文件中,引用OGNL表达式:

<action name="saveUser" class="userAction" method="save">

<result type="redirect">listUser.action?msg=${msg}</result>

</action>

<action name="saveUser" class="userAction" method="save">   

<result type="redirect">listUser.action?msg=${msg}</result>

</action>

"$"EL表达式注意事项。

注意:不推荐使用EL表达式,因为已经有ognl表达式的强大功能了。

EL表达式不能用于用于struts2标签中。如<s:property value="${some}"/>
这样会报错。

EL表达式也可以结合循环标签使用。如:
<s:iterator value="signs">
<s:property value="signDate"/>
${signDate}
</s:iterator >
第二行于第三行效果相同。

最后重申:struts2后续版本对于EL的适应还是未知,故不推荐使用EL

Struts2session超时处理

这里采用strtus2的拦截器实现。

Struts2json

Struts2json插件,我个人不喜欢使用。故采用json-lib包。

使用json-lib时要返回json数据只需要在action方法内return null 就可以了。这种做法是以往struts2中保留下来的。也可以采用void 方法

Struts2-jQuery

Struts2的jquery插件,主要提供ajax功能,也可以使用jquery-ui。

官网上有详细的例子提供下载,足够学习了。

Struts2-Spring

Struts2spring集成时,受管理的action的作用于需要特别处理为request

并且要在web中配置两个spring的监听器,第一个是必须的,第二个是:当使用了Spring's DispatcherServlet以外的Servlet 2.4及以上的Web容器时(如使用JSFStruts),你需要在Web应用的'web.xml'文件中增加 javax.servlet.ServletRequestListener 定义,这在spring2.5文档里有明确说名。(spring2.5文档 3.4. Bean的作用域)

 <listener>

  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

 </listener>

 <listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>

 

分享到:
评论

相关推荐

    struts2+spring+mybatis+easyui的实现

    Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。EasyUI则是一个基于jQuery的UI组件库,用于快速构建美观且响应式的Web应用界面。下面我们将深入探讨这三...

    struts2+hibernate+spring+ibatis 小实例

    struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...

    struts2+spring+hibernate+easyui管理框架

    Struts2+Spring+Hibernate+EasyUI 是一个经典的Java Web开发框架组合,广泛应用于企业级应用的构建。这个管理系统利用这些技术的特性,提供了一种高效、稳定且易于维护的解决方案。 **Struts2** 是一个强大的MVC...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...

    ACM在线评测系统,可以支持C、C++和Java+Struts2 + Spring + Hibernate+课程设计+毕业设计

    ACM在线评测系统,可以支持C、C++和Java+Struts2 + Spring + Hibernate+课程设计+毕业设计 ACM在线评测系统,可以支持C、C++和Java+Struts2 + Spring + Hibernate+课程设计+毕业设计 ACM在线评测系统,可以支持C、...

    不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)

    不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的...

    struts2+ajax+easyui+json+datagrid增删改查

    Struts2、Ajax、EasyUI、JSON 和 DataGrid 是现代Web开发中常用的技术组合,用于构建功能丰富的交互式用户界面。下面将详细解释这些技术及其在实现增删改查、分页和排序功能中的作用。 **Struts2** 是一个基于MVC...

    Struts2+Spring+Hibernate+MySQL整合

    【Struts2+Spring+Hibernate+MySQL整合】是企业级Java应用开发中常见的技术栈,也被称作SSH框架。这个组合提供了模型-视图-控制器(MVC)架构模式,数据库管理,以及依赖注入和事务控制的能力。下面将详细介绍这个...

    spring+struts2+hibernate+mybatis

    一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去

    车辆管理系统(struts2+spring+hibernate+oracle)

    本系统采用struts2+spring+hibernate+oracle代码齐全完整,适合作为SSH毕业设计,java毕业设计项目,计算机毕业设计,java课程设计,还是很不错的 很值得收藏 学习 探讨 研究。

    Struts2+JDBC+jsp+mysql 考勤系统

    Struts2+JDBC+jsp+mysql 构建的考勤...总结,Struts2+JDBC+jsp+mysql的考勤系统是结合了前端MVC框架、数据访问、动态页面和数据库存储的综合应用,它提供了一个高效、可扩展的解决方案,满足企业对员工考勤管理的需求。

    struts2 + spring + hibernate + easyui 整合用户信息管理小案例

    系统搭建使用struts2 + spring + hibernate + easyui 整合的, 功能包括: 分页查询,自定义页面数据显示量,用户名模糊搜索,创建时间段,更新时间段内用户信息搜索,双击行进行编辑,多行选中删除,右键菜单已经写好...

    Struts2+hibernate4+layui+mysql简单的网站后台管理系统

    Struts2+hibernate4+layui+mysql简单的网站后台管理系统 项目描述 简单的网站后台管理系统 运行环境 jdk7+tomcat7+mysql+myeclipse 项目技术(必填) struts2+hibernate4+layui+jquery+jstl 数据库文件 src根...

    论坛系统项目(Struts 2+Hibernate+Spring实现)

    论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...

    struts2 + spring + hibernate + mysql的实例

    struts2的小例子。数据库表的创建请参见工程中的sql.txt文件。实体映射采用的是实体标注映射,省去了*.hbm.xml文件。 /WEB-INF/lib中的包请在另一个资源中下载。(由于超过了10M,所以分开了。)

    Eclipse+Struts2+Spring+MyBatis+jQuery整合教程

    Eclipse+Struts2+Spring+MyBatis+jQuery整合教程,Eclipse+Struts2+Spring+MyBatis+jQuery整合教程.

    毕业设计项目struts2+hibernate+spring+jquery+ajax+css

    导入myclipse即可,MySql...项目介绍: 1.struts2.8.1+hibernate3+spring2.5 2.统一的jquery表单验证方式,复用性强 3.jquery+ajax应用 4.界面风格漂亮, 本人的毕业设计,有需要者下载参考,项目有很多代码注释

    Struts2+Json+Android简单实现

    总结来说,“Struts2+Json+Android简单实现”是一个典型的前后端交互示例,展示了如何利用Struts2作为服务端接口,通过JSON进行数据交换,最后在Android客户端进行数据展示和用户交互。理解并掌握这种技术栈对于构建...

    基于Struts2+Hibernate+Spring+Mysql的互联网在线点餐系统源码(大学生计算机设计大赛软开省二).zip

    基于Struts2+Hibernate+Spring+Mysql的互联网在线点餐系统源码(全国大学生计算机设计大赛软件开发省二).zip 基于Struts2+Hibernate+Spring+Mysql的互联网在线点餐系统源码(全国大学生计算机设计大赛软件开发省二)....

Global site tag (gtag.js) - Google Analytics