必威体育Betway必威体育官网
当前位置:首页 > IT技术

request,response ,cookies的常用几种方法

时间:2019-06-06 17:41:03来源:IT技术作者:seo实验室小编阅读:62次「手机版」
 

response.cookies

String fullcontentType = "APPlication/json;charset=UTF-8";
response.setcontenttype(fullContentType);//告知客户端响应正文类型  
response.setheader("cache-Control", "no-cache");//控制浏览器不要缓存 
//设置允许跨域
response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Credentials","true");
response.setHeader("Access-Control-Allow-headers", "Content-Type,token");
response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8")//设置编码

Cookies

1.String name:该Cookie的名称。Cookie一旦创建,名称便不可更改。 Object value:该Cookie的值。如果值为unicode字符,需要为字符编码。如果值为二进制数据,则需要使用base64编码。 

2.int maxAge:该Cookie失效的时间,单位秒。

如果为正数,则该Cookie在>maxAge秒之后失效。

如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。

如果为0,表示删除该Cookie。默认为–1。

3.boolean secure:该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,

网络>上传输数据之前先将数据加密。默认为false。 

4.String path:该Cookie的使用路径。如果设置为“/sessionWeb/”,则

只有contextpath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”

,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。

5.String domain:可以访问该Cookie的域名。如果设置为“.Google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。 

6.String comment:该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明。 int version:该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范。

/**
 * 得到Cookie的值,
 *
 * @param request 请求
 * @param cookieName cookie的名字
 * @return
*/
public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
    Cookie[] cookieList = request.getCookies();
    if (cookieList == null || cookieName == null) {
        return null;
    }
    String retValue = null;
    try {
        for (int i = 0; i < cookieList.length; i++) {
            if (cookieList[i].getName().equals(cookieName)) {
                if (isDecoder) {
                    retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");
                } else {
                    retValue = cookieList[i].getValue();
                }
                break;
            }
        }
    } catch (UnsupportedEncodingException e) {
        e.printstacktrace();
    }
    return retValue;
}
/**
 * 设置Cookie的值,并使其在指定时间内生效
 *
 * @param cookieMaxage cookie生效的最大秒数
 */
private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
                                      String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
    try {
        if (cookieValue == null) {
            cookieValue = "";
        } else if (isEncode) {
            cookieValue = URLEncoder.encode(cookieValue, "utf-8");
        }
        Cookie cookie = new Cookie(cookieName, cookieValue);
        if (cookieMaxage > 0)
            cookie.setMaxAge(cookieMaxage);
        if (null != request) {// 设置域名的cookie
            String domainName = getDomainName(request);
            System.out.println(domainName);
            if (!"localhost".equals(domainName)) {
                cookie.setDomain(domainName);
            }
        }
        cookie.setPath("/");
        response.addCookie(cookie);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
/**
 * 得到cookie的域名
 */
private static final String getDomainName(HttpServletRequest request) {
    String domainName = null;

    String serverName = request.getRequestURL().toString();
    if (serverName == null || serverName.equals("")) {
        domainName = "";
    } else {
        serverName = serverName.toLowerCase();
        serverName = serverName.substring(7);
        final int end = serverName.indexof("/");
        serverName = serverName.substring(0, end);
        final String[] domains = serverName.split("\\.");
        int len = domains.length;
        if (len > 3) {
            // www.xxx.com.cn
            domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
        } else if (len <= 3 && len > 1) {
            // xxx.com or xxx.cn
            domainName = "." + domains[len - 2] + "." + domains[len - 1];
        } else {
            domainName = serverName;
        }
    }

    if (domainName != null && domainName.indexOf(":") > 0) {
        String[] ary = domainName.split("\\:");
        domainName = ary[0];
    }
    return domainName;
}

Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。注意是0而不是负数。负数代表关闭浏览器,cookies即失效。

注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。

HttpSession 怎么知道是同一个? java都封装好了
 //使用request对象的getSession()获取session,如果session不存在则创建一个
18         HttpSession session = request.getSession();
  //将数据存储到session中
20         session.setattribute("data", "孤傲苍狼");
21         //获取session的Id
22         String sessionId = session.getId();
23         //判断session是不是新创建的
24         if (session.isNew()) {
25             response.getWriter().print("session创建成功,session的id是:"+sessionId);
26         }else {
27             response.getWriter().print("服务器已经存在该session了,session的id是:"+sessionId);
28         }

转自https://www.cnblogs.com/xdp-gacl/p/3855702.html 猜想封装好了的内容

1 //获取session的Id
2 String sessionId = session.getId();
3 //将session的Id存储到名字为JSESSIONID的cookie中
4 Cookie cookie = new Cookie("JSESSIONID", sessionId);
5 //设置cookie的有效路径
6 cookie.setPath(request.getContextPath());
7 response.addCookie(cookie);

 

session对象默认30分钟没有使用,则服务器会自动销毁session,在web.xml文件中可以手工配置session的失效时间

Tomcat中Session的默认超时时间为20分钟。通过setMaxInactiveInterval(int seconds)修改超时时间。可以修改web.xml改变Session的默认超时时间。例如修改为60分钟:

1

2

3

<session-config>

   <session-timeout>60</session-timeout>      <!-- 单位:分钟 -->

</session-config>

注意:参数的单位为分钟,而setMaxInactiveInterval(int s)单位为秒。

在server.xml中定义context时采用如下定义(单位为秒):

1

2

3

<Context path="/livsorder" docBase="/home/httpd/html/livsorder" defaultSessionTimeOut="3600" isWARExpanded="true"

    isWARvalidated="false" isInvokerEnabled="true"

    isWorkDirpersistent="false"/>

相关阅读

@RequestBody,415Unsupported Media Type错误,真正有用

用了一上午查找问题解决方案,网上的试验了一遍都没用,最后终于解决~我的答案在最后 问题:前端传json,后端也返回json,出现格式不匹配报

response.text 与 response.content

在某些情况下来说,response.text 与 response.content 都是来获取response中的数据信息,效果看起来差不多。那么response.text 和 r

response.setcontenttype详解

Response.setContentType(MIME)的作用是时客户端的浏览器区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来

使用requests爬取携程网飞机票价格实例

1.前言 本实例需要用到的python包有requests、PrettyTable(用于打印展示成表格形式) pip install requests pip install pretty

produces在@requestMapping中的使用方式和作用

produces可能不算一个注解,因为什么呢,它是注解@requestMapping注解里面的属性项, 它的作用是指定返回值类型,不但可以设置返回值类型

分享到:

栏目导航

推荐阅读

热门阅读