实现用户登录控制
1 userFilter.java
- package Filter;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.io.*;
- public class userFilter implements Filter{
- private FilterConfig filterConfig;
- private String loginPage = "../index.jsp";
- public void init (FilterConfig filterConfig) throws ServletException{}
-
- public void doFilter (ServletRequest request,
- ServletResponse response,
- FilterChain chain) throws IOException,ServletException{
-
- HttpServletRequest httpReq = (HttpServletRequest)request;
- HttpServletResponse httpResp = (HttpServletResponse)response;
- HttpSession session = httpReq.getSession(true);
- String username = (String)session.getAttribute("username");
- //如果封装的user不为空,说明已经登陆,则继续执行用户的请求.下面的就不处理了
- if(username!=null){
- chain.doFilter(request,response);
- return;
- }else{//想在这里实现,没有登陆时跳转到登陆页面
-
- httpResp.sendRedirect("../tips.jsp");
- }
-
- }
-
-
- public void destroy(){
-
- }
- }
2 web.xml 配置
- <filter>
- <filter-name>userFilter</filter-name>
- <filter-class>Filter.userFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>userFilter</filter-name>
- <url-pattern>/ygtd/ygtd.jsp</url-pattern>
- </filter-mapping>
说明: 用户访问
/ygtd
/ygtd
.jsp这个文件的时候 就会判断用户是否登录 用户未登录的话就会转到tips.jsp
元素用于指定过滤器关联的url样式或者Servlet。
其中子元素的值必须是在元素中声明过的过滤器的名字。元素和元素可以选择一个;元素指定过滤器关联的URL样式;元素指定过滤器对应的Servlet。用户在访问元素指定的URL上的资源或元素指定的Servlet时,该过滤器才会被容器调用。元素还可以包含0到4个,指定过滤器对应的请求方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST.
·REQUEST
当用户直接访问也面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。
·INCLUDE
如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
·FORWARD
如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
·ERROR
如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
例子:
testFilter
/test.jsp
当用户访问test.jsp页面时,容器就会调用testFilter过滤器。
testFilter
/index.jsp
REQUEST
FORWARD
当用户直接访问index.jsp页面,或者通过RequestDispatcher的forward()方法访问时,容器就会调用testFilter过滤器。
阅读(577) | 评论(0) | 转发(0) |