如果有人感兴趣,结果在这里:
对于 \WEB-INF\web.xml
<filter id="Filter_1">
<filter-name>LoginFilter</filter-name>
<filter-class>com.myloginfilter.MyLoginFilter</filter-class>
<description>Performs pre-login operation</description>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/j_security_check</url-pattern>
</filter-mapping>
对于 \WEB-INF\classes\com\myloginfilter\MyLoginFilter.class
public class MyLoginFilter implements Filter {
protected FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {
chain.doFilter(new MyRequestWrapper((HttpServletRequest) request), response);
}
public static class MyRequestWrapper extends HttpServletRequestWrapper {
public MyRequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name) {
String username= getRequest().getParameter("j_username");
if ("j_password".equals(name) && "admin".equals(username)) {
username = "administrator";
return username;
}
return super.getParameter(name);
}
}
}
要编译它,请使用 Javac 和以下命令:
javac -cp servlet-api-2.3.jar MyLoginFilter.class