Struts2总结

1. 明确Struts2的原理是调用了Servlet的doFilter方法。

2. 了解Struts2的6大配置文件struts-default.xmldefault.properties、struts-plugin.xml、struts.propertiesweb.xml、struts.xml

3. 明确Struts2的核心配置文件struts.xml的编写,尤其注意转发和重定向的配置,以及动态方法调用的配置。

4. 明确Action类接收前端请求的方式有四种:属性驱动方式域驱动方式集合数据接收ModelDriven方式

 

5. 明确Action类中获取Servlet的API:request、session、application的两种方式,第一种跟值栈的context有关,主要为了在对应域中放值,第二种跟ServletActionContext有关,较复杂但能获得对应域的更多属性。

6. 重点明确值栈的概念,一个Action请求对应一个值栈对象,值栈的主要作用是存放Action运行过程中的相关数据,值栈包括两个重要的属性 root context

  明确值栈的存放数据方法,向root中显示、隐式存放数据,向context中显示、隐式存放数据;

  明确值栈的取出数据方法,使用OGNL表达式取出数据。

 

7. 明确Struts2自带类型转换器,以及如何自定义类型转换器,自定义过程中要注意类型转换的双向性,因为存在数据的回显。

8. 明确Struts2的数据验证,这里指的验证是指服务器端验证;

  可以在Action类中编写数据验证代码validate,或者通过Action对应的XML文件设置数据验证,以上两种方式都可以对Action中的所用方法或者指定方法进行数据验证,其中执行的顺序是先全局XML、再指定XML、再指定验证代码、最后全局验证代码;

  了解XML方式的常用数据验证类型。

9. 明确Action类的执行顺序

  (1)类型转换:类型转换失败实在Action调用相应属性的set方法之前发生的,类型转换失败,不影响程序的运行。

  (2)set方法:无论类型转换是否成功,都将执行该属性的set方法。只不过,类型转换失败,会设置该属性值为null。

  (3)数据验证:若对于类型转换失败的数据,程序中存在为null的验证,则会在向fieldErrors集合中加入类型转换异常信息的同时,将该属性为null的验证信息也加入fieldErrors集合。

  (4)Action方法:只有当fieldErrors集合的size为0,即没有异常信息时,才会执行Action方法。

  类型转换和数据验证的错误都会放在fiedErrors这个Map<String, List<String>>集合中,有错误就要配置跳转的input视图。

 

10. 重点明确拦截器,是AOP编程的一种实现,它可以在执行Action之前或之后拦截下用户请求,执行一些操作,以增强Action方法的功能

  注意拦截器是方法级的,同时普通拦截器类继承自Interceptor接口,而方法过滤拦截器类继承自MethodFilterInterceptor抽象类;

  同时注意拦截器的注册方式,拦截器定义是不可以用注解开发的。

11. 明确国际化(i18n)是通过读取资源文件的形式实现的。资源文件的定义与注册,主要分为全局范围的、包范围的、Action范围的;

  代码中通过ActionSupport的getTest方法加载资源文件的;

  改变加载的资源文件类型,要求让i18n拦截器起作用,并且改变其中的request_locale值

12. 明确文件的上传和下载:

    (1)文件的上传:默认拦截器栈中包含了文件上传拦截器,故表单通过Struts2可直接将文件上传,我们要做的,就是将上传好的文件放到指定的位置或者其他的一些处理;配置文件中可以配置上传文件的大小(上传多个文件时为总大小)和上传文件的类型。

    (2)文件的下载:如果需要向浏览器提供文件下载功能,则需要设置HTTP响应头的Content-Disposition属性,即内容配置属性值为attachment(附件)

     通过配置文件中设置action的返回方式为stream,打开文件下载拦截器,同时要设置下载的文件资源和响应头。

 

13. 明确Struts2使用令牌机制防止表单的重复提交,只要表单下添加<s:token/>即可,并且配置表单提交无效视图。

14. 明确Struts2的注解式开发@ParentPackage、@NameSpace、@Results、@Result、@Action、@InterceptorRef、@InterceptorRefs

15. 知道尽量少用Struts标签。

posted @ 2017-02-08 20:18  拉夫德尔  阅读(415)  评论(0编辑  收藏  举报