定义过滤器``
package com.biubiu.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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 没啥作用
}
@Override
/**
*拦截的请求就在该方法中处理
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("请求到大过滤器");
HttpServletRequest req = (HttpServletRequest) request;//向下转型
HttpServletResponse resp =(HttpServletResponse)response;
//放行请求
chain.doFilter(req, resp);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
System.out.println("访问了servlet");
}
<!-- 配置过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.biubiu.filter.MyFilter</filter-class>
</filter>
处理字符编码
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//System.out.println("请求到大过滤器");
HttpServletRequest req = (HttpServletRequest) request;//向下转型
HttpServletResponse resp =(HttpServletResponse)response;
//处理字符编码
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//放行请求
chain.doFilter(req, resp);
}
public void login(HttpServletRequest req, HttpServletResponse resp) throws Exception{
String name = req.getParameter("username");
String pwd = req.getParameter("pwd");
System.out.println("用户名:"+name);
System.out.println("密码:"+name);
resp.getWriter().println("世界你好!");
}
登录验证
用户没有登录,会被过滤器拦截之后跳转到登录页面,如果登录后则会放行
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;//向下转型
HttpServletResponse resp=(HttpServletResponse)response;
//进行登录验证
if (req.getSession().getAttribute("user")==null) {
req.setAttribute("msg", "先登录");
req.getRequestDispatcher("/Pages/login.jsp").forward(req, resp);
}else {
//放行请求
chain.doFilter(req, resp);
}
}
<!-- 配置过滤器:登录验证 -->
<filter>
<filter-name>lgFilter</filter-name>
<filter-class>com.biubiu.filter.LgFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>lgFilter</filter-name>
<!-- 如果用户访问以下的路径必须保证登录 -->
<url-pattern>/emp/delete</url-pattern>
<url-pattern>/emp/update</url-pattern>
<url-pattern>/emp/list</url-pattern>
<url-pattern>/emp_list.jsp</url-pattern>
<url-pattern>/dept/list</url-pattern>
</filter-mapping>