Filter注解
package com.javaweb.servlet3;
import java.io.IOException;
import javax.servlet.DispatcherType;
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.annotation.WebFilter;
//@WebFilter("/*")指定拦截的全路径
//@WebFilter(servletNames="Some-Servlet")指定拦截特定的一个的servlet
@WebFilter(value="/*",dispatcherTypes=DispatcherType.FORWARD)//指定拦截全路径中请求转发为forward方式
public class SomeFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("-----------------");
chain.doFilter(request, response);
System.out.println("-----------------");
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
Listener
使用@WebListener注解即可。
package com.javaweb.listener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
@WebListener
public class MyRequestAttrbuteListener implements
ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent arg0) {
System.out.println("向request中添加属性"+arg0.getName()+"="+arg0.getValue());
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("从request中删除属性"+arg0.getName()+"="+arg0.getValue());
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("重置request中的属性"+arg0.getName()+"="+arg0.getValue());
}
}
注解和web.xml同时存在
1.servlet
如果url-pattern相同,则无法启动web应用。否则则是有两个路径访问servlet
2.filter
无论是否相同,都是以两个独立的filter出现
3.listener
都是以同一个监听器
4.metadata-complete=“boolean”
web.xml中的标签中的属性metadata-complete的取值为true或false。
ture:web.xml起作用,忽略注解。
false:默认值,表示两种注册方式同时起作用。