`
suhuanzheng7784877
  • 浏览: 691867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47248
社区版块
存档分类
最新评论

Struts2+Web常使用的功能经验笔记第1季--1

阅读更多

1.       前言

ApacheStruts2已经是很流行的MVC Web框架了,很多Web开发人员都是使用它做为Web框架。它是在 struts WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2Struts 1有着太大的变化,但是相对于WebWorkStruts 2只有很小的变化。像Struts2的常用配置功能笔者就不在说了,在此结合作者的Web相关技术(Struts2JSTLEL……)使用经验做个总结,希望与您有个共鸣。

2.       判断标签<s:if>

当在request域里面的对象需要判断的时候,可以选用<s:if>,当然Struts2的所有标签都必须在一个Action转向后才能使用的,直接访问一个JSP就使用Struts2的标签,报错。

例如:

<s:if test="%{#session.customer==null}">

    <A class=buy-btn href="#" title="登录才能抢购">抢购</A>

</s:if>

<s:if test="%{#session.customer!=null}">

    <A class=buy-btn

        href="proAction!buyProductBefor.action?products.id=${products.id}"

       title="登录才能抢购">抢购</A>

</s:if>

 

3.       在页面中访问变量(#%$

OGNL是通常要结合Struts 2的标志一起使用。主要是#%$这三个符号的使用。

一般使用JSP内置对象域的变量的时候(applicationsessionrequestparameters)都需要使用Struts标签+#来进行访问,一般用于访问Session里面的变量。

例如:

<s:if test="%{#session.customer!=null}">

或者

<s:property value="%{#application.myApplicationAttribute}" />
<s:property value="%{#session.mySessionAttribute}" />
<s:property value="%{#request.myRequestAttribute}" />
<s:property value="%{#parameters.myParameter}" />

Struts2标签中访问内置对象的变量的时候前面得用%{}将变量括起来。

 

如果在Action中被注入的对象在ValueStack域中的时候,在页面中可以直接采用el表达式来访问变量。

例如:

<TD><STRONG class=original>${products.sourcePrice}</STRONG></TD>

 

如果变量显示的在Action中直接赋值(set)给了requestsession域中后,在页面也可以直接使用el表达式来进行访问,但是这里仅仅只是显示,并不能在Struts2标签中判断、计算等。代码如下。

你好,${session.customer.name}

 

一般Struts2标签要配合OGNL表达式一齐使用,包括一些运算、判断、取子字符串等等。在此引用别人博客(http://www.iteye.com/problems/51144)上的一段话

“#”主要有三种用途:
1.
访问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")

 

Attr:用于按request > session > application顺序访问其属性(attribute

#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止

2.用于过滤和投影(projecting)集合,如books.{?#this.price<100}
3.
构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}


“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。

“$”有两个主要的用途,用于在国际化资源文件中,引用OGNL表达式。在Struts 2配置文件中,引用OGNL表达式。

 

4.       JSTL格式化数字

一般用到整数、小数格式化的时候可以直接用JSTL来处理。

使用jstlfmt标签可以对页面的值进行格式化、国际化显示等功能。

引入标签:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

保留整数,小数后一位永远是0

<fmt:formatNumber value="${(products.nowPrice/products.sourcePrice)*10}" pattern="#.0" /> </STRONG>

保留两位小数

<!--保留2位小数点,格式化数字-->

<STRONG>£¤<fmt:formatNumber value="${products.sourcePrice-products.nowPrice}" pattern="#.##" minFractionDigits="2" /></STRONG>

 

读取资源文件

<fmt:message key="global.add" />

 

 

5.       Struts2日期标签格式化日期

代码如下

<TD class=order-num>

<s:date name="#orderProductListVar.orders.orderDate" format="yyyy-MM-dd HH:mm:ss" />

</TD>

显示出来得值就是2011-01-10 21:09:26

 

6.       利用Struts2错误标签显示Action中显示发生的错误

<s:fielderror>

    <s:param>errorMessage</s:param>

</s:fielderror>

其中errorMessageAction中错误域中的key

 

7.       利用Struts2标签得到字符串长度和截取子字符串

<!--判断字符串长度-->

<s:if test="%{#productsListVar.productMess.length()>=40}">

    <s:property value="#productsListVar.productMess.substring(0,40)" />...

</s:if>

<s:else>

    <s:property value="#productsListVar.productMess" />

</s:else>

 

分享到:
评论

相关推荐

    Struts2+Web常使用的功能经验笔记第1季

    Apache的Struts2已经是很流行的MVC Web框架了,很多Web开发人员都是使用它做为Web...像Struts2的常用配置功能笔者就不在说了,在此结合作者的Web相关技术(Struts2、JSTL、EL……)使用经验做个总结,希望与您有个共鸣。

    Struts2_day01笔记

    学习Struts2第一天的笔记

    Struts2 技术内幕读书笔记(1)

    Struts2技术内幕读书笔记,包含第二章到第五章。WEB开发浅谈、Struts2概览、Struts2涉及的设计模式和XWork容器,从更高的角度、更深的层次理解Struts2。知其然,知其所以然。

    struts2学习笔记 很基础 容易懂

    struts2学习笔记 很基础 容易懂第一个struts2的web用户登录工程:创建一个web工程-&gt;创建login.jsp(创建advanced的JSP)-&gt;登录的form表单(注意:action=“login.action”)-&gt;编写完成后配置

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar 笔记地址:http://www.guloulou.com/?p=1252

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)-共448页.docx

    java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 ...1995 sun正式发布java第一个版本,目前最新是jdk7.0

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    Java/JavaEE 学习笔记

    第一章 Java5.0新特性.......................94 第二章 基础知识.....96 第三章 泛型...........101 第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview..........

    J2EE学习笔记(J2ee初学者必备手册)

    第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性..................

    java从入门到精通全过程笔记.doc

    Java 从入门到精通笔记整理 ...Unix,Java 基础,数据库(Oracle jdbc Hibernate pl/sql),web,JSP,Struts,Ajax,Spring,Ejb,java和模式 对于初学者而言,一个好的笔记有时候比一本好书更有用!

    java从零基础到精通 学习笔记 (带批注) 完整版PDF

    Java常年占据热门编程语言排行榜第一,Java工程师综合就业排名第一,完成此路径能够应用SSM常用框架结合面向对象编程思想实现项目开发,完成Linux系统下的项目部署运行。将能胜任月薪8,000RMB--15,000RMB的职位,...

    整理后java开发全套达内学习笔记(含练习)

    short 16bit, -2^15~2^15-1 (2^15=32768) int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字) long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字) float 32bit, 9位有效数字,含小数(四舍五入)(小数点算...

    j2ee SSH 整合笔记,献于新手。。

    第一步,配置struts ,跟原来的配置一样,唯一不同的是。 scope="request" type="org.springframework.web.struts.DelegatingActionProxy"&gt; &lt;forward name="scuess" path="/index.jsp"&gt;&lt;/forward&gt; type...

    java文集

    ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...

    spring学习笔记

    Spring 的开发包:..............................................................................................................6 1.3.2 创建 web 工程引入相应 jar 包:........................................

Global site tag (gtag.js) - Google Analytics