- Struts采用filter(StrutsPrepareAndExecuteFilter)机制实现。
- 继承ActionSupport可以实现一个Action。
- Action可以复写execute方法实现处理,也可以不复写execute,直接写方法,但是struts.xml文件的name属性要改为ActionName_*形式,请求路径要改为ActionName!function.action的形式。
- 每来一个客户端请求,struts就启动一个线程执行Action,所以做到了Action和其包含的属性的隔离。
- 每个Action都可以设置返回值,返回值直接是一个struts.xml文件中的result的name属性。
- Struts.xml文件可以相互包含,用include关键字。
- Action中能取得JSP的内置对象,通过ServletActionContext获取:pageContext、request、response、ServletContext。
- 资源配置文件通过struts.properties的struts.custom.i18n.resources属性指定。
- 资源配置文件有三种:全局、包级别、Action级别。
- Action要接收一个VO,就直接在Action里设置一个对应的VO属性就可以了,但是要写上对应的getter和setter方法。
- Strtus有自己的标签库,但是不建议使用。
- Struts数据验证可以在Action中复写ActionSuport的validate()方法。也可以用配置文件的方式。两种方式没有本质上的区别,只是两种不同形式。但是,两者起作用的时刻都是在默认赋值完成之后进行的,如果数据转换失败,则对应的属性为null,所以这两种验证方式的意义都不大。
- Action错误提示可以使用ActionSupport类中的addFieldError方法。当Action检测到FieldErrors不为空的时候,则认为数据验证失败。可以通过getFieldErrors方法获取所有的数据校验错误。
- 要实现数据校验,可以将逻辑放在拦截器(Interceptro)中完成。拦截器执行在Filter和Action之间,此时数据赋值还没有发生,这是校验数据合法性的好时机。
- 开发自定义的拦截器需要继承AbstractInterception。
- 拦截器中ActionInvocation接口作为参数,它可以取得真正执行的Action实例。同时还可以取得request、session、application的所有属性。你用反射机制实现获取真正执行的Action的相关属性。
- 指令牌Token可以防止表单反复提交。
- 文件上传可以用File参数直接接收,方法是在Action中声明一个File类型的变量就可以了—如File photo。同时还可以获取上传文件的名称和类型等,方法是在声明对应文件名后缀加上FileName或者ContentType的变量。
- 文件上传限制通过引用拦截器fileUpload实现,给fileUpload指定参数,如maximumSize和allowedTypes。
- Struts可以接受客户端的数据,根本原因是其实现了很多转换器,struts可以接受简单类型如:string、int、double、date等,还可以接受的数据。但是如果要接受更多的自定义的类型数据,可以实现转换器。转换器的实现通过继承DefaultTypeConverter完成。
时间: 2024-09-28 20:05:50