Jsp Servlet配置过滤器Filter配置实例代码



首先创建好Servlet——我在这里创建了一个BaseServlet(通用Servlet)这样可以避免创建太多的Servlet:
[java]view plaincopyprint?
package servlet;

import java.io.IOException;

import java.lang.reflect.Method;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BaseServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
/*获取方法名称*/
String methodName = request.getParameter(“method”);

/*获取当前对象的类型对象*/
Class<?> classType = this.getClass();

// System.out.println(classType);
/*获取方法对象 1,方法名称.2,方法参数的类型*/
Method method = classType.getDeclaredMethod(methodName,
new Class[]{HttpServletRequest.class, HttpServletResponse.class});

/*执行方法
* this:调用哪个对象的方法
* Object[]:参数*/
method.invoke(this, new Object[]{request, response});

} catch (Exception e) {
System.out.println(e.getMessage());
}

}

}
创建好过后、那么在以后你所创建的Servlet中都要继承这个Servlet在页面访问的时候、需要加上method参数:
[java]view plaincopyprint?
package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import filter.CodingConvert;

@SuppressWarnings(“all”)
public class UserAction extends BaseServlet {
public void getUser(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{

String pass = request.getParameter(“pass”);

CodingConvert cod = new CodingConvert();
String name = cod.toUT(request.getParameter(“name”));

request.setAttribute(“list”, name);

//response.sendRedirect(“index.jsp”); //此跳转方法只能取得在url中带parameter或Session范围内的值

RequestDispatcher dispatcher = request.getRequestDispatcher(“index.jsp”);

dispatcher .forward(request, response);

}
}


//下面是页面
<form name=”form1″ action=”userAction?method=getUser” method=”post”>

//其中userAction是我在Web.xml文件中定义的Servlet名称
其中UserAction中用到的字符编码转换方法类。我也不知道为什么、所有的东西都设置好了、连Tomcat的配置文件都改了还是不能解决我的乱码问题、于是用了这个方法:
[java]view plaincopyprint?
package filter;

public class CodingConvert {

public CodingConvert(){

}
public String toUT(String uniStr){
String gbStr = “”;
if(uniStr == null){
uniStr = “”;
}
try{
byte[] tempByte = uniStr.getBytes(“ISO8859_1″);
gbStr = new String(tempByte,”UTF-8″);
}
catch(Exception ex){
}
return gbStr;
}

public String toUni(String gbStr){
String uniStr = “”;
if(gbStr == null){
gbStr = “”;
}
try{
byte[] tempByte = gbStr.getBytes(“UTF-8″);
uniStr = new String(tempByte,”ISO8859_1″);
}catch(Exception ex){
}
return uniStr;
}

}

过滤器类(实现Filter接口):
[java]view plaincopyprint?
package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FilterImpl implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//设置编码方式
request.setCharacterEncoding(“UTF-8″);
chain.doFilter(request,response); //这行意思是代码设置完毕,继续执行
}

public void init(FilterConfig filterConfig) throws ServletException {

}

}

我的Web.xml文件:
[xhtml]view plaincopyprint?
<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″ xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<servlet>
<servlet-name>BaseServlet</servlet-name>
<servlet-class>servlet.BaseServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>UserAction</servlet-name>
<servlet-class>servlet.UserAction</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>BaseServlet</servlet-name>
<url-pattern>/hzw</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UserAction</servlet-name>
<url-pattern>/userAction</url-pattern>
</servlet-mapping>

<!– 过滤器 –>
<filter>
<filter-name>myFtiler</filter-name>
<filter-class>filter.FilterImpl</filter-class>
</filter>

<filter-mapping>
<filter-name>myFtiler</filter-name>
<servlet-name>BaseServlet</servlet-name>
<servlet-name>UserAction</servlet-name>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

参考资源:http://blog.csdn.net/wangmin326/archive/2010/07/15/5736854.aspx
上面这个资源中对Filter类跟xml配置文件都有很详细的讲解。

http://blog.csdn.net/hzw2312/article/details/6366375