| 
			
	
	
	
						  
						
						
						
	
 步骤 2 : 使用Filter处理 步骤 3 : 配置web.xml 步骤 4 : 练习-在login.jsp页面的js,css和图片文件 步骤 5 : 答案-在login.jsp页面的js,css和图片文件 
					在用户是否登陆的验证中,我们可以通过在HeroListServlet中增加对session的判断代码来做到登陆验证。 
					
				但是按照这样的做法,所有的Servlet都要加上一样的代码,就会显得比较累赘。 与通过Filter处理中文问题一样,也可以通过Filter一次性解决所有的登陆验证问题 
					创建一个AuthFilter 类 
					
				String uri = request.getRequestURI(); if (uri.endsWith("login.html") || uri.endsWith("login")) { chain.doFilter(request, response); return; } 首先判断是否是访问的login.html和loginHero,因为这两个页面就是在还没有登陆之前就需要访问的 String userName = (String) request.getSession().getAttribute("userName"); if (null == userName) { response.sendRedirect("login.html"); return; } 从Session中获取userName,如果没有,就表示不曾登陆过,跳转到登陆页面。 package filter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
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 AuthFilter implements Filter {
	@Override
	public void destroy() {
	}
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		String uri = request.getRequestURI();
		if (uri.endsWith("login.html") || uri.endsWith("login")) {
			chain.doFilter(request, response);
			return;
		}
		String userName = (String) request.getSession().getAttribute("userName");
		if (null == userName) {
			response.sendRedirect("login.html");
			return;
		}
		chain.doFilter(request, response);
	}
	@Override
	public void init(FilterConfig arg0) throws ServletException {
	}
}
 
								
										
									
								
							
					配置AuthFilter
					 
					
					<filter>
		<filter-name>AuthFilter</filter-name>
		<filter-class>filter.AuthFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>AuthFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
		
 
									
								<filter> <filter-name>AuthFilter</filter-name> <filter-class>filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 
					因为这个过滤器的存在,在登陆之前所有的资源都不能访问。 所以在login.jsp上如果有图片,js和css,也不能够正常显示和工作。 
					
				这样做当然是不行的,那么如何让js css和图片文件即使在不登陆的情况下,也可以访问呢? 
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			 
			 
			
			
			
			
			
		
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 
 |