连击 天
fork: star:
好吧,今天也是搜了很多关于tomcat禁用session的问题,jsp加<@page session="false"/>可以让jsp不创建session,然后看楼上有什么重写sessionManager和session的没有具体代码也没有看,自己就看了下servlet如何获取session的源码 然后想到的一种方法就是让整个tomcat始终就只有一个session,查看tomcat下编译后的jsp源码可以发现默认调用了httpservletrequest的getSession(boolean create)方法,参数为true就是没有session则自动生成新session(就是上面说的那个标签启的作用)。所以个人就想到继承 HttpServletRequestWrapper 然后重写里面获取session的方法 代码如下很简单
@Override
public HttpSession getSession(boolean create) {
if(httpSession==null){
httpSession=super.getSession(true);
}
return httpSession;
}
@Override
public HttpSession getSession() {
if(httpSession==null){
httpSession=super.getSession(true);
}
return httpSession;
}
其中httpsession为全局静态变量。然后将重写的类放到filter里向下传递即可。
自己测试了一下除了第一次访问会有个jsessionid 然后将cookie删除再访问就不会有了jsessionid生成了 换其它浏览器直接就没有jsessionid。
这只是个人的一点想法和解决方法如果有哪里不对希望指出了,共同学习。
我觉得你这出错在对java引用理解的错误
StringBuffer buffer1 = new StringBuffer();
StringBuffer buffer2 = new StringBuffer();System.out.println(buffer2.equals(buffer1));
你运行一下这段代码返回的是false,同理你上面也是这么比较这两个对象的,arr1.indexOf(sname); 你查看一下jdk源码 list的indexof用的是equals 方法所以是不相等的两个对象,返回的一直是-1。要是你要的结果想一样可以加上 toString方法将所有StringBuffer 转化为字符串 或者你也可以重写 StringBuffer 的 equals 方法和hashcode方法。
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定删除此文章吗?
动弹删除后,数据将无法恢复
评论删除后,数据将无法恢复