Eclipse中使用自定义模板来弥补Myeclipse没有新建Filter的功能

来源:互联网 发布:开设网络教育的学校 编辑:程序博客网 时间:2024/06/06 09:06
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. publicclass FilterTemplateimplements 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.     publicvoid init(FilterConfig filterConfig)throws ServletException 
  29.         { 
  30.         this.filterConfig = filterConfig; 
  31.         } 
  32.  
  33.     publicvoid 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.     publicvoid 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. publicclass ${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.     publicvoid init(FilterConfig filterConfig)throws ServletException 
  30.         { 
  31.         this.filterConfig = filterConfig; 
  32.         } 
  33.  
  34.     publicvoid 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.     publicvoid 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时就要使用你定义了模板的编辑器来打开
具体说明参见下图



-
-

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