**原理的实现(动态代理): package Struts.test.proxy;//功能执行类public class ExecuteFunction implements ExecuteFunctionInterface{ public void execute(){/ ...
**原理的实现(动态代理):
package Struts.test.proxy;//功能执行类public class ExecuteFunction implements ExecuteFunctionInterface{ public void execute(){//执行功能类执行方法 System.out.println("execute something……"); }}
package Struts.test.proxy;//**类public class Interceptor { public void beforeDoing() {// 拦截执行功能类之前执行方法 System.out.println("before doing Something……"); } public void afterDoing() {// 拦截执行功能类之后执行方法 System.out.println("after doing Something……"); }}
package Struts.test.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;//**处理类public class InterceptorHandler implements InvocationHandler { private Object object; private Interceptor inter = new Interceptor(); public void setObject(Object object) {// 设置需要拦截的执行功能类 this.object = object; } // 接口invoke方法,proxy是代理实例,method是实例方法,args是代理类传入的方法参数 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { inter.beforeDoing(); // object提供该方法的类实例,args是调用方法所需的参数值的数组 Object returnObject = method.invoke(object, args); inter.afterDoing(); return returnObject; }}
package Struts.test.proxy;import java.lang.reflect.Proxy;//代理对象类public class ProxyObject { private InterceptorHandler handler = new InterceptorHandler(); public Object getProxy(Object object) {// 得到执行类的代理对象实例 handler.setObject(object); // 创建对象实例 return Proxy.newProxyInstance(ExecuteFunction.class.getClassLoader(), object.getClass().getInterfaces(), handler); }}
package Struts.test.proxy;public class TestInterceptor { public static void main(String[] args) { ExecuteFunctionInterface test = new ExecuteFunction(); // 得到执行类的一个代理对象实例 ExecuteFunctionInterface resultObject = (ExecuteFunctionInterface) new ProxyObject().getProxy(test); resultObject.execute();// 代理对象执行 }}
执行效果:配置自定义**:
1.扩展**接口 实现Interceptor接口
2.继承抽象** 继承AbstractInterceptor抽象类,重写intercept()方法。
3.继承方法** 继承MethodFilterInterceptor抽象类,重写doIntercept()方法。
<!-------------------------文件名:struts.
文件上传:
在JSP的Form中:1.<s:form action="upload"method="
post"enctype="multipart/form-data">,其中method和enctype的参数一定要如上所示。2.在
web目录下创建一个存放上传文件的根目录。3. 在action中定义三个参数,file,fileFileName和fileContentType,每个参数前面的file就是jsp表单中上传文件标签的name属性中的value值。4.配置**的时候,可以配置两个参数: allowType:根据文件的类型约束上传的文件 allowExtensions:根据文件的后缀名约束上传的文件5.如果显示配置Struts 2自己的缺省**一定要写在"defaultStack"前,否则自己定义的**不会执行拦截。
文件下载:
1.在<result>标签中定义了type属性,值为"stream"。2.contentDisposition处理方式如下:
3.//从下载文件原始存放路径读取得到文件输出流
public InputStream getDownloadFile(){returnServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+fileName);}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:Struts2学习日志(1):拦截器
关键词:Struts
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。