Ognl_JSTL_学习笔记.doc_第1页
Ognl_JSTL_学习笔记.doc_第2页
Ognl_JSTL_学习笔记.doc_第3页
Ognl_JSTL_学习笔记.doc_第4页
Ognl_JSTL_学习笔记.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

控制标签使用Struts2标签必须先导入标签库,在页面使用如下代码导入Struts2标签:if/elseif/else标签:60老年人35中年人15青年人少年儿童Action提示信息actionerror和actionmessage标签:这两个标签都是用来输出Action实例里封装的信息,actionerror负责输出Action实例的getActionErrors()方法的返回值。actionmessage负责返回Action实例的getActionMessages()方法的返回值。Action代码:public Class TestAction public String execute() addActionError(出错了!); addActionMessage(请联系系统管理员!); 在页面中使用标签输出:表单标签Struts2提供了很多表单标签,大部分表单标签和HTML表单标签之间有一一对应的关系,这里只介绍一些比较特殊的表单标签。对于表单标签而言,name和value存在一个特殊的关系,每个表单元素会被映射成Action属性。使用Struts2标签必须先导入标签库,在页面使用如下代码导入Struts2标签:textfield标签:checkboxlist标签:使用简单集合来生成多个复选框 使用简单Map对象来生成多个复选框使用创建的放有多个对象的JavaBean对象来生成多个复选框public class BookService public BookgetBooks() return new Book new Book(Java编程思想,李刚); newBook(J2EE企业应用实战,李刚); ; public class Book private String name; private String author; public Book(String name,String author) =name; this.author=author; /getter&setter.select标签:使用集合来生成下拉选择框使用简单Map对象来生成下拉选择框属性说明:multiple:设置该列表框是否允许多选 listKey:指定集合中的某个元素作为复选框的valuelistValue:指定集合中的某个元素作为复选框的标签使用集合里放多个JavaBean实例来生成下拉选择框 radio标签:使用集合来生成单选框使用简单Map对象来生成单选框使用集合里放多个JavaBean实例来生成单选框 optgroup标签:token标签:这是一个防止多次提交表单的标签,如果需要该标签起作用,则应该在Struts2的配置文件中启用TokenInterceptor拦截器或TokenSessionStoreInterceptor拦截器。token的实现原理:在表单中增加一个隐藏域,每次加载页面时,该隐藏域的值都不同,而TokenInterceptor则拦截所有的用户请求,如果两次请求时该token对应隐藏域的值相同,则阻止表单提交。doubleselect标签:doubleselect标签会生成一个级联列表框,当选择第一个下拉列表框时,第二个下拉列表框的内容会随之而改变。使用Map对象来创建doubleselectoptiontransferselect标签:optiontransferselect标签会生成两个列表选择框,并生成系列的按钮来控制各选项在两个下拉列表之间的移动、升降。当提交表单时,两个列表选择框对应的请求参数都会被提交。属性说明:list:设置第一个下拉列表选择框的集合listKey:设置第一个下拉列表选择框的value属性listValue:设置第一下下拉列表选择框的lable属性doubleList:设置第二个下拉列表选择框的集合doubleListKey:设置第二个下拉列表选择框的value属性doubleListValue:设置第二个下拉列表选择框的lable属性doubleMultiple:设置第二个下拉列表选择框是否允许多选updownselect标签:使用简单集合来生成可上下移动选项的下拉选择框使用简单Map对象来生成可上下移动选项的下拉选择框 使用集合里放多个JavaBean实例来生成可上下移动选项的下拉选择框数据标签bean标签:作用:用于创建一个JavaBean实例例子:/设置JavaBean的属性/输出显示姓名: 年龄:在标签外访问JavaBean例子:/设置JavaBean的属性/输出显示姓名:年龄:说明:为bean标签指定var属性,意味着将该JavaBean放置到Stack Context中,因此即使不在内,也可以通过该var属性来访问该JavaBean。date日期标签:日期的格式化输出例子:将格式化后的日期值字符串放入StackContext中并放入requestScope中,该属性也可用id代替,但推荐使用var例子:debug标签:该标签主要用来调试,它在页面生成一个超级链接,通过该链接可以查看到ValueStack和Stack Context中所有值信息,该标签只有一个id属性,没有太大的意义。例子:include标签:该标签用于将一个Jsp页面或者一个Servlet包含到本页面中例子:集合操作判断元素是否在指定集合中:in:判断元素是否在指定集合中例子:foo包含在集合中foo不包含在集合中not in: 判断元素是否不在指定集合中例子:foo不包含在集合中foo包含在集合中取集合中指定条件的子集合:?:取出所有符合选择逻辑的元素:取出符合选择逻辑的第一个元素$:取出符合选择逻辑的最后一个元素例子:person.relatives.? #this.gender=male取出person的所有性别为male的集合对集合进行迭代:Iterator:迭代输出List例子:Iterator:迭代输出Map例子:iterator标签中的其它方法:getCount(): 返回当前迭代了几个元素getIndex(): 返回当前被迭代元素的索引isEven(): 返回当前元素被迭代元素的索引是否是偶数isOdd(): 返回当前元素被迭代元素的索引是否是奇数isFirst(): 返回当前被迭代元素是否是第一个元素isLast(): 返回当前被迭代元素是否是最后一个元素例子:tr style=background-color:#bbbbbbStack Context中的对象与访问根对象的访问:传统的OGNL表达式求值中,系统会假设只有一个根对象。如果系统的Stack Context中包含两个对象,foo和bar,它们在Context中的名字分别为foo和bar,并将foo设置为Context的根对象。访问根对象foo的属性: #foo.blah或blah访问其它对象: #bar.blah如果要访问的属性属于根对象,则可以直接访问该属性,否则使用一个名作为前缀修饰属性。Struts2提供的命名对象Struts2使用标准的Context进行OGNL表达式语言求值,OGNL的顶级对象是一个Map类型实例对象Context,其根对象就是ValueStack。要访问ValueStack中的属性,可以通过以下方式:$barStruts2提供了一些命名对象,但这些对象不是Stack Context的根对象,它们只是存在于Stack Context中,所以要访问这些对象时需要使用#前缀来指明。(1).parameters对象:用于访问Http请求参数,如:#parameters.foo, #parametersfoo。用于返回调用HttpServletRequest的getParameter(foo)的返回值。(2).request对象:用于访问HttpServletRequest的属性。如:#requestfoo, #request.foo。用于返回调用HttpServletRequest的getAttribute(foot)的返回值。(3).session对象:用于访问HttpSession的属性。如:#sessionfoo, #session.foo。用于返回调用HttpSession的getAttribute(foo)的返回值。(4).application对象:用于访问ServletContext的属性。如:#applicationfoo, #application.foo。用于返回调用ServletContext的getAttribute(foo)的返回值。(5).attr对象:该对象将依次搜索如下对象:PageContext, HttpServletRequest, HttpSession, ServletContext中的属性。当系统创建的Action实例后,该Action实例已经被保存到ValueStack中,所以无需写#即可直接访问Action属性。Stack Context中的对象:Stack Context-ValueStack(根对象)-parameters(命名对象) -request(命名对象) -session(命名对象) -application(命名对象) -attr(命名对象)访问Stack Context的根对象的属性时可以省略对象名,访问其它命名对象时需要在对象名前添加#前缀。JSTL标签EL表达式使用很简单,不用在JSP中写入支持标签的语句,直接可以拿来用。 $hello 等同于 EL表达式还支持四则运算,大小比较(返回true或false),为空验证($empty hello,返回true或false),还支持如$ $map.key返回相应的值 JSTL核心库 (c标签) 首先,你要把jar包引进去,这里有个问题,如果是struts1.3.10的话,其自带的jstl包是1.0版本,而1.0版本的jstl在2.0的JSP中,会有问题。所以要下个1.1以上版本的jstl包,下载地址在此:/site/downloads/downloads_taglibs-standard.cgi 然后,在JSP中加入支持标签的语句, ,c:out 就是做输出 等同于 $hello 如果$abc不存在,那么给一个初始值haha String HTML = 北京欢迎你; request.setAttribute(bj, HTML); action中把值送出来 escapeXml:是否脱离XML语法,不是的话,就还是按照HTML语法解析,输出结果:北京欢迎你 ,c:set , c:remove c:set 等于在page级别,setAttribute一个值,在当前页面用c:out可以接收到,例如: c:remove就是把一个属性值从当前page中删了,例如: ,c:if 就是个条件分支语句,只能表达出if,没有else c:if test=$1 1 2 $result 输出结果: 1 2 true ,c:choose,c:when,c:otherwise,其实也是个条件分支语句,不过这次可以形成if。else的组合了_ c:when就是if,c:otherwise就是else,要注意的是c:when,c:otherwise必须写在c:choose标签的里面 c:when test=$v1 v1 v2 v1 v2 ,c:forEach, 就是个循环 这里的var相当于把一个对象Attribute取出来后,给这个对象起的名字(也就是这个对象的引用),下面就可以用这个引用来显示该对象的属性 $user.username $user.age $ 输出结果如下 name age group 選手 0 20 AC milan 選手 1 21 AC milan 選手 2 22 AC milan 選手 3 23 AC milan 選手 4 24 AC milan c:forEach中的varStatus属性 ,varStatus可以记录本次循环的一些信息,比如现在循环到第几次啦,就是vs.count ,下面这个例子,当循环进行到偶数次时,改变背景颜色为黄色 如果是偶数次,背景色变为黄色 如果步是偶数次,背景色不变 $user.username $user.age $ 输出结果如下 name age group 選手 0 20 AC milan 選手 1 21 AC milan 選手 2 22 AC milan 選手 3 23 AC milan 選手 4 24 AC milan c:forEach中的begin , end, step属性,begin:从哪里开始循环,end:到哪里结束,step:每次循环的步长 可以用c:forEach接受的除了List还有Map,接受Map的时候还可以分别取出key和value的值,例子: $v.key = $v.value ,c:forTokens 用于有分隔符字符串的迭代,delims属性用来设置分隔符的类型(逗号啦,斜杠啦),看例子: action中的送值 request.setAttribute(forTokens,1,2,3,4,5); request.setAttribute(forTokens2,/oracle/db/9.2.0); JSP中的接收值 分隔符为逗号 $v 分隔符为斜杠 $v 结果如下: 1 2 3 4 5 oracle db 9.2.0 ,c:catch,捕获异常,相当于java语法的 try.catch,可以用c:catch的var属性打印异常信息 $v 输出结果: java.lang.NumberFormatException: For input string: heihei ,c:import,相当于include,在当前页中引入另一个页面,用法如下: ,c:redirect 重定向 结果:当前页面会重定向到 http:/localhost:8080/struts_JSTL_EL/index.jsp去,就这么个事 格式化库(fmt) 在JSP中加入支持标签的语句, :先贴一段在action中的传值,后面的格式化时间和格式化数字都会用到 request.setAttribute(today,new Date(); request.setAttribute(number,1234566.678); request.setAttribute(percent, 0.12345); ,格式化时间,fmt:formatDate 输出结果:2009/04/22 输出结果:2009/04/22 输出结果:18:24:21 输出结果:2009/04/22 18:24:21 ,格式化数字,fmt:formatNumber 输出结果:1,234,566.678 /type默认是数字且有逗号分隔 输出结果:1,234,566.68 /pattern和struts中的一样 输出结果:1,234,566.6780 /小数点后不够4位就补零 输出结果:1,234,566.68 /type设为通货,currencySymbol设美元符号 输出结果:12% /type设为百分数 输出结果:12.34% /type设为百分数,且小数点后最大最小都留2位 Jsp自定义标签Jsp页面中通过xml语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执行相应的Java代码例子:实现在页面输出一个指定范围的随机数标签:第一步:编写标签类:实现标签类的方法有很多,最简单的方法是从javax.servlet.jsp.tagext.TagSupport类继承java代码:package com.test.mytagpublic calss RandomTag extends TagSupport private int min=0;/标签中的属性min,默认值设置为0 private int max=Integer.MAX_VALUE;/标签中的属性max,默认值设置为int类型的最大值 public void se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论