你的位置:首页 > 软件开发 > Java > Struts2学习日志(1):拦截器

Struts2学习日志(1):拦截器

发布时间:2017-11-24 10:07:12
**原理的实现(动态代理): package Struts.test.proxy;//功能执行类public class ExecuteFunction implements ExecuteFunctionInterface{ public void execute(){/ ...

Struts2学习日志(1):拦截器

**原理的实现(动态代理):

 
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();// 代理对象执行 }}

 

  执行效果:Struts2学习日志(1):拦截器Struts2学习日志(1):拦截器

配置自定义**:

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处理方式如下:Struts2学习日志(1):拦截器Struts2学习日志(1):拦截器 3.//从下载文件原始存放路径读取得到文件输出流 
public InputStream getDownloadFile(){returnServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+fileName);} 

 

 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Struts2学习日志(1):拦截器

关键词:Struts

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录