在Spring开发过程中,我们经常需要对 页面调用的数据进行过滤,如果用户未登入,则返回空,如果登入 则,后台返回数据。
<filter>
<display-name>AjaxCheckSession</display-name>
<filter-name>AjaxCheckSession</filter-name>
<filter-class>com.phicomm.security.AjaxCheckSession</filter-class>
</filter>
<filter-mapping>
<filter-name>AjaxCheckSession</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
web.xml 分发器 配置如下
<servlet>
<servlet-name>mes-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mes-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mes-dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.specialdo</url-pattern>
</servlet-mapping>
(1):控制层里面的方法,可以通过 ./xxxxx.do 或者 ./xxxxx.specialdo 来取控制层里面的数据。
(2):可以编写过滤器,只对 Ajax 请求 xxxx/xxxx.do 进行过滤,如果用户未登入 则返回空,如果用户登入 则返回数据 。
import java.io.IOException;
import java.util.List;
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 AjaxCheckSession implements Filter {
public AjaxCheckSession() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest httprequest = (HttpServletRequest) request;
HttpServletResponse httpresponse = (HttpServletResponse) response;
if (httprequest.getHeader("x-requested-with") != null&& httprequest.getHeader("x-requested-with").equals("XMLHttpRequest")) {
// System.out.println("XMLHttpRequest----------");
String strUser = (String) httprequest.getSession().getAttribute("user_id");
List<String> listGroup = (List<String>) httprequest.getSession().getAttribute("listgroupid");
if (strUser == null || strUser.length() <= 0)
{
httpresponse.setHeader("sessionstatus", "timeout");
return;
}
if (listGroup == null || listGroup.isEmpty())
{
httpresponse.setHeader("sessionstatus", "timeout");
return;
}
httpresponse.setHeader("sessionstatus", "timeok");
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
Spring分发器 可以配置多种分发器类型。
添加多个 url-pattern
如下:
<servlet-mapping>
<servlet-name>mes-dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.specialdo</url-pattern>
</servlet-mapping>