打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Eclipse中使用自定义模板来弥补Myeclipse没有新建Filter的功能 - Java - New - JavaEye论坛





Myeclipse插件,并没有为我们提供Filter的新建功能,为此我们不得不每次都去新建个类,然后输入那繁琐的重复代码,这完全就是浪费时间,时 间应该花在更有用的事情上,而不是这类重复操作,象下面这些内容如果要自己来写,完全时浪费时间,我们完全可以创建一个模板来让它自动帮我们完成以下内容

Java代码
  1. package test;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.FilterChain;  
  5. import javax.servlet.FilterConfig;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. import javax.servlet.Filter;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12. import javax.servlet.http.HttpSession;  
  13.   
  14. public class FilterTemplate implements Filter  
  15.     {  
  16.   
  17.     /** 
  18.      * Constructor of the object. 
  19.      */  
  20.     public FilterTemplate()  
  21.         {  
  22.         super();  
  23.         }  
  24.   
  25.     private FilterConfig filterConfig;  
  26.   
  27.     // Handle the passed-in FilterConfig      
  28.     public void init(FilterConfig filterConfig) throws ServletException  
  29.         {  
  30.         this.filterConfig = filterConfig;  
  31.         }  
  32.   
  33.     public void doFilter(ServletRequest req, ServletResponse res,  
  34.             FilterChain filterChain)  
  35.   
  36.         {  
  37.         try  
  38.             {  
  39.             HttpServletRequest request = (HttpServletRequest) req;  
  40.             HttpServletResponse response = (HttpServletResponse) res;  
  41.             HttpSession session = request.getSession();  
  42.   
  43.             // 这里放到达目的地前(进入)处理代码  
  44.   
  45.             filterChain.doFilter(req, res);  
  46.   
  47.             // 这里放到达目的地(离开)的处理代码  
  48.   
  49.             }  
  50.         catch (IOException e)  
  51.             {  
  52.             e.printStackTrace();  
  53.             }  
  54.         catch (ServletException e)  
  55.             {  
  56.             e.printStackTrace();  
  57.             }  
  58.         }  
  59.     /** 
  60.      * Destruction of the servlet. <br> 
  61.      */  
  62.     public void destroy()  
  63.         {  
  64.         // Just puts "destroy" string in log  
  65.         // Put your code here  
  66.         }  
  67.   
  68.     }  



打开Eclipse,选择首选相,然后根据图片提示操作







Java代码
  1. package ${enclosing_package} ;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.FilterChain;  
  5. import javax.servlet.FilterConfig;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. import javax.servlet.Filter;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12. import javax.servlet.http.HttpSession;  
  13.   
  14. public class ${primary_type_name} implements Filter  
  15.     {  
  16.   
  17.     /** 
  18.      * Constructor of the object. 
  19.      */  
  20.     public ${primary_type_name}()  
  21.         {  
  22.         super();  
  23.         }  
  24.   
  25.       
  26.     private FilterConfig filterConfig;  
  27.   
  28.     // Handle the passed-in FilterConfig      
  29.     public void init(FilterConfig filterConfig) throws ServletException  
  30.         {  
  31.         this.filterConfig = filterConfig;  
  32.         }  
  33.   
  34.     public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)  
  35.   
  36.         {  
  37.         try  
  38.             {  
  39.             HttpServletRequest request = (HttpServletRequest) req;  
  40.             HttpServletResponse response = (HttpServletResponse) res;  
  41.             HttpSession session = request.getSession();  
  42.               
  43.             // 这里放到达目的地前(进入)处理代码  
  44.               
  45.               
  46.             filterChain.doFilter(req,res);  
  47.               
  48.             // 这里放到达目的地(离开)的处理代码  
  49.               
  50.             } catch (IOException e)  
  51.             {  
  52.             e.printStackTrace();  
  53.             } catch (ServletException e)  
  54.             {  
  55.             e.printStackTrace();  
  56.             }  
  57.         }  
  58.     /** 
  59.      * Destruction of the servlet. <br> 
  60.      */  
  61.     public void destroy()  
  62.         {  
  63.         // Just puts "destroy" string in log  
  64.         // Put your code here  
  65.         }  
  66.   
  67.     }  



代码中有两处变量

${enclosing_package} 外层包名
${primary_type_name} 不带扩展名的文件名



用图片结合代码那两个变量的意思就很明显了,因为模板里其它部分是死的,就只有包和类名是活的,所以需要动态的生成

接下来就是使用这个模板了
我们只需要新建一个class(任意包下都无所谓),然后Ctrl+A全选,接着delete,在编辑器中输入filter,按Alt+/(代码 辅助快捷键),选择filter - filter模板(注意,如果filter只有单一辅助内容,不会提示图中的框,会把唯一的内容直接输出到编辑器,你可以只输入f,然后Alt+/)




接着我们打开web.xml加入相应的配置信息,如果你觉得配置信息也麻烦(毕竟最少都有8行),完全可以在xml编辑器下也创建模板,由于 xml编辑器不是eclipse默认提供,而是通过插件提供的,所以我们要到相应插件的选相下去修改,笔者使用的是myeclipse的xml编辑器,所 以是在首选相下的myeclipse里,见下图





-

接下来我们来打开web.xml,然后在web-app标签中间空白处输入filter然后alt+/,就会出现filter 模板提示,见下图



-

注意一点: 由于xml编辑器不是eclipse默认提供,而是通过插件提供的,所以我们要到相应插件的选相下去修改,那么你打开xml时就要使用你定义了模板的编辑器来打开
具体说明参见下图



-
-

除了上面的例子,模板还可以用在其它很多地方,只要是出现频率高的重复操作,我们都可以定义一个模板来完成,这样可以节省我们宝贵的时间来做其它有意义的事情


    本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    使用Filter对用户权限和session的控制
    Servlet中读取参数中文乱码的一种解决方法
    如何在自定义Filter中优雅的实现静态资源放行
    Filter Servlet实例应用
    java 解决字符集的乱码问题
    Filter技术的应用(转)
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服