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

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

Java代码

package test;

import java.io.IOException;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.Filter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class FilterTemplate implements Filter

{

/**

* Constructorof the object.

*/

publicFilterTemplate()

{

super();

}

private FilterConfigfilterConfig;

// Handle thepassed-in FilterConfig

public voidinit(FilterConfig filterConfig) throws ServletException

{

this.filterConfig = filterConfig;

}

public voiddoFilter(ServletRequest req, ServletResponse res,

FilterChain filterChain)

{

try

{

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

HttpSession session = request.getSession();

// 这里放到达目的地前(进入)处理代码

filterChain.doFilter(req, res);

// 这里放到达目的地(离开)的处理代码

}

catch(IOException e)

{

e.printStackTrace();

}

catch(ServletException e)

{

e.printStackTrace();

}

}

/**

* Destructionof the servlet. <br>

*/

public void destroy()

{

// Justputs "destroy" string in log

// Put yourcode here

}

}

package test;

import java.io.IOException;

importjavax.servlet.FilterChain;

import javax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

import javax.servlet.Filter;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class FilterTemplateimplements Filter

{

/**

* Constructor of the object.

*/

public FilterTemplate()

{

super();

}

private FilterConfig filterConfig;

// Handle the passed-in FilterConfig

public void init(FilterConfig filterConfig) throws ServletException

{

this.filterConfig = filterConfig;

}

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain filterChain)

{

try

{

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

HttpSession session = request.getSession();

// 这里放到达目的地前(进入)处理代码

filterChain.doFilter(req, res);

// 这里放到达目的地(离开)的处理代码

}

catch (IOException e)

{

e.printStackTrace();

}

catch (ServletException e)

{

e.printStackTrace();

}

}

/**

* Destruction of theservlet. <br>

*/

public void destroy()

{

// Just puts "destroy" string in log

// Put your code here

}

}

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

使用自定义模板来弥补Myeclipse没有新建Filter的功能_第1张图片

使用自定义模板来弥补Myeclipse没有新建Filter的功能_第2张图片

使用自定义模板来弥补Myeclipse没有新建Filter的功能_第3张图片


Java代码

package ${enclosing_package};

import java.io.IOException;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

import javax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

import javax.servlet.Filter;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class ${primary_type_name}implements Filter

{

/**

* Constructor of the object.

*/

public ${primary_type_name}()

{

super();

}

private FilterConfig filterConfig;

// Handle the passed-in FilterConfig

public void init(FilterConfig filterConfig)throws ServletException

{

this.filterConfig = filterConfig;

}

public void doFilter(ServletRequest req,ServletResponse res, FilterChain filterChain)

{

try

{

HttpServletRequest request =(HttpServletRequest) req;

HttpServletResponse response =(HttpServletResponse) res;

HttpSession session =request.getSession();

// 这里放到达目的地前(进入)处理代码

filterChain.doFilter(req,res);

// 这里放到达目的地(离开)的处理代码

} catch (IOException e)

{

e.printStackTrace();

} catch (ServletException e)

{

e.printStackTrace();

}

}

/**

* Destruction of the servlet.<br>

*/

public void destroy()

{

// Just puts "destroy" stringin log

// Put your code here

}

}

代码中有两处变量

${enclosing_package} 外层包名

${primary_type_name} 不带扩展名的文件名

使用自定义模板来弥补Myeclipse没有新建Filter的功能_第4张图片

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

接下来就是使用这个模板了

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


使用自定义模板来弥补Myeclipse没有新建Filter的功能_第5张图片


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


使用自定义模板来弥补Myeclipse没有新建Filter的功能_第6张图片


使用自定义模板来弥补Myeclipse没有新建Filter的功能_第7张图片


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


使用自定义模板来弥补Myeclipse没有新建Filter的功能_第8张图片


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

具体说明参见下图


使用自定义模板来弥补Myeclipse没有新建Filter的功能_第9张图片


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


你可能感兴趣的:(MyEclipse)