1)过滤器
在request里设置编码,在浏览器提交的内容里过滤特殊字符.
因servlet已经写死,但该要求必须要在serlvet最开始的时候处理,故需要使用过滤器,拦截在servlet前面
1.创建一个类实现implements Filter接口,实现doFilter方法,该类也要写入web.xml,并需要指定是拦截在哪个serlvet前面.
2.根据web.xml里的mapping出现的先后次序来确定过滤器的执行次序,chain.doFilter可以转交到下一个过滤器,要注意的是,该语句下面的语句在chain.doFilter()完成以后还继续执行.
2)globl-forward
当一个jsp被多个jsp转发或者重定向的时候,为了避免重复代码,故最好建立一个globl-forward标签来统一管理
也就相当于在core java里若一个字符串出现多次,就用一个变量统一管理.
该标签与mappings平级,也就意味着需要增加该元素,指定添加方法,填充数据.并需要创建该类,以及修改struts-config类
3)自定义标签库
概念:
模仿JSTL标签库的写法,可以自己定义专门用做某一类功能的标签库.
第一类是固定的翻译标签
用来替换jsp里的所有文本内容,为了统一管理,以便日后方便维护,并方便多国语言的实现.
1.先写一个模板比如<c:messageTag key="user"/>,假设这个key对应显示在页面上的是"用户名".
2.创建一个标签类,实现simpleTagSroe类,创建一个String的属性为了保存key的值,并实现doTag方法.
3.该方法就是通过读取配置文件和key的值来确定value,然后out.println到页面上.
4.创建一个tld文件,规定好每个属性的定义,并指定是哪个class.
5.在jsp页面上先声明这个dlt位置,然后就可以调用该标签.
6.在调用的时候,系统会自动根据填入的key值来new标签类的对象,并把key的值赋值给key,最后调用doTag方法.
7.重构以上的代码,doTag每次执行都必须要读取配置文件,然后查找,最好在服务器启动的时候把这个属性文件作为一个对象加载到内存中.
8.因为这个配置文件在启动时就加载,所以可以在config.xml里增加一个struts-config的下层元素,专门用来找寻配置文件的地址.
9.并且需要创建一个类,在struts-config的类中也需要增加属性,并提供get和set方法.
10.重构servlet的init方法,增加初始化配置文件的对象的方法,这个对象因为被所有人共享,故需要存入ServletCount对象中
11.存入的时候需要指定一个key,为了方便,专门设定一个常量类来保留这个key值.
如何在Action里使用这个键值对.
1.在Action里,为了封装性,在父类Action创建一个公开方法,传入request,request的key和标签的key.通过request取出ServletCount,再取出该map.
2.通过map和标签的key找到value,然后把request的key和这个value一起set到request中.
3.程序员使用的时候就在execute里调用这个方法.
如何在doTag里使用.
1.Tag类中默认传入PageCount对象,该对象保留了ServletCount对象的引用.通过getPageCount对象,再找到ServletCount对象,最后找出map
2,然后根据该Tag类对象的属性key,找到value,输出Value就可以了.
3.因为该类的代码不需要任何重构,故应该直接写入框架中.
第二类是
根据具体的需求需要实现不同的功能.
非常简单,标签的定义,dlt,Tag类都是一样的.不同的功能主要是doTag的方法实现不同而已.
在request里设置编码,在浏览器提交的内容里过滤特殊字符.
因servlet已经写死,但该要求必须要在serlvet最开始的时候处理,故需要使用过滤器,拦截在servlet前面
1.创建一个类实现implements Filter接口,实现doFilter方法,该类也要写入web.xml,并需要指定是拦截在哪个serlvet前面.
2.根据web.xml里的mapping出现的先后次序来确定过滤器的执行次序,chain.doFilter可以转交到下一个过滤器,要注意的是,该语句下面的语句在chain.doFilter()完成以后还继续执行.
2)globl-forward
当一个jsp被多个jsp转发或者重定向的时候,为了避免重复代码,故最好建立一个globl-forward标签来统一管理
也就相当于在core java里若一个字符串出现多次,就用一个变量统一管理.
该标签与mappings平级,也就意味着需要增加该元素,指定添加方法,填充数据.并需要创建该类,以及修改struts-config类
3)自定义标签库
概念:
模仿JSTL标签库的写法,可以自己定义专门用做某一类功能的标签库.
第一类是固定的翻译标签
用来替换jsp里的所有文本内容,为了统一管理,以便日后方便维护,并方便多国语言的实现.
1.先写一个模板比如<c:messageTag key="user"/>,假设这个key对应显示在页面上的是"用户名".
2.创建一个标签类,实现simpleTagSroe类,创建一个String的属性为了保存key的值,并实现doTag方法.
3.该方法就是通过读取配置文件和key的值来确定value,然后out.println到页面上.
4.创建一个tld文件,规定好每个属性的定义,并指定是哪个class.
5.在jsp页面上先声明这个dlt位置,然后就可以调用该标签.
6.在调用的时候,系统会自动根据填入的key值来new标签类的对象,并把key的值赋值给key,最后调用doTag方法.
7.重构以上的代码,doTag每次执行都必须要读取配置文件,然后查找,最好在服务器启动的时候把这个属性文件作为一个对象加载到内存中.
8.因为这个配置文件在启动时就加载,所以可以在config.xml里增加一个struts-config的下层元素,专门用来找寻配置文件的地址.
9.并且需要创建一个类,在struts-config的类中也需要增加属性,并提供get和set方法.
10.重构servlet的init方法,增加初始化配置文件的对象的方法,这个对象因为被所有人共享,故需要存入ServletCount对象中
11.存入的时候需要指定一个key,为了方便,专门设定一个常量类来保留这个key值.
如何在Action里使用这个键值对.
1.在Action里,为了封装性,在父类Action创建一个公开方法,传入request,request的key和标签的key.通过request取出ServletCount,再取出该map.
2.通过map和标签的key找到value,然后把request的key和这个value一起set到request中.
3.程序员使用的时候就在execute里调用这个方法.
如何在doTag里使用.
1.Tag类中默认传入PageCount对象,该对象保留了ServletCount对象的引用.通过getPageCount对象,再找到ServletCount对象,最后找出map
2,然后根据该Tag类对象的属性key,找到value,输出Value就可以了.
3.因为该类的代码不需要任何重构,故应该直接写入框架中.
第二类是
根据具体的需求需要实现不同的功能.
非常简单,标签的定义,dlt,Tag类都是一样的.不同的功能主要是doTag的方法实现不同而已.