Java 里面给 Cookie 加 HTTPONLY

使用 Tomcat 服务器,在conf/context.xml里面加上useHttpOnly后,也只能能给 JSESSIONID 加入 httpOnly 属性,并不能给应用程序里面的Cookie加上。

如在context.xml上加

1
<Context useHttpOnly="true">

而javax.servlet.http.Cookie本身也没有HTTPONLY属性。所以加的时候也不会有什么Cookie.setHttpOnly之类的方法。其它可以通过设置响应头实现。

比如之前若是写了一个addCookie方法如下

1
2
3
4
5
6
7
8
9
10
11
12
public static void addCookie(HttpServletResponse res, String cookieName,
String cookieValue) {
String v = "";
try {
v = URLEncoder.encode(cookieValue, "UTF-8");
}
catch (Exception e) {
}
Cookie c = new Cookie(cookieName, v);
c.setPath("/");
res.addCookie(c);
}

其实Cookie也只是服务器给浏览器设置了一个set-Cookie响应头,我们可以利用response.setHeader来自己拼这个头开实现带httpOnly属性的的响应头。

阅读更多

Java 异常处理。

小小说下Java里面的异常处理,貌似国内的程序员都很牛逼啊,个人参与的好多项目,根本没有异常处理,程序牛B到不会出异常还确实不异,当然我比不上他们,我的程序还是很可能有异常的,所以这里谈下我的处理方式。

Java里面的异常处理有两种,捕获(try cacth)与抛出(throw),之所以看到没有异常处理不是没有在代码里没有看到这些关键字,而是只要是try cacth 就是清一色的那么一行 e.printStackTrace();要么就一个try cacth都看不到,不管到哪都是throws Exception,反正老子的程序不会有异常,这个代码多简洁省事啊~。

根据个人的总结,最好将就以下几点:

  1. 如果是业务逻辑层面,比如用户操作的顶层,直接操作包装好的数据的时候,必须用try cacth,因为你throws也没有地处理了,当然,你有神一般的底层的话,你会发现 “你的程序根本不会出错,至少eclipse上都没红点,cacth个毛啊”

  2. 如果是写的一些底层(并不说很牛的东西,就是很多地方都可能用到的,比如Util什么的),必须用throws,如果你用try cacth了,就会发现上面说的“程序不可能出错的情况”

  3. 如果是写的一些底层,且有流等类型的不稳定元素需要代码执行完后关,理所应该用 try+cacth+finally的组合了,怎么throws呢,很少在程序里见到的throw关键字就起作用了,先在cacth里面加入throw,再在方法上加上throws

阅读更多