【liferay】6、可配置式cookie

问题提出

 项目运行中,cookie的作用一般是起着一个不可或缺的权限控制或者认证的作用,但是如果是多系统交互,cookie是由别的系统生成,本系统对接的话,那么这个cookie就会

成为项目测试的一个麻烦

那么我们可以基于这个,开发一个cookie的配置页面

1、展示目前所有的cookie

2、对已有的cookie进行操作

3、可以新增对应的cookie

配置文件修改

首先在liferay-portlet.xml中添加一个

<requires-namespaced-parameters>false</requires-namespaced-parameters>

可以避免在页面传参的时候,要加namespace的尴尬

其余的配置文件,按照eclipse自带的生成方式生成就可以了

定义页面

定义init页面

init.jsp

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<portlet:defineObjects />

view.jsp

<%@ include file="/html/common/init.jsp" %>
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" deferredSyntaxAllowedAsLiteral="true"%>

<!-- 一般不跳转到其他页面的时候,doview 等 我们使用renderRequest渲染页面 -->
<portlet:renderURL var="cookieform"></portlet:renderURL>
<!-- 查询,修改,新增,删除 -->
<portlet:resourceURL id="cookieAjax" var="oper"></portlet:resourceURL>
<portlet:actionURL var="modCookie" name="modCookie">
    <portlet:param name="jspPage" value="/html/cookieoperator/view.jsp"/>
</portlet:actionURL>

<!-- 获取根目录 -->
<%
    String rootPath = renderRequest.getContextPath();
    String title = "配置cookie";
    
%>

<script type="text/javascript" src="<%=rootPath%>/js/jQuery/jquery-3.1.1.js"></script>
<link rel="stylesheet" type="text/css" href="<%=rootPath%>/css/cookieoperator/main.css" />

<!-- 展示所有的cookie -->
<h1>Cookie的展示</h1>
<div id="win1">
    <!-- 工具栏,查询,新增,修改,删除 -->
    <div id="toolbar">
        <input id="select" value="查询" type="button" />
        <input id="add" value="新增" type="button" />
        <input id="mod" value="修改" type="button" />
        <input id="del" value="删除" type="button" />
    </div>
    <!-- 数据展示cookie -->
    <div id="data">
        <table id="cookieTable" border="1">
            <tr>
                <td>name</td>
                <td>value</td>
                <!-- <td>path</td> -->
                <td>domain</td>
                <td>version</td>
                <td>comment</td>
            </tr>
            <c:forEach items="${cookies1 }" var="cookie1">
                <tr>
                    <td>${cookie1.name }</td>
                    <td>${cookie1.value }</td>
                    <%-- <td>${cookie1.path }</td> --%>
                    <td>${cookie1.domain }</td>
                    <td>${cookie1.version }</td>
                    <td>${cookie1.comment }</td>
                </tr>
            </c:forEach>
        </table>
    </div>

</div>

<div id="win2" class="dialog">
    <div id="movePart">
         标题进行拖拽
        <input id="back2" value="返回2" type="button" />
    </div>
    <div id="content">
        <table id="cookieTable">
            <tr>
                <div>
                    <td>
                        <label for="name">cookie名称:</label>
                        <input type="text" name="name" id="name" class="required"/>
                    </td>
                    <td>
                        <label for="path" style="display:none">cookie路径:</label>
                        <input type="hidden" name="path" id="path"/>
                    </td>
                </div>
            </tr>
            <tr>
                <div>
                    <td>
                        <label for="value">cookie值:</label>
                    </td>
                    <td>
                        <input type="text" name="value" id="value" size="100"/>
                    </td>
    
                </div>
            </tr>
            <tr>
                <div>
                    <td>
                        <label for="domain">cookie域名:</label>
                        <input type="text" name="domain" id="domain"/>
                    </td>
                    <td>
                        <label for="version">cookie版本:</label>
                        <input type="text" name="version" id="version"/>
                    </td>
                </div>
            </tr>
            <tr>
                <div>
                    <td>
                        <label for="comment">cookiecomment:</label>
                        <input type="text" name="comment" id="comment"/>
                    </td>
                </div>
            </tr>
            <tr>
                <td>
                    <input type="button" value="提交" id="send"/>
                </td>
                <td>
                    <input type="reset" id="res" value="清空"/>
                </td>
            </tr>
        </table>
    </div>
</div>

<div id="mask" class="mask"></div>
<script type="text/javascript">
<!--
    function tableTrClick() {
        //选中所有tr,绑定事件
        $('#cookieTable tr').on('click', function(){
            //选中之后改变当前元素的class,清除其他元素的颜色
            $('#cookieTable tr').removeClass("selected1");
            $(this).addClass("selected1");
        });
    }
    
    /**
     * js弹出窗口层 start
     */
       //获取对应标签函数
     function g(id) {
         return document.getElementById(id);
     }

     function autoCenter(el) {
         //获取可见窗口大小
         var bodyW = document.documentElement.clientWidth;
         var bodyH = document.documentElement.clientHeight;
         //获取对话框宽、高
         var elW = el.offsetWidth;
         var elH = el.offsetHeight;

         el.style.left = (bodyW - elW)/2 + 'px';
         el.style.top = (bodyH - elH)/2 + 'px';

     }
     
     function clearForm() {
         $("#name").val("");$("#value").val("");$("#path").val("");
         $("#domain").val("");$("#version").val("");$("#comment").val("");
     }

     //点击之后弹出对话框,遮罩设置
     g("add").onclick = function(){
         g("win2").style.display = 'block';
         g("mask").style.display = 'block';
           //先重置表单 cookieTable
         clearForm();
         autoCenter(g("win2"));
     }
     
     //修改
     g("mod").onclick = function(){
         g("win2").style.display = 'block';
         g("mask").style.display = 'block';
         //填充对应的值
         //name, value,path,domain,version,comment
         //先重置表单 cookieTable
         clearForm();
         var name = $('#cookieTable  tr.selected1  td:eq(0)').text();
         var value = $('#cookieTable  tr.selected1  td:eq(1)').text();
         var path = $('#cookieTable  tr.selected1  td:eq(2)').text();
         var domain = $('#cookieTable  tr.selected1  td:eq(3)').text();
         var version = $('#cookieTable  tr.selected1  td:eq(4)').text();
         var comment = $('#cookieTable  tr.selected1  td:eq(5)').text();
         //填充对应的值
         $("#name").val(name);$("#value").val(value);$("#path").val(path);
         $("#domain").val(domain);$("#version").val(version);$("#comment").val(comment);
         
         autoCenter(g("win2"));
     }

     //关闭弹出框
     g("back2").onclick = function() {
         g("win2").style.display = 'none';
         g("mask").style.display = 'none';
     }

     //窗口大小改变时,对话框始终居中
     window.onresize = function(){
         autoCenter(g('win2'));
     };

     //鼠标坐标
     var mx = 0, my = 0;
     var dx = 0, dy = 0;
     var isDraging = false; //是否可以拖拽
     //鼠标按下
     g('movePart').addEventListener('mousedown', function(e) {
         var e = e || window.event;
         //获取点击的鼠标位置
         mx = e.pageX;
         my = e.pageY;

         dx = g('win2').offsetLeft;
         dy = g('win2').offsetTop;
         isDraging = true;
     });
     //鼠标移动
     document.onmousemove = function(e){
         var e = e || window.event;
         var x = e.pageX;      //移动时鼠标X坐标
         var y = e.pageY;      //移动时鼠标Y坐标
         if(isDraging){        //判断对话框能否拖动
             var moveX = dx + x - mx;      //移动后对话框新的left值
             var moveY = dy + y - my;      //移动后对话框新的top值
             g('win2').style.left = moveX +'px';       //重新设置对话框的left
             g('win2').style.top =  moveY +'px';     //重新设置对话框的top
         };
     };
     //鼠标松开
     g('movePart').addEventListener('mouseup',function(){
         isDraging = false;
     });
     //-------------------------------------------js弹出窗口层 end
    
     //--------------------------删除cookie  start
     
    function getCookieval_r(offset) {
        //上offset的位置开始查找的,直到";"的位置。
        var endstr = document.cookie.indexOf(";", offset);
        if(endstr == -1) {
            //如果是末尾
            endstr = document.cookie.length;
        }
        
        return document.cookie.substring(offset, endstr);
    }     
     
    function getCookie(name) {
        var arg = name + "=";
        var alen = arg.length;
        //获取cookie串的长度
        var clen = document.cookie.length;
        var i = 0;
        var j = 0;
        //遍历
        while(i < clen) {
            //当前cookie名字=长度
            j = i + alen;
            //判断是否是要遍历的cookie
            if(document.cookie.substring(i, j) == arg) {
                //获取cookie值,j为名字=结尾的地方
                return getCookieval_r(j);
            }
            i = document.cookie.indexOf(" ", i) + 1;
            if(i == 0) {
                break;
            }
        }
        return '';
    }
     
    function delCookie(name) {
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = getCookie(name);
        if(cval != null) {
            document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + "; path=/";
        }
    }

     //--------------------------删除cookie  end
    
    
    function operCookies() {
        
        //点击的时候,发起请求
        $('#select').on('click', function(){
            //获取选中数据
            var selectCookieName = $('#cookieTable  tr.selected1  td:eq(0)').text();
            
            //发起请求
            $.ajax({
                type:"POST",
                url:"<%=oper%>",
                dataType:"json",
                data:{"operKey":"select"},
                success:function(msg){
                    //更新页面
                    //1、获取这个table
                    //2、清除标题以下的数据
                    $('#cookieTable tr:gt(0)').empty();
                    //3、解析json,组装数组tr
                    //var jsonArr = eval("(" + msg + ")");
                    //4、添加到table中
                    //从新获取table
                    var $table = $('#cookieTable');
                    //遍历json
                    $.each(msg, function(i, item) {
                        var oneRow = "<tr>";
                        oneRow += "<td>" + item.name + "</td>";
                        oneRow += "<td>" + item.value + "</td>";
                        //oneRow += "<td>" + item.path + "</td>";
                        oneRow += "<td>" + item.domain + "</td>";
                        oneRow += "<td>" + item.version + "</td>";
                        oneRow += "<td>" + item.comment + "</td>";
                        oneRow += "</tr>";
                        
                        $table.append(oneRow);
                    });
                    //从新渲染
                    tableTrClick();
                }
            });
        });
        
        $('#del').on('click', function(){
            //获取选中数据
            var selectCookieName = $('#cookieTable  tr.selected1  td:eq(0)').text();
            var path = $('#cookieTable  tr.selected1  td:eq(2)').text();
            delCookie(selectCookieName);
            //发起请求
            $.ajax({
                type:"POST",
                url:"<%=oper%>",
                dataType:"json",
                data:{"operKey":"del","selectCookieName":selectCookieName,"path":path},
                success:function(msg){
                    //更新页面
                    //1、获取这个table
                    //2、清除标题以下的数据
                    $('#cookieTable tr:gt(0)').empty();
                    //3、解析json,组装数组tr
                    //var jsonArr = eval("(" + msg + ")");
                    //4、添加到table中
                    //从新获取table
                    var $table = $('#cookieTable');
                    //遍历json
                    $.each(msg, function(i, item) {
                        var oneRow = "<tr>";
                        oneRow += "<td>" + item.name + "</td>";
                        oneRow += "<td>" + item.value + "</td>";
                        //oneRow += "<td>" + item.path + "</td>";
                        oneRow += "<td>" + item.domain + "</td>";
                        oneRow += "<td>" + item.version + "</td>";
                        oneRow += "<td>" + item.comment + "</td>";
                        oneRow += "</tr>";
                        
                        $table.append(oneRow);
                    });
                    //从新渲染
                    tableTrClick();
                }
            });
        });
        
        $('#send').on('click', function(){
            //获取选中数据
            //发起请求
            $.ajax({
                type:"POST",
                url:"<%=oper%>",
                dataType:"json",
                data:{"operKey":"mod","name":$("#name").val(),"value":$("#value").val(),
                    "path":$("#path").val(),"domain":$("#domain").val(),"version":$("#version").val(),
                    "comment":$("#comment").val()},
                success:function(msg){
                    //更新页面
                    //1、关闭弹出层
                    g("win2").style.display = 'none';
                     g("mask").style.display = 'none';
                    //2、清除标题以下的数据
                    $('#cookieTable tr:gt(0)').empty();
                    //3、解析json,组装数组tr
                    //var jsonArr = eval("(" + msg + ")");
                    //4、添加到table中
                    //从新获取table
                    var $table = $('#cookieTable');
                    //遍历json
                    $.each(msg, function(i, item) {
                        var oneRow = "<tr>";
                        oneRow += "<td>" + item.name + "</td>";
                        oneRow += "<td>" + item.value + "</td>";
                        //oneRow += "<td>" + item.path + "</td>";
                        oneRow += "<td>" + item.domain + "</td>";
                        oneRow += "<td>" + item.version + "</td>";
                        oneRow += "<td>" + item.comment + "</td>";
                        oneRow += "</tr>";
                        
                        $table.append(oneRow);
                    });
                    //从新渲染
                    tableTrClick();
                }
            });
        });
        
    }
    
    
    
    $(document).ready(function(){
        
        operCookies();
        tableTrClick();
    });

//-->
</script>

代码逻辑实现

 建立vo对象

package com.xiaof.cookie.vo;

public class CookieVo {
    private String name;
    private String value;
    private String path;
    private String domain;
    private int version;
    private String comment;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public String getDomain() {
        return domain;
    }
    public void setDomain(String domain) {
        this.domain = domain;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public int getVersion() {
        return version;
    }
    public void setVersion(int version) {
        this.version = version;
    }
    
    @Override
    public boolean equals(Object obj) {
        if(obj == this)
            return true;
        
        //根据name判断是否存在
        if(obj instanceof CookieVo) {
            CookieVo temp = (CookieVo) obj;
            
            if(temp.name.equals(name)) {
                return true;
            } else {
                return false;
            }
            
        } else {
            return false;
        }
        
    }
    
    @Override
    public int hashCode() {
        //hashcode的获取方式,主要用来在对应不同的容器中,根据hashcode来散列的对象的存放,特定容器可能影响效率
        //并且在比对数据的时候,java是通过hashcode的散列码进行匹配的,故和equals一起重载
        int result = 11;
        result = result * 17 + (name == null ? 0 : name.hashCode());
        result = result * 17 + (value == null ? 0 : value.hashCode());
    
        return result;
    }
    
}


控制层代码逻辑

package com.xiaof.cookie;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.junit.experimental.theories.PotentialAssignment;
import org.springframework.http.HttpRequest;

import com.liferay.portal.kernel.json.JSONArray;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.xiaof.cookie.vo.CookieVo;

/**
 * Portlet implementation class CookieOperator
 */
public class CookieOperator extends MVCPortlet {
 

    @Override
    public void doView(RenderRequest renderRequest,
            RenderResponse renderResponse) throws IOException, PortletException {

        //页面初始化的时候,获取所有的cookie
        Cookie cookies[] = renderRequest.getCookies();
        //传递cookies进入前台
//        List<CookieVo> cookies1 = new ArrayList<CookieVo>();
//        for(int i = 0; i < cookies.length; ++i) {
//            CookieVo vo = new CookieVo();
//            vo.setName(cookies[i].getName());
//            vo.setValue(cookies[i].getValue());
//            vo.setPath(cookies[i].getPath());
//            vo.setDomain(cookies[i].getDomain());
//            vo.setVersion(cookies[i].getVersion());
//            vo.setComment(cookies[i].getComment());
//            cookies1.add(vo);
//            System.out.println("name=" + cookies[i].getName());
//            System.out.println("value=" + cookies[i].getValue());
//            System.out.println("path=" + cookies[i].getPath());
//            System.out.println("version=" + cookies[i].getVersion());
//            System.out.println("comment=" + cookies[i].getComment());
//            System.out.println("domain=" + cookies[i].getDomain());
//        }
        
        renderRequest.setAttribute("cookies1", cookies);
        
        super.doView(renderRequest, renderResponse);
    }
    
    @Override
    public void serveResource(ResourceRequest resourceRequest,
            ResourceResponse resourceResponse) throws IOException,
            PortletException {
        //获取resourcid
        
        String resourceId = resourceRequest.getResourceID();
        //获取原生httprequest
        HttpServletRequest request = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(resourceRequest));
        HttpServletResponse response = PortalUtil.getHttpServletResponse(resourceResponse);
        
        //获取参数
        if(resourceId.equals("cookieAjax")) {
            //获取参数
            String operKey = ParamUtil.get(resourceRequest, "operKey", "select");
            //获取cookie的name
            String cookieName = ParamUtil.get(resourceRequest, "selectCookieName", "");
            
            if(operKey.equals("select")) {
                //这个是查询所有的cookie
                List<CookieVo> cookies1 = readCookies(request);
                //返回json数据
                JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
                //遍历组装
                for(int i = 0; i < cookies1.size(); ++i) {
                    CookieVo cookieVo = cookies1.get(i);
                    JSONObject obj = JSONFactoryUtil.createJSONObject();
                    obj.put("name", cookieVo.getName());
                    obj.put("value", cookieVo.getValue());
                    obj.put("path", cookieVo.getPath());
                    obj.put("version", cookieVo.getVersion());
                    obj.put("comment", cookieVo.getComment());
                    obj.put("domain", cookieVo.getDomain());
                    jsonArray.put(obj);
                }
                
                //最后返回
                PrintWriter pw = response.getWriter();
                pw.write(jsonArray.toString());
            } else if(operKey.equals("mod")) {
                String name = ParamUtil.get(request, "name", "");
                String value = ParamUtil.get(request, "value", "");
                String path = ParamUtil.get(request, "path", "");
                String domain = ParamUtil.get(request, "domain", "");
                int version = Integer.valueOf(ParamUtil.get(request, "version", "0") == ""?"0":"0");
                String comment = ParamUtil.get(request, "comment", "");
                
                //设置到对应的cookie
                if(Validator.isNotNull(name) && Validator.isNotNull(value)) {
                    Cookie cookie = new Cookie(name, value);
                    if(Validator.isNotNull(path))
                        cookie.setPath(path);
                    if(Validator.isNotNull(domain))
                        cookie.setDomain(domain);
                    if(Validator.isNotNull(version))
                        cookie.setVersion(version);
                    if(Validator.isNotNull(comment))
                        cookie.setComment(comment);
                    
                    response.addCookie(cookie);
                }
                
                //这个是查询所有的cookie
                CookieVo newTemp = new CookieVo();
                newTemp.setName(name); newTemp.setValue(value);newTemp.setComment(comment);
                newTemp.setDomain(domain);newTemp.setPath(path);newTemp.setVersion(version);
                List<CookieVo> cookies1 = readCookies(request);
                
                if(cookies1.contains(newTemp)) {
                    //如果包含更新值,注意是深拷贝
                    newTemp = cookies1.get(cookies1.indexOf(newTemp));
                    newTemp.setValue(value);newTemp.setComment(comment);
                    newTemp.setDomain(domain);newTemp.setPath(path);
                    newTemp.setVersion(version);
                } else {
                    //不包含新增
                    cookies1.add(newTemp);
                }
                
                //返回json数据
                JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
                //遍历组装
                for(int i = 0; i < cookies1.size(); ++i) {
                    CookieVo cookieVo = cookies1.get(i);
                    JSONObject obj = JSONFactoryUtil.createJSONObject();
                    
                    obj.put("name", cookieVo.getName());
                    obj.put("value", cookieVo.getValue());
                    obj.put("path", cookieVo.getPath());
                    obj.put("version", cookieVo.getVersion());
                    obj.put("comment", cookieVo.getComment());
                    obj.put("domain", cookieVo.getDomain());
                    
                    jsonArray.put(obj);
                }
                
                //最后返回
                PrintWriter pw = response.getWriter();
                pw.write(jsonArray.toString());
                
            } else if(operKey.equals("del")) {
                //删除cookie
                String name = ParamUtil.get(request, "selectCookieName", "");
//                String path = ParamUtil.get(request, "path", "");
                List<CookieVo> cookies1 = readCookies(request);
                CookieVo newTemp = new CookieVo();
                newTemp.setName(name);
                cookies1.remove(newTemp);
                Cookie cookies[] = request.getCookies();
                
                for(Cookie cookie : cookies){  
                    if(cookie.getName().equals(name)){ 
                        Cookie cookie1 = new Cookie(name, null);
                        cookie1.setMaxAge(0);// 立即销毁cookie  
//                        if(Validator.isNotNull(path)) {
//                            cookie1.setPath(path);  
//                        }
                        response.addCookie(cookie1);  
                        break;
                    }  
                }  
                
                //返回json数据
                JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
                //遍历组装
                for(int i = 0; i < cookies1.size(); ++i) {
                    CookieVo cookieVo = cookies1.get(i);
                    JSONObject obj = JSONFactoryUtil.createJSONObject();
                    
                    obj.put("name", cookieVo.getName());
                    obj.put("value", cookieVo.getValue());
                    obj.put("path", cookieVo.getPath());
                    obj.put("version", cookieVo.getVersion());
                    obj.put("comment", cookieVo.getComment());
                    obj.put("domain", cookieVo.getDomain());
                    
                    jsonArray.put(obj);
                }
                
                //最后返回
                PrintWriter pw = response.getWriter();
                pw.write(jsonArray.toString());
            }
        }
        
        super.serveResource(resourceRequest, resourceResponse);
    }
    
    private List<CookieVo> readCookies(HttpServletRequest request) {
        List<CookieVo> cookies1 = new ArrayList<CookieVo>();
        Cookie cookies[] = request.getCookies();
        for(int i = 0; i < cookies.length; ++i) {
            CookieVo vo = new CookieVo();
            vo.setName(cookies[i].getName());
            vo.setValue(cookies[i].getValue());
            vo.setPath(cookies[i].getPath());
            vo.setDomain(cookies[i].getDomain());
            vo.setVersion(cookies[i].getVersion());
            vo.setComment(cookies[i].getComment());
            cookies1.add(vo);
        }
        
        return cookies1;
    }
    
    public void modCookie(ActionRequest request,ActionResponse response) throws IOException {
        //获取表单参数,设置到cookie中
        //name, value,path,domain,version,comment
        HttpServletResponse httpServletResponse = PortalUtil.getHttpServletResponse(response);
        
        String jspPage = ParamUtil.getString(request, "jspPage");
        
        String name = ParamUtil.get(request, "name", "");
        String value = ParamUtil.get(request, "value", "");
        String path = ParamUtil.get(request, "path", "");
        String domain = ParamUtil.get(request, "domain", "");
        int version = Integer.valueOf(ParamUtil.get(request, "version", "0") == ""?"0":"0");
        String comment = ParamUtil.get(request, "comment", "");
        
        //设置到对应的cookie
        if(Validator.isNotNull(name) && Validator.isNotNull(value)) {
            Cookie cookie = new Cookie(name, value);
            if(Validator.isNotNull(path))
                cookie.setPath(path);
            if(Validator.isNotNull(domain))
                cookie.setDomain(domain);
            if(Validator.isNotNull(version))
                cookie.setVersion(version);
            if(Validator.isNotNull(comment))
                cookie.setComment(comment);
            
            httpServletResponse.addCookie(cookie);
        }
        
        response.sendRedirect("jspPage", jspPage);
    }
    
}


效果展示

 

原文地址:https://www.cnblogs.com/cutter-point/p/8477479.html