在java web 工程中实现登录和安全验证

登录验证代码

package security;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.User;


@WebServlet("/login.do")
public class Login extends HttpServlet {
        private static final long serialVersionUID = 1L;

        private final String ERROR_VIEW = "admin-login.jsp";

        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

                String username = request.getParameter("username");//从地址栏获取用户名
                String password = request.getParameter("password");//从地址栏获取密码
                
                //判断用户名密码是否正确
                if(username.equals("user") && password.equals("88888")) {
                        HttpSession session = request.getSession(true);
                        
                        //密码正确则设置一个session
                        session.setAttribute("user", new User(username,password));
                        putCookie(request,response,username);
                        //跳转到后台界面
                        request.getRequestDispatcher("console/admin.jsp").forward(request, response);
                }else {
                        request.getRequestDispatcher(ERROR_VIEW).forward(request, response);
                }
                
        }
        
        private void putCookie(HttpServletRequest request, HttpServletResponse response, String username) {
                String value = request.getParameter("login");
                //设置一个cookie
                if ("auto".equals(value)) {
                        Cookie cookie = new Cookie("user", username);
                        cookie.setMaxAge(7 * 24 * 60 * 60);
                        response.addCookie(cookie);
                }
        }

}

2.过滤器安全验证代码

package security;
/**
 * @author 鐜嬭儨鍗?
 */
import java.io.IOException;
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.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.ObjectUtils;

//过滤以/console/,/admin/开头的请求
@WebFilter(urlPatterns = { "/console/*", "/admin/*" }, initParams = {
                @WebInitParam(name = "INDEX_VIEW", value = "/index.jsp") })
public class MemberFilter implements Filter {

        private String INDEX_VIEW;

        @Override
        public void init(FilterConfig config) throws ServletException {
                this.INDEX_VIEW = config.getInitParameter("INDEX_VIEW");
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
                HttpServletRequest req = (HttpServletRequest) request;

                if (ObjectUtils.anyNotNull(req.getSession().getAttribute("user"))) {
                        chain.doFilter(request, response);
                } else {
                        HttpServletResponse resp = (HttpServletResponse) response;
                        resp.sendRedirect(req.getContextPath() + INDEX_VIEW);
                }
        }

        @Override
        public void destroy() {
        }

}