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>