Tomcat中Session的外观模式 Tomcat中的Session,为什么要用外观StandardSessionFacade包起来再传给Servlet呢?这样是不是更安全,为什么呢?-------------------------------求大神们指导Tomcatsession 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Facade Design简单的说 打个比方main(){method1();method2();}method(){method1();method2();}main(){method();}这样设计肯定是也一定是为了简化servlet的对方法的调用 外观模式我知道是干嘛的,但是结合到Session,具体是什么呢?StandardSessionFacade只是简单的调用Session,这对简化调用没有什么帮助! StandardSessionFacade.java: /** * Construct a new session facade. */ public StandardSessionFacade(StandardSession session) { super(); this.session = (HttpSession) session; } /** * Construct a new session facade. */ public StandardSessionFacade(HttpSession session) { super(); this.session = session; } StandardSession.java: public StandardSession(Manager manager) { super(); this.manager = manager; // Initialize access count if (ACTIVITY_CHECK) { accessCount = new AtomicInteger(); } }这里是对构造方法的包装,用Facade包装了StandardSession,因为StandardSession可以有两种方式构造出来,但Servlet应该是只面向HttpSession接口来编码,如下://两种方式都可以构造出实际调用的session对象,通过Facade的两个构造函数来强制Servlet只能调用HttpSession接口的对象HttpSession session = new StandardSession(new Manager());StandardSession session = new StandardSession(new Manager());//在经过StandardSessionFacade转化之后,都转为HttpSession对象//下面这行是StandardSessionFacade的一行源码 /** * Wrapped session object. */ private HttpSession session = null;调用者是不应该知道有StandardSession的,只需要面向接口即可 你看看StandardSession.getSession(), servlet中就是通过这个方法获取session的。StandardSessionFacade是StandardSession的一个属性,然后StandardSession返回给servlet自己的属性 来访问自己。 这种逻辑,不是有点抽象嘛?而且,StandardSession和StandardSessionFacade都实现了HttpSession接口,就不存在你说的那个情况了! public HttpSession getSession() { if (facade == null) facade = new StandardSessionFacade(this); return (facade); } JSP页面出现一个很奇怪的状况,求高手指点 怎样在servlet里接受jsp里的page “ORA-00955: 名称已由现有对象使用” 这个错误是怎么回事? div ul li 之间的ul倒底起着什么样的作用 为什么useBean不能用呢?? 【菜鸟请教】jsp如何调用到servlet中的函数 如何让浏览器显示我自定义的404错误页面? 总算把CSDN的导航树给剽了 Struts2.3+Spring3.2+hibernate4.2 Could not find action or result 散分!!!各位大虾给点意见!!!!! 中文问题 url传值问题
method1();
method2();
}method(){
method1();
method2();
}
main(){
method();
}
这样设计肯定是也一定是为了简化servlet的对方法的调用
StandardSessionFacade只是简单的调用Session,这对简化调用没有什么帮助!
* Construct a new session facade.
*/
public StandardSessionFacade(StandardSession session) {
super();
this.session = (HttpSession) session;
}
/**
* Construct a new session facade.
*/
public StandardSessionFacade(HttpSession session) {
super();
this.session = session;
} StandardSession.java: public StandardSession(Manager manager) { super();
this.manager = manager; // Initialize access count
if (ACTIVITY_CHECK) {
accessCount = new AtomicInteger();
} }
这里是对构造方法的包装,用Facade包装了StandardSession,因为StandardSession可以有两种方式构造出来,但Servlet应该是只面向HttpSession接口来编码,如下://两种方式都可以构造出实际调用的session对象,通过Facade的两个构造函数来强制Servlet只能调用HttpSession接口的对象
HttpSession session = new StandardSession(new Manager());
StandardSession session = new StandardSession(new Manager());
//在经过StandardSessionFacade转化之后,都转为HttpSession对象
//下面这行是StandardSessionFacade的一行源码
/**
* Wrapped session object.
*/
private HttpSession session = null;
调用者是不应该知道有StandardSession的,只需要面向接口即可
你看看StandardSession.getSession(), servlet中就是通过这个方法获取session的。
StandardSessionFacade是StandardSession的一个属性,然后StandardSession返回给servlet自己的属性 来访问自己。 这种逻辑,不是有点抽象嘛?
而且,StandardSession和StandardSessionFacade都实现了HttpSession接口,就不存在你说的那个情况了! public HttpSession getSession() { if (facade == null)
facade = new StandardSessionFacade(this);
return (facade); }