code.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>暗号提交页</title>
</head>
<body>
<form action="ServletDemo1" method="POST">
<h3>请输入暗号</h3>
暗号1 : <input type="text" name="code1"/>
<input type="submit" value="提交暗号"/>
</form>
</body>
</html>
err_msg.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Refresh" content="3; url=code.html"/>
<title>error</title>
<script>
window.onload=function(){
var jump=document.getElementById("jump");
var time=2;
setInterval(function(){
jump.innerHTML=time;
time--;
}, 1000);
}
</script>
</head>
<body>
<h1>暗号输入有误,请重新输入</h1>
<br/>
<a href="code.html">回到暗号输入界面...</a>
<span id="jump">3</span>后跳转
</body>
</html>
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 FilterDemo1 implements Filter {
/**
* 在Filter实例创建之后立即执行,进行初始化的操作(里面不写代码也没关系)
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("FilterDemo1实例创建成功");
}
/**
* 对过滤器所拦截的请求,进行处理的核心方法
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//ServletRequest->HttpServletRequest->xxxRequest
// HttpServletRequest req=(HttpServletRequest) request;
// HttpServletResponse res=(HttpServletResponse) response;
// req.getMethod();
// res.getContentType();
//处理...
System.out.println("FilterDemo1.doFilter()。。。。。");
//处理请求参数乱码
request.setCharacterEncoding("utf-8");
//1.获取用户提交的暗号
String code1=request.getParameter("code1");
//2.判断暗号是否正确
if(!"芝麻开门".equals(code1))
{
//3.如果暗号不正确,则跳转到错误提示页面
request.getRequestDispatcher("/err_msg.html").forward(request, response);
return;
}else{
//4.如果暗号正确,则放行过滤器访问ServletDemo1
//如果处理OK,要放行过滤器,接着执行后面的资源
chain.doFilter(request, response);
}
}
/**
* 在Filter实例销毁之前执行,进行善后的处理(里面不写代码也没关系)
*/
@Override
public void destroy() {
System.out.println("FilterDemo1实例将要被销毁");
}
}
package filter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("ServletDemo1.doGet()");
response.getWriter().write("This is ServletDemo1 !");
response.getWriter().write("code right!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>code.html</welcome-file>
</welcome-file-list>
<!--配置监听器(完成注册) -->
<listener>
<listener-class>listener.MyServletContextListener</listener-class>
</listener>
<!--配置过滤器锁拦截的路径 -->
<filter>
<filter-name>FilterDemo1</filter-name>
<filter-class>filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterDemo1</filter-name>
<url-pattern>/ServletDemo1</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>filter.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>
</web-app>