看看这个登录和注销是不是还有改进的地方
好久没写 Web 程序了都忘了.临时用的.在网上搜搜写的.回忆一下当年刚上班时候的感觉.
大家看看是不是还有优化的地方,自己感觉不错 吼吼~~~
?
页面是 JSF 的,后台服务是一个主数据产品.
?
1.登录
?
??
3. 过滤器
?
public class CheckLoginFilter implements Filter {public void destroy() {}public void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String uid = (String) request.getSession().getAttribute("uid");String request_uri = request.getRequestURI().toLowerCase();// 得到用户请求的URI String ctxPath = request.getContextPath();// 得到web应用程序的上下文路径 // 登录和错误页面不过滤 if (request_uri.substring(ctxPath.length()).equals("/faces/login.jsp")|| request_uri.substring(ctxPath.length()).equals("/faces/error.jsp")) {filterChain.doFilter(servletRequest, servletResponse);return;}// 另一个系统,要直接嵌入我们的数据页面.封装好的包.登录验证if (LoginReclaim.getInstance().login(request)) {// 已经通过身份认证服务器认证String username = LoginReclaim.getInstance().getUid(request);// 取得登录用户工号request.getSession().setAttribute("uid", username);filterChain.doFilter(servletRequest, servletResponse);return;}// 用户登录验证if (uid == null || "".equals(uid)) {// response.sendRedirect(request.getContextPath() +// "/faces/error.jsp");PrintWriter out = response.getWriter(); //感觉这里写的挺有意思的,在网上查的. out.write("<script>window.top.location.href ='"+ request.getContextPath()+"/faces/error.jsp'</script>"); //request.getRequestDispatcher("/faces/error.jsp").forward(request, response);} else {filterChain.doFilter(servletRequest, servletResponse);}}}??
?