概述
实现AOP(面向切面)的编程思想,是可插拔的,可以对某个Action方法之前或之后实施拦截。
拦截器栈:将拦截器按一定的顺序联结成一条链,在访问被拦截的方法时,Struts2拦截器链中的拦截器就会按照之前定义的顺序被依次调用。
自定义拦截器
1、创建拦截器
创建一个类并继承AbstractInterceptor类,实现其中的
intercept(ActionInvocation invocation)方法:
其中,invocation.invoke()为解除拦截
2、创建action
3、配置struts.xml
在struts.xml中配置Interceptor,对action指定所需的拦截器。
4、jsp界面
拦截器栈:
1、先定义多个拦截器,如上所示
2、配置struts.xml文件
在Interceptors中可以定义多个Interceptor,依次放入interceptor-stack,并为action指定interceptor-stack的name属性,就可以依次调用其中的Interceptor
文件的上传
1、jsp界面
将form表单的enctype设为“multipart/form-data”
2、在Action中添加相应属性(属性要设置set,get方法),并编写上传方法
3、配置struts.xml
注意:
fileUpload.allowTypes指定上传文件的类型,fileUpload.allowedExtensionsSet指定上传文件的后缀。
也可设置fileUpload.maximumSize,上传文件大小,以字节为单位,默认为2M
出现错误会转向一个input视图,可以通过
<s:actionError/> <s:feildError/>
显示错误消息的提示
多文件上传:
在action中对将接收参数改为数组形式,通过for循环进行上传
文件下载
概述
在action中建立InputStream类型的方法,用以接收需要下载文件的字节流,并指明存放路径。再通过struts中的`来进行传值。
1、action中代码
注意:
默认路径在E:\Tomcat\apache-tomcat-7.0.90\webapps\项目名称中
2、struts中代码
注意:
<param name="inputName"></param>
中的内容,必须是action中InputStream类型方法的名称(首字母小写)。