js、Java後臺設置cookie

概述:小開心下,又學到了點東西

  1. JS設置cookie


  2. //添加時間函數

  3. function SetCookie(name, value){

  4. var Days = 30;

  5.     var exp = new Date();

  6.     exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);

  7.     document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();   //又學的一個重點

  8. }


  9. //獲取時間函數

  10. function GetCookie(name){

  11.     var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));

  12.     if (arr != null) return unescape(arr[2]); return null;


  13. }


  14. //刪除時間函數

  15. function DelCookie(name){

  16.     var exp = new Date();

  17.     exp.setTime(exp.getTime() - 1);

  18.     var cval = GetCookie(name);

  19.     if (cval != null) document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString();

  20. }

Java後臺設置COOKIE和取值COOKIE

 /**

     * 名片登錄請求

     * @param modelMap

     * @param session

     * @param response

     * @param account

     * @param password

     * @param autoLogin

     * @return

     */

    @RequestMapping(value = "crm_micro_business_card_login_card.do")

    public String login(ModelMap modelMap,HttpSession session,HttpServletResponse response,@RequestParam(value = "account",required=false) String account,

    @RequestParam(value = "password",required=false) String password,@RequestParam(value = "autoLogin",required=false) String autoLogin){

        String forward = "redirect:/crm_micro_business_card_businessCardManager_card.do";

        try {

            CrmMicroBusinessCardVO crmMicroBusinessCardVO = mpBasInfoService.doLogin(account,password);

            Cookie ckUsername, ckSessionId;

            if(autoLogin==null){

                session.setAttribute("crmMicroBusinessCardVO", crmMicroBusinessCardVO);

                forward = forward+"?id="+crmMicroBusinessCardVO.getId();

            }else if(autoLogin.equals("on")){

                ckUsername = new Cookie("autoLoginUser",account);

                ckUsername.setMaxAge(60*60*24*30);

                response.addCookie(ckUsername);   //保存登錄用戶名到COOKIE

                String sessionId = session.getId();

                ckSessionId = new Cookie("sessionId",sessionId);

                ckSessionId.setMaxAge(60*60*24*30);

                response.addCookie(ckSessionId);  //保存登錄sessionId到COOKIE

                MpAccountSessionId mpAccountSessionId = new MpAccountSessionId();

                mpAccountSessionId.setAccount(account);

                mpAccountSessionId.setSessionId(sessionId);

                mpBasInfoService.saveSessionId(mpAccountSessionId); //保存登錄用戶名和sessionId到數據庫

                session.setAttribute("crmMicroBusinessCardVO", crmMicroBusinessCardVO);

                forward = forward+"?id="+crmMicroBusinessCardVO.getId();

            }

        } catch (BusinessCardException e) {

            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

            modelMap.put("errorMsg",e.getMessage());

            modelMap.put("account",account);

            modelMap.put("password",password);

            forward = "/tools/businessCardLogin";

        }

        return forward;

    }


  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        //To change body of implemented methods use File | Settings | File Templates.

        HttpServletRequest request = (HttpServletRequest) servletRequest;

        HttpSession session = request.getSession(true);

        String account = "";

        String sessionId = "";   // 此sessionid是上次用戶登錄時保存於用戶端的識別碼,用於用戶後續訪問的自動登錄。不是本次訪問的session id。

        Cookie[] cookies;

        CookieManager cm = new CookieManager(); // CookieManager是一個自定義的類,用於從Cookie數組中查找並返回指定名稱的Cookie值。

        boolean isAutoLogin;

        // 如果session中沒有user對象,則創建一個。

        CrmMicroBusinessCardVO crmMicroBusinessCardVO = (CrmMicroBusinessCardVO) session.getAttribute("crmMicroBusinessCardVO");

        // 如果user對象的username爲"",表示用戶未登錄。則執行自動登錄過程。

        // 否則不自動登錄。

        if (crmMicroBusinessCardVO == null) {


            crmMicroBusinessCardVO = new CrmMicroBusinessCardVO();

            // 檢查用戶瀏覽器是否發送了上次登錄的用戶名和sessionid,

            // 如果是,則爲用戶自動登陸。

            cookies = request.getCookies();

            if(cookies!=null&&cookies.length>0){

                account = cm.getCookieValue(cookies, "autoLoginUser");

                sessionId = cm.getCookieValue(cookies, "sessionId");

                account = "".equals(account)?null:account;

                sessionId = "".equals(sessionId)?null:sessionId;

                Map<String,Object> map = new HashMap<String,Object>();

                map.put("account", account);

                map.put("sessionId",sessionId);

                boolean isExist = basDao.isExist(MpAccountSessionId.class,map);

                if (isExist) {

                    MpBasInfo userVO = new MpBasInfo();

                    userVO = basDao.queryOne(MpBasInfo.class,"account",account);

                    if(userVO!=null){

                        CrmMicroBusinessCardVO crmMicroBusinessCardVO1 = new CrmMicroBusinessCardVO();

                        UtilBean.copyBeanAllSimpleProperties(crmMicroBusinessCardVO1,userVO,false);

                        session.setAttribute("crmMicroBusinessCardVO", crmMicroBusinessCardVO1); // 將user bean添加到session中。

                    }

                }

            }

        }

        filterChain.doFilter(servletRequest, servletResponse);

    }


public class CookieManager {

    public static String getCookieValue(Cookie cookies[],String cookieName){

        String cookieValue = "";

        for(int i=0;i<cookies.length;i++){

            Cookie cookie = cookies[i];

            if(cookie.getName().equals(cookieName)){

                cookieValue = cookie.getValue().toString();

                break;

            }

        }

        return  cookieValue;

    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章