过滤器典型应用
①:乱码处理—dopost的乱码处理
@WebFilter(value="/login")
public class EncodingFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response); //让目标资源执行,放行
}
@Override
public void destroy() {
}
}
@WebServlet("/login")
public class Login extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + " " + password);
}
}
②:权限验证
我们直接访问http://localhost:8080/FirstServlet/tage是不行的
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/FirstServlet/login" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="text" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
@WebServlet("/tage")
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("我是登录以后才能操作的代码");
}
}
@WebServlet("/login")
public class Login extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + " " + password);
//登录成功以后,讲登录信息防伪session当中
HttpSession session = request.getSession();
session.setAttribute("name", session.getId());
System.out.println(session.getAttribute("name"));
}
}
@WebFilter("/tage")
public class CheakFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 如果登录过那么久跳转到MyServlet当中去,如果没有就跳转到登录页面
// 向下转型
HttpServletRequest request2 = (HttpServletRequest)request;
HttpServletResponse response2 = (HttpServletResponse) response;
//创建session对象
HttpSession session = request2.getSession();
String name = (String) session.getAttribute("name");
if (name !=null) {
chain.doFilter(request, response);
}else {
System.out.println("请先登录....");
response2.sendRedirect(request2.getContextPath() + "/NewFile.html");
}
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}