Chen Jian

Tomcat/Jboss 中自定义 SESSION_COOKIE_NAME

即把session id的cookie名从默认的JSESSIONID改成其它的什么名字。解决办法是把这些名字以system property方式注入: Tomcat http://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html#Sessions org.apache.catalina.SESSION_COOKIE_NAME An alternative name for the session cookie. Defaults to JSESSIONID. Note that the Servlet specification requires this to be JSESSIONID. You should not rely on being able to change this. org.apache.catalina.SESSION_PARAMETER_NAME An alternative name for the session path parameter. Defaults to jsessionid. Note that the Servlet specification requires this …

Tomcat/Jboss 中自定义 SESSION_COOKIE_NAME Read More »

Cookie的默认path

服务端把cookie发给浏览器时,如果没有指定path,则path等于当前Request的URL的上一级路径 浏览器发出一个请求时,会把本地所有path处于“当前Request的URL的上一级路径”之上的cookie都发给服务器。 比如浏览器现有三个cookie, path分别为 "/", "/abc", "/abc/def" 则请求 "/abc/ghi/hi.do"时,第1个cookie和第2个cookie会被发给服务端,第三个不会

Tomat如何实现session

Servet Spec 规定了三种session tracking机制:   1.cookie (cookie name 必须是JSESSIONID)   2.url rewrite (即给URL加上,";jessionid=EDFGHGFRTYTYUI56789", e.g.)   3.如果当前处于SSL中,则servlet容器可以直接利用SSL中内置的会话跟踪机制实现自己的session 据不完全代码跟读,tomcat5.5并没有采用第3种方案(我也无法确证),所以这里只讨论前两种: 机制1: cookie a. 创建session时 => 服务端创建cookie,并通过http-response发到客户端 //org.apache.catalina.connector.Request. doGetSession() … //先创建session对象 // Creating a new session cookie based on that session if ((session != null) && (getContext() != null) && getContext().getCookies()) { Cookie cookie = new Cookie(Globals.SESSION_COOKIE_NAME, session.getIdInternal()); //注意:cookie的domain未设置 …

Tomat如何实现session Read More »

记住这个术语:Synchronizer Token

Synchronizer Token 就是用于防止表单重复提交的那种token Core J2EE Patterns里有描述: Synchronizer (or Déjà vu) Token This strategy addresses the problem of duplicate form submissions. A synchronizer token is set in a user’s session and included with each form returned to the client. When that form is submitted, the synchronizer token in the form is compared to the synchronizer token …

记住这个术语:Synchronizer Token Read More »

如果一个Use Case中既有读操作,又有写操作

如果一个Use Case中既有读操作,又有写操作,则试试能否把读操作全部做完,再进行写操作。不要混起来做。 好处就是:读操作放一起,就有希望把它们抽出来作为一个方法,以后别的类可以重用它。

你应在哪些场景下废止当前的session?

废止当前的session,一是为了让用户无权再进行任何需授权的操作,比如   1. sign out 废止session的另一个目的是:若某个操作暗示“用户尚未登入”作为前提,则在这个操作进行前就应该废止session,确保用户进入“未登入”状态; 否则,若用户还处于登入状态时却仍然去做这些操作,就可能会出问题,比如   2. login  — 若用户A仍存于session中,这时在同一个浏览器中以B身份登录,则登录后,A残留在session的数据可能就会被送给B。类似的情形有:   3. 注册   4. 忘记密码,欲重置

串匹配:找到子串的前缀和后缀

偶惊奇地发现,我不用作任何"+1", "-1"之类的操作 String str = "prefixKeywordPostfix"; String KEYWORD = "Keyword"; String prefix = str.substring(0, str.indexOf(KEYWORD)); //"prefix" String keyword = str.substring(str.indexOf(KEYWORD), str.indexOf(KEYWORD) + KEYWORD.length()); //"Keyword" String postfix = str.substring(str.indexOf(KEYWORD)+ KEYWORD.length()); //"Postfix"