过滤器:Filter(重点)
实现Filter接口,重写里面的方法
import javax.servlet.*;
import java.io.IOException;
public class CharaFilter 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.setCharacterEncoding("utf-8");
//Chain:过滤器中的所有代码,在过滤请求中继续执行。
chain.doFilter(request,response);//让请求继续走,如果不写将被拦截住
}
//销毁 服务关闭就销毁
@Override
public void destroy() {
}
}
web.xml 配置filter
<!--类名-->
<filter>
<filter-name>CharaFilter</filter-name>
<filter-class>com.gyl.jsp.CharaFilter</filter-class>
</filter>
<!--只要是在servlet的任何请求都会走过滤器-->
<filter-mapping>
<filter-name>CharaFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
监听器:Listener
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class Listener implements HttpSessionListener {
//一次创建session触发监听
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx=se.getSession().getServletContext();
Integer count = (Integer) ctx.getAttribute("gyl");
if(count==null){
count=new Integer(1);
}else{
int coun = count.intValue();
count=new Integer(coun+1);
}
ctx.setAttribute("gyl","lalalalala");
}
//每次销毁session触发监听
@Override
public void sessionDestroyed(HttpSessionEvent se) {
}
}
web.xml配置
<!--注册监听器-->
<listener>
<listener-class>com.gyl.jsp.Listener</listener-class>
</listener>