As we know ,拦截器可以拦截请求,过滤器可以过滤不合适的请求,转换器可以平衡请求参数和响应参数
拦截器
怎么实现
package pri.niddles.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//inheriting a HandlerInterceptor is implement interceptor in essence
public class Interceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("你他娘的还没登录呢");
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("走吧");
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
过滤器
package pri.niddles.filter;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
}
}
监听器
package pri.niddles.listener;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class MyListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
System.out.println("监听完成");
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
String encoding = servletRequestEvent.getServletRequest()
.getCharacterEncoding();
int port = servletRequestEvent.getServletRequest().getServerPort();
servletRequestEvent.getServletContext().getAttribute("");
String protocol = servletRequestEvent.getServletRequest().getProtocol();
String remoteHost = servletRequestEvent.getServletRequest().getRemoteHost();
String remoteAddr = servletRequestEvent.getServletRequest().getRemoteAddr();
String scheme = servletRequestEvent.getServletRequest().getScheme();
int remotePort = servletRequestEvent.getServletRequest().getRemotePort();
String serverName = servletRequestEvent.getServletRequest().getServerName();
String contextPath = servletRequestEvent.getServletContext().getContextPath();
System.out.println("it is trying into your blog website , about him information following :");
System.out.println(
"--------------------访问者信息---------------------------"+
"the guy of remotehost is " + remoteHost +
"remoteaddress is " + remoteAddr +
"remoteport is" + remotePort +
"scheme is " + scheme +
"protocol is" +protocol +
"serverName is "+ serverName +
"contextPath is "+ contextPath+
"-----------------------内部信息-----------------------------"+
"the servicer start in port" +port
);
}
}
转换器
public class DateConverter implements Converter {
public Object convert(Class clazz, Object obj) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (clazz == Date.class) {
String src = (String) obj;
Date dest = null;
try {
dest = sdf.parse(src);
} catch (ParseException e) {
System.out.println("未填生日");
}
return dest;
} else {
return null;
}
}
}