标签库web国际化java web之设计模式和案例.docx_第1页
标签库web国际化java web之设计模式和案例.docx_第2页
标签库web国际化java web之设计模式和案例.docx_第3页
标签库web国际化java web之设计模式和案例.docx_第4页
标签库web国际化java web之设计模式和案例.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

将小脚本,jsp的表达式全部替代,替代方法是通过标签库+EL自定义标签1 自定义标签库 像这样的代码,EL无法解决2 自定义标签库的写法:-完全符合jsp2.0推荐的规范标准 (1)开发一个对应的java代码 直接后间接实现SimpleTag(简单标签) Tag是传统标签,学习的是简单标签,一般直接使用它的子类SimpleTagSupport实现doTag()方法就可以了。 (2)配置这个java类,使得它成为一个标签,都需要使用tld文件 (3)用taglib指令引入 (4) 一种开发模式:jsp+Servlet+jstl+EL+jdbc 原始设计:更加安全案例分析 使用结果驱动设计,希望实现的结果创建类ShowtimeTag通过选择继承的类查该类的文档方法:取到标签的主体内容PageContext是JspContext子类思路 getJspContext()(2)新建xml文件mytag.tldshort-time:是指标签名,tag中的name是从以下 路径中复制以下的内容(3)使用taglib引入标签执行原理6和5的步骤需要对调每次进行请求的时候都是从第四部开始依次往下走,在doTag()方法上填写构造方法输出进行测试。需求新建SkipBodyDemo2的java类配置xmlempty是指没有主题内容scriptless :纯文本内容输出结果不能使用以上方法,应该改为以下方法实际工作中使用的方法:jf.invoke(null);使得标签后的内容都不显示出来,控制标签之后的内容不输出如何截断指定位置的内容控制标签后面的内容不输出public void doTag() throws JspException, IOException throw new SkipPageException();hello, world 输出重复主体内容 新建java类RepeatBodyTagDemo4,继承simpleTagSupport类,重写doTag方法 在执行过程中,在标签中如果有属性count,在执行的过程中 就会调用setter的方法,即setCount()方法,给count属性赋值xml文件配置(有属性需要对属性进行配置)获取标签的主体内容,改变主体内容之后再输出新建类ChageBodyTagDemo5StringWriter 自带有自己内部的缓冲区(从原码中可以知道),输出的过程中,构建缓冲区,输出到这个缓冲区,然后进行相应的转换,并把结果真正输出到页面模拟jstl MyIfTagDemo1有属性需要定义其变量,并书写其set方法修改tag中的name tag-class自定义的标签的属性的输出结果可以使用EL表达式进行输出多重选择实现的效果:需要写三个类choose的作用是告知Boolean的get方法都改为了is类MyChoose一定要对以上的flag变量进行赋值类MyWhenTagDemo2类MyOtherWiseTagDemo2配置tld文件引入标签库循环需求:引入标签库新建类MyForTagDemo3实现可以将数组,集合都可以取出来的方法public class MyForEachTagDemo4 extends SimpleTagSupport private Object items;private String var;/相当妙呀private Collection collection = new ArrayList();public void setItems(Object items) if(items instanceof Set)collection =(Set) items;else if(items instanceof Map)collection = (Map)items).entrySet();else if(items.getClass().isArray() )int length = Array.getLength(items);for(int i=0;ilength;i+)collection.add(Array.get(items, i);else if(items instanceof List)collection = (List)items;elsethrow new RuntimeException(你有病!类型不支持);public void setVar(String var) this.var = var;public void doTag() throws JspException, IOException PageContext pc = (PageContext) getJspContext();for(Object obj :collection)pc.setAttribute(var, obj);getJspBody().invoke(null);jsp页面% List list = new ArrayList(); list.add(aaa); list.add(bbb); list.add(ccc); list.add(ddd); pageContext.setAttribute(list,list); % $s $s JSTL1 java standard tag libray java标准标签库2前期准备 standard.jar jstl.jar3 引入 core :核心类库 fmt:格式 functions:函数core 其中prefix是可以改的,它的默认是cescapeXml :默认是true实现set值可以存储集合中的标签库通过set向map集合中存入键值对4 JavaBean JavaBean:是一个公有类,属性私有,提供公有的getter和setter,一般有无参公有的构造方法,要实现java.io.Serializable javaBean :主要作用: 1 封装数据 2 传递数据早期开发方式中: jsp:纯 Model1: jsp+javaBean Model2: 现在经常讲的MVC开发模式 M :Model V:View C:Controller三层架构(N层架构) :主流的开发模式表示层 (View) 业务逻辑层 (Model 业务模型+数据模型) 数据访问层 控制层:Controller三层架构不等于MVCjsp+JavaBeanjsp 标签id是bean的名字 class是这个bean的完整类名 scope属性默认是pageuseBean的底层实现原理useBean 使用id setProperty和getProperty 使用name的属性和useBean的属性id是相同的。设置javaBean中的属性,使用value设置值取属性的值,也可以封装参数的值进来只需要使用这句话可以直接按照bean中的属性依次进行赋值操作将一个JavaBean弄进来移除的时候如果不指定范围,就按照域范围由小到大的顺序依次进行查找捕获异常的标签,exception中有getMessage方法c:choose标签foreach中案例step属性是跳过第几个元素varStatus属性 getIndex 得到索引0开始getCount 得到索引1开始isFirst 是否使第一条记录isLast 是否是最后一条记录使用样式表进行隔一行变色添加删除单元格使用c:url 标签说明如何将其进行转码使用get方式提交会自动进行URL进行编码重定向是作为服务器地址使用,也可以不加/,作为相对路径,也是可以的,它是相对于index.jsp中使用jstl标签库,一定要使用taglib导入标签库import:是动态包含,包含的是本站点的页面和站点外的内容,可以同时进行包含静态包含和动态包含的选择,应该选择静态包含,因为静态包含的效率高。forToken是将字符串进行封装,然后再进行遍历类似于split,进行分割,使用分隔符将值取出国际化(目前使用的并不是特别多) 国际化和本地化是相互包含的,能使用国际化也会使用本地化,软件语言可以适应不同国家的需求实现原理图解 相同的键获取的值是不同的,取到的是中文的还是英文的,取决于浏览器给的语言,而浏览器的语言是如何决定的,可以通过Internet选项的语言进行设置,浏览器是如何进行选择的,将一个key对应多个value值,再通过相关的标准(比如后缀名),将集合中包含的值取出实际编码在src中创建配置文件和默认的,将文件中配你好这个词创建JTest类 专用来加载属性文件的类ResourceBundle,没写代表本地如果删掉本地的配置文件,才会选择默认的属性配置文件总结: 如果本地语言所对应的属性文件设置了,在找不到这个国家时用本地的 如果本地语言所对应的属性文件没有设置,找不到情况下使用默认属性文件一定是放置在src中在web页面中使用国际化 获取当前页面使用的本地环境使用标签进行替代 国际化使用taglib导入fmt的标签库(uri)在head部分进行绑定在body部分添加其实就是在一个key中设置很多个value中时间格式化使用java类的方式进行时间国际化的使用查找API 查找DateFormat类DateFormat.Full的值是0输出的是英文的时间如果未设置,就默认使用本地情况使用jsp使用自己的格式进行格式化数字格式化使用类的方式进行数字格式化使用标签的方式总结1 自定义标签 用户自己编写标签的功能 作用: 替代页面上的小脚本 写法: 实现SimpleTag接口 一般继承SimpleTagSupport *.tld文件中配置2 自定义标签的执行过程 1 实例化 2 setJspContext() setParent() setter方法 setJspBody() 3 doTag()3 自定义标签示例(作用、实现原理(有针对性),了解其执行过程、接纳) 控制标签主体内容 内容不执行 执行 重复执行 大小写 StringWriter4 开发了C 标签库5 标准标签库 c:out C:set c:remove c:if c:choose c:when c:otherwise c:foreach c:forTokens c:url c:param c:catch c:redirect c:import6 javaBe

温馨提示

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

评论

0/150

提交评论