|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。servlet 用Servlet能够创立协定、平台有关的Web使用程序,Applet运转于扫瞄器的JRE中,而Servlet则运转于Web使用服务器的Servlet容器中,Servlet没有效户图形界面,Servlet和Web使用服务器的Servlet容器交互以吸收哀求前往呼应。哀求开始由Web使用服务器的Servlet容器处置并传给Servlet,Servlet经由过程Web使用服务器前往呼应给客户端。客户端程序可使用任何可向Web使用服务器发送哀求的言语开辟。
Servlet最年夜的上风在于它的高功能,Servlet接纳了和CGI一模一样的运转体例,起首Servlet在第一次初始化古装载并驻留在内存中,今后间接从内存中运转;其次,在默许情形下Servlet以单实例多线程的体例事情,一个新哀求抵达后,Servlet实例开启一个新的线程服务这个哀求。
Servlet布局和线程平安
一切的Servlet都间接或直接地完成javax.servlet.Servlet接口,这些接口划定了Servlet怎样与Servlet容器举行通信的办法,别的还界说了Servlet的性命周期。GenericServlet是和协定有关的通用Servlet,HttpServlet是专门针对HTTP协定开辟的Servlet,Web使用程序的Servlet都间接承继HttpServlet。其类的承继系统以下图所示:
Servlet的类承继系统
javax.servlet.Servlet接口包含了3个把持Servlet性命周期的办法,它们分离是:
・init(ServletConfigconfig)办法
当Servlet初始化时,init()办法被挪用实行初始化Servlet的事情,init()办法只被挪用一次。Servlet初始化后就进进停当态,随时筹办呼应客户真个哀求。
・service(ServletRequestreq,ServletResponseresp)办法
Servlet容器挪用service()办法处置哀求并前往呼应。ServletRequest和ServletResponse作为进参传给service(),ServletRequest封装了哀求的信息而ServletResponse封装了呼应的信息。
・destroy()办法
Servlet容器能够在任什么时候候卸载Servlet,此时destory()被挪用,你能够在这儿开释Servlet所占用的资本。
而javax.servlet.http包中的类用于撑持HTTP协定,创立HTML网页。HTTP协定是基于哀求/呼应事情形式,这些HTTP的哀求体例包含:
GET
POST
PUT
DELETE
HEAD
TRACE
CONNECT
OPTIONS
javax.servlet.http.HttpServlet界说了多个服务HTTP协定的办法,这些办法名为doXxx()的款式定名和HTTP哀求体例名相照应:如HTTPGET哀求体例对应doGet(),而HTTPPOST对应doPost()等。HttpServlet最后以service(HttpServletRequestreq,HttpServletResponseresp)呼应客户端哀求,并根据HTTP的哀求体例挪用响应的doXxx()办法来处置。
一样平常的,你仅必要掩盖doGet()或doPost()办法,假如但愿失掉更多的把持,你也能够掩盖doPut()和doDelete()办法,其他的办法一样平常很少利用。假如你利用JBuilder的Servlet导游,你能够详细指定创立哪些办法。
出格必要指出的是Servlet是以多线程的体例事情的,Servlet能够同时处置多个哀求。作为开辟职员,必要注重Servlet成员变量的线程平安,在doGet()、doPost()中的部分域变量是线程平安的,而Servlet的成员变量则有线程平安的隐患。以是除非你成心必要使用这类特征,在一样平常情形下,不宜将一些可改写的变量界说成Servlet的成员变量,不然必定要接纳线程同步的措施确保线程平安。
Servlet的特征及合用场所
固然Servlet也能够用于天生静态网页,但这个功效已渐渐让位给新锐JSP了,不外Servlet并没有由于山河代有秀士而成为Java汗青博物馆的古玩,它仍然身怀特技笑傲江湖:
・主动启动
一样平常情形下,JSP只要在客户端第一次挪用后,刚刚举行编译并初始化,而Servlet则能够经由过程web.xml的<load-on-startup>设置,使其在Web容器启动时主动初始化。可以使用Servlet这个特征完成Web使用程序的初始化事情:以下载字典表、把持表、初始化设置信息等,启动某个背景历程等。
・路径婚配映照
Servlet能够经由过程web.xml中<servlet-mapping>用通配符设置URI映照,对多个婚配的URI举行呼应,而JSP只能经由过程一个详细的URI挪用。这个特征可使你在哀求进进某个详细的页眼前截获并处置它,很多Web使用框架,如Struts、Spring都使用了Servlet的这个特征,在此基本上创立构架。
・Servlet过滤器
Servlet过滤器承继于javax.servlet.Servlet并完成javax.servlet.Filter的类,在哀求抵达服务程序前和呼应发往客户端行进行加工处置。假如有大批的页面都必要举行不异的处置,则可使用一个Servlet过滤器对此一并处置。如你能够用Servlet过滤器举行编码转换、大概为每一个页面增加一个一致的题目优等。
・Servlet监听器
J2EE界说了多个Web事务监听器接口,Servlet监听器是承继javax.servlet.Servlet并完成这些事务监听接口的类。假如Web使用服务器对某个Web容器的事务感乐趣,就能够机关一个完成该事务监听接口的Servlet,以便在该事务产生时做响应的处置。天真利用Servlet监听器,可使一些本来很难完成的操纵变得轻而易举。
别的,假如一个静态网页的页面展示逻辑少,而营业处置逻辑多,如一个盘算圆周率并前往了局页面的哀求,这时候利用Servlet比JSP更合适。以是必要创立一个静态网页,在究竟利用Servlet仍是JSP的成绩上当机不断时,请这记着上面这句典范的话:Servlet是包括HTML代码的Java程序,而JSP是包括Java代码的HTML网页。
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。 |
|