|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。servlet|条记
servlet的性命周期通常是:
1.创建初始化servlet
2.处置从客户真个零个或多个哀求
3.烧毁servlet,gc接纳占用内存
每一个server大概在怎样撑持servlet上有分歧的办法,可是上述servlet性命周期倒是每一个servlet引擎必需恪守的划定规矩。
实例耐久化InstancePersistence:
一个servlet实例一旦加载,就入手下手处置对这个servlet的一切哀求,换句话说就是一个servlet只天生一个实例。如许的做法关于功能的进步很有优点,可以无效地下降体系开支,并且也能无效完成耐久化(比方数据库毗连,cache数据)
importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassSimpleCounterextendsHttpServlet{intcount=0;publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{res.setContentType("text/plain");PrintWriterout=res.getWriter();count++;out.println("Sinceloading,thisservlethasbeenaccessed"+count+"times.");}}上例是一个复杂的反应servlet耐久化的例子,每一个哀求均增添当地变量count,然后打印显现。可是上例存在多线程风险,关于会见servlet的每一个哀求都能够看做是一个线程对象,他们均会见统一个servlet实例,以是会呈现并提问题。出格是存在对共享变量的读写操纵时(比方上例的当地变量count),这类伤害性更年夜。
办理的举措是增添synchronized块。
PrintWriterout=res.getWriter();synchronized(this){count++;out.println("Sinceloading,thisservlethasbeenaccessed"+count+"times.");}
现实上,server上对每个servlet的注册称号都对应servlet的一个实例,用来会见servlet的哀求称号决意哪一个实例来处置哀求,
servletreloading
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试) |
|