项目的登陆功能是模块差不多都做完时候才加上的,由于项目都是用框架做的,现在想增加登陆功能,如果用户直接通过url访问其它页面时候则返回到登陆页面。
这次的解决方案是不依赖任何框架和jar包。就用最基本的servlet完成。思路是:如果用户登陆成功则把用户登陆的信息存在session里面,在过滤器中获取session中刚刚存的值,如果存在表示用户登陆成功,如果没有表明用户不合法,返回到登陆页面。
下面是过滤器源码:
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 LoginFilter implements Filter {
// 需要定义系统页面访问中可放行的连接
private List<String> list = new ArrayList<String>();
public void init(FilterConfig arg0) throws ServletException {
list.add("/index.jsp");
list.add("/LoginAction.do");
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// 1、获取页面中的访问的路径连接
String path = request.getServletPath();
if (list != null && list.contains(path)) {
// 如果页面中获取的访问连接于定义的可放行的连接一致,则放行
chain.doFilter(request, response);
return;
}
// 2、从session(flag)对象中获取当前登录的用户标志
Object flag = request.getSession().getAttribute("flag");
if (flag != null) {
// 如果从session中获取的用户对象不为空,则放行
chain.doFilter(request, response);
return;
}
// 如果不满足条件1和2,则不能放行,回到系统的登录页面
response.sendRedirect(request.getContextPath() + "/");
}
public void destroy() {
}
}
写完过滤器后要在web.xml里面配置一下。配置文件:
<filter>
<filter-name>filter</filter-name>
<filter-class>com.dongbest.servlet.LoginFilter</filter-class>
</filter>
<!-- 拦截以.jsp结尾的链接 -->
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 拦截以.do结尾的链接 -->
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- 设置session失效时间为30分钟 -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
把代码引到项目中后,该功能就可以完成了。源码已经上传到资源里面 下面是链接:
http://download.csdn.net/detail/zl544434558/6870647