0
点赞
收藏
分享

微信扫一扫

[Mybatis-plus插件如何根据其他属性值修改数据 /根据其他属性去查询数据]

北溟有渔夫 2023-05-25 阅读 104

文章目录

1. 简介

Java5包括一个抽象类Java.net.CookieHandler,它定义了存储和获取Cookie的一个API,但不包括这个抽象类的实现,所以还有很多工作要做。Java6进一步作了补充,为CookieManager增加了一个可以使用的具体子类java.net.CookieManager。不过默认情况下Cookie并不打开。在Java存储和返回Cookie之前,需要先启动cookie

CookieManager manager=new CookieManager();
CookieManager.setDefault(manager)

用这两行代码安装一个CookieManager之后,对于你用URL类连接的HTTP服务器,Java会存储这些服务器发送的所有Cookie,在后续的请求中向这些服务器发回所存储的cookie,不过,对于接受哪里发送的Cookie,可以通过指定一个CookiePolicy来做到

  • CookiePolicy.ACCEPT_ALL接受所有的cookie
  • CookiePolicy.ACCEPT_NONE不接受任何cookie
  • CookiePolicy.ACCEPT_ORIFINAL_SERVER值接受一方的cookie

下面这段代码只接受一方的cookie,而会阻塞第三方的cookie(即只接受与你对话的服务器发送的cookie,而不接受Internet上其它服务器发送的cookie):

CookieManager manager=new CookieManager();
manager.setCoolkiePolicy(CookiePolicy.AACCEPT_ORIFINAL_SERVER);
CookieHandler.setDefault(manager)

下面这段代码我们自行实现了CookiePolicy接口,并覆盖了shouldAccept()方法:

public class NoGovermentCoolies implements CookiePolicy{
	@Override
	public boolean shouldAccept(URI uri,HttpCookie cookie){
	   if(uri.getAuthority().toLowerCase().endWith(".gov") || cookie.getDomain().toLowerCase().endWith(".gov")){
	    return false;
	   }
	   return true;
	}
}

2. CookieStore

有时有必要在本地存放和获取Cookie。一个应用退出时,可以把cookie库保存在磁盘上,下一次启动时再加载这些cookie。可以用getCookieStore()方法获取这个cookie库,CookieManager就在这里保存它的cookie

CookieStore store=manager.getCookieStore()

CookieStore类允许你增加,删除和列出cookie,使你能控制在正常HTTP请求和响应流之外发送的cookie

public void add(URI uri, HttpCookie cookie)
public List<HttpCookie> get(URI uri)
public List<HttpCookie> getCookies()
public List<URI> getURIs()
public boolean remove(URI uri,HttpCookie cookie)
public boolean removeAll()
  • public void add(URI uri, HttpCookie cookie)
public class QuizCardBuilder {
    public static void main(String[] args) {
        try {
            URL u=new URL("http://www.baidu.com");
            //创建socket连接指定的网站
            URLConnection uc=u.openConnection();
            //创建一个CookieManager对象
            CookieManager cookieManager=new CookieManager();
            //设置接受cookie的范围(只接受百度服务器发送过来的)
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
            CookieHandler.setDefault(cookieManager);
            CookieStore store=cookieManager.getCookieStore();
            URI uri=u.toURI();
            //新建一个cookie
            HttpCookie cookie=new HttpCookie("skin","noskin");
            store.add(uri,cookie);
            System.out.println(store.get(uri));
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
}

在这里插入图片描述

  • public List<HttpCookie> get(URI uri)
public class QuizCardBuilder {
    public static void main(String[] args) {
        try {
            URL u=new URL("http://www.baidu.com");
            //创建socket连接指定的网站
            URLConnection uc=u.openConnection();
            //创建一个CookieManager对象
            CookieManager cookieManager=new CookieManager();
            //设置接受cookie的范围(只接受百度服务器发送过来的)
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
            CookieHandler.setDefault(cookieManager);
            CookieStore store=cookieManager.getCookieStore();
            URI uri=u.toURI();
            //新建一个cookie
            HttpCookie cookie=new HttpCookie("skin","noskin");
            store.add(uri,cookie);
            System.out.println(store.get(uri).toString());
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
}
  • public boolean remove(URI uri,HttpCookie cookie)
public class QuizCardBuilder {
    public static void main(String[] args) {
        try {
            URL u=new URL("http://www.baidu.com");
            //创建socket连接指定的网站
            URLConnection uc=u.openConnection();
            //创建一个CookieManager对象
            CookieManager cookieManager=new CookieManager();
            //设置接受cookie的范围(只接受百度服务器发送过来的)
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
            CookieHandler.setDefault(cookieManager);
            CookieStore store=cookieManager.getCookieStore();
            URI uri=u.toURI();
            //新建一个cookie
            HttpCookie cookie=new HttpCookie("skin","noskin");
            store.add(uri,cookie);
            System.out.println(store.get(uri).toString());
            System.out.println(store.remove(uri,cookie));
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
}
举报

相关推荐

0 条评论