步骤1:在Servlet中进行登陆验证的局限性
步骤2:使用Filter处理
步骤3:配置web.xml
步骤4:练习-在login.jsp页面的js,css和图片文件
步骤5:答案-在login.jsp页面的js,css和图片文件
步骤 1 : 在Servlet中进行登陆验证的局限性
在用户是否登陆的验证中,我们可以通过在HeroListServlet中增加对session的判断代码来做到登陆验证。
但是按照这样的做法,所有的Servlet都要加上一样的代码,就会显得比较累赘。
与通过Filter处理中文问题一样,也可以通过Filter一次性解决所有的登陆验证问题
步骤 2 : 使用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 {
}
}
|
步骤 3 : 配置web.xml
配置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 >
|
更多内容,点击了解: https://how2j.cn/k/filter/filter-auth/590.html