仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 474|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页编程之关于Java Servlet编程使用基本剖析

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。servlet|编程  1、概述

Servlet是一种自力于平台和协定的服务器真个Java使用程序,能够天生静态的Web页面。

Servlet是位于Web服务器外部的服务器真个Java使用程序,与传统的从命令行启动的Java使用程序分歧,Servlet由Web服务器举行加载,该Web服务器必需包括撑持Servlet的Java假造机。

JavaServlet与Applet的对照:

类似的地方:

*它们不是自力的使用程序,没有main()办法。

*它们不是由用户或程序员挪用,而是由别的一个使用程序(容器)挪用。

*它们都有一个保存周期,包括init()和destroy()办法。

分歧的地方:

*Applet具有很好的图形界面(AWT),与扫瞄器一同,在客户端运转。

*Servlet则没有图形界面,运转在服务器端。

JavaServlet与CGI(CommonGatewayInterface)的对照:

与传统的CGI和很多其他相似CGI的手艺比拟,JavaServlet具有更高的效力,更简单利用,功效更壮大,具有更好的可移植性,更节俭投资。在将来的手艺开展过程当中,Servlet有大概完全代替CGI。

*高效

在传统的CGI中,每一个哀求都要启动一个新的历程,假如CGI程序自己的实行工夫较短,启动历程所必要的开支极可能反而凌驾实践实行工夫。而在Servlet中,每一个哀求由一个轻量级的Java线程处置(而不是分量级的操纵体系历程)。

在传统CGI中,假如有N个并发的对统一CGI程序的哀求,则该CGI程序的代码在内存中反复装载了N次;而关于Servlet,处置哀求的是N个线程,只必要一份Servlet类代码。在功能优化方面,Servlet也比CGI有着更多的选择。

*便利

Servlet供应了大批的有用工具例程,比方主动地剖析息争码HTML表双数据、读取和设置HTTP头、处置Cookie、跟踪会话形态等。

*功效壮大

在Servlet中,很多利用传统CGI程序很难完成的义务都能够轻松地完成。比方,Servlet可以间接和Web服务器交互,而一般的CGI程序不克不及。Servlet还可以在各个程序之间共享数据,使得数据库毗连池之类的功效很简单完成。

*可移植性好

Servlet用Java编写,ServletAPI具有完美的尺度。因而,为IPlanetEnterpriseServer写的Servlet无需任何本色上的修改便可移植到Apache、MicrosoftIIS大概WebStar。几近一切的支流服务器都间接或经由过程插件撑持Servlet。

*节俭投资

不但有很多便宜乃至收费的Web服务器可供团体或小范围网站利用,并且关于现有的服务器,假如它不撑持Servlet的话,要加上这部分功效也常常是收费的(或只必要少少的投资)。

JavaServlet与JSP(JavaServerPages)的对照:

JavaServerPages(JSP)是一种完成一般静态HTML和静态HTML夹杂编码的手艺,JSP并没有增添任何实质上不克不及用Servlet完成的功效。可是,在JSP中编写静态HTML加倍便利,不用再用println语句来输入每行HTML代码。更主要的是,借助内容和表面的分别,页面制造中分歧性子的义务能够便利地分隔:好比,由页面计划者举行HTML计划,同时留出供Servlet程序员拔出静态内容的空间。

JavaServletAPI2.2简介

JavaServletAPI2.2的类和接口构成两个Java包,即:javax.servlet和javax.servlet.http(还包含javax.servlet.jsp包,不在本篇文章会商局限以内)。

javax.servlet包供应了把持Servlet性命周期所必须的Servlet接口,是编写Servlet时必需要完成的。

javax.servlet.http包供应了从Servlet接口派生出的专门用于处置HTTP哀求的笼统类和一样平常的工具类。一切的Servlet对象都要完成Servlet接口,年夜多半情形下是作为已完成了Servlet接口的javax.servlet.GenericServlet和javax.servlet.http.HttpServlet这两个笼统类的子类来直接完成Servlet接口。

javax.servlet包界说的类和接口:

interfaceRequestDispatcher

//界说一种对象,用于从客户承受哀求,并将哀求发送到服务器上任何指定的资本,如一个Servlet、JSP或HTML文件。

interfaceServlet

//界说了一切Servlet必需完成的办法。

interfaceServletConfig

//界说Servletconfig对象,由Servlet引擎用在Servlet初始化时,向Servlet传送信息。

interfaceServletContext

//界说了一系列办法,以便Servlet与其运转的情况通讯。

interfaceServletRequest

//界说了用于向Servlet传送客户哀求信息的对象。

interfaceServletResponse

//界说了一个对象,由Servlet用于向客户发送呼应。

interfaceSingleThreadModel

//用于包管Servlet在任一时候,只处置一个哀求。

classGenericServlet

//承继Servlet接口,界说了一个通用的,与协定有关的Servlet。

classServletInputStream

//界说了一个输出流,用于由Servlet从中读取客户哀求的二进制数据。

classServletOutputStream

//界说了一个输入流,用于由Servlet向客户发送二进制数据。

classServletException

//界说了一个当Servlet碰到成绩时能够抛出的非常。

classUnavailableException

//界说了一种非常,用于由Servlet指明它永久或临时不成用。

javax.servlet.http包界说的类和接口:

interfaceHttpServletRequest

//承继了ServletRequest接口,为HTTPServlet供应哀求信息。

interfaceHttpServletResponse

//承继了ServletResponse接口,为HTTPServlet输入呼应信息供应撑持。

interfaceHttpSession

//为保护HTTP用户的会话形态供应撑持。

interfaceHttpSessionBindingListener

//使得某对象在到场一个会话或从会话中删除时可以失掉关照。

interfaceHttpSessionContext

//由Servlet2.1界说,该对象在新版本已不被撑持。

classCookie

//用在Servlet中利用Cookie手艺

classHttpServlet

//界说了一个笼统类,承继GenericServlet笼统类,应被HTTPServlet承继。

classHttpSessionBindingEvent

//界说了一种对象,当某一个完成了HttpSessionBindingListener接口的对象被到场会话或从会//话中删除时,会收到该类对象的一个句柄

classHttpUtils

//供应了一系列便于编写HTTPServlet的办法。

上面次要先容javax.servlet.http供应的HTTPServlet使用编程接口。

HTTPServlet利用一个HTML表格来发送和吸收数据。要创立一个HTTPServlet,请扩大HttpServlet类,该类是用专门的办法来处置HTML表格的GenericServlet的一个子类。HTML表单是由和标志界说的。表单中典范地包括输出字段(如文本输出字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应实行哪个Servlet(或别的的程序)。HttpServlet类包括init()、destroy()、service()等办法。个中init()和destroy()办法是承继的。

(1)init()办法

在Servlet的性命期中,仅实行一次init()办法。它是在服务器装进Servlet时实行的。能够设置服务器,以在启动服务器或客户机初次会见Servlet古装进Servlet。不管有几客户机会见Servlet,都不会反复实行init()。

缺省的init()办法一般是切合请求的,但也能够用定制init()办法来掩盖它,典范的是办理服务器端资本。比方,大概编写一个定制init()来只用于一次装进GIF图象,改善Servlet前往GIF图象和含有多个客户机哀求的功能。另外一个示例是初始化数据库毗连。缺省的init()办法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动设置,因而一切掩盖init()办法的Servlet应挪用super.init()以确保仍旧实行这些义务。在挪用service()办法之前,应确保已完成了init()办法。

(2)service()办法

ervice()办法是Servlet的中心。每当一个客户哀求一个HttpServlet对象,该对象的service()办法就要被挪用,并且传送给这个办法一个"哀求"(ServletRequest)对象和一个"呼应"(ServletResponse)对象作为参数。在HttpServlet中已存在service()办法。缺省的服务功效是挪用与HTTP哀求的办法响应的do功效。比方,假如HTTP哀求办法为GET,则缺省情形下就挪用doGet()。Servlet应当为Servlet撑持的HTTP办法掩盖do功效。由于HttpServlet.service()办法会反省哀求办法是不是挪用了得当的处置办法,不用要掩盖service()办法。只需掩盖响应的do办法就能够了。

当一个客户经由过程HTML表单收回一个HTTPPOST哀求时,doPost()办法被挪用。与POST哀求相干的参数作为一个独自的HTTP哀求从扫瞄器发送到服务器。当必要修正服务器真个数据时,应当利用doPost()办法。

当一个客户经由过程HTML表单收回一个HTTPGET哀求或间接哀求一个URL时,doGet()办法被挪用。与GET哀求相干的参数增加到URL的前面,并与这个哀求一同发送。当不会修正服务器真个数据时,应当利用doGet()办法。

Servlet的呼应能够是以下几品种型:

一个输入流,扫瞄器依据它的内容范例(如text/HTML)举行注释。

一个HTTP毛病呼应,重定向到另外一个URL、servlet、JSP。

(3)destroy()办法

destroy()办法仅实行一次,即在服务器中断且卸装Servlet时实行该办法。典范的,将Servlet作为服务器历程的一部分来封闭。缺省的destroy()办法一般是切合请求的,但也能够掩盖它,典范的是办理服务器端资本。比方,假如Servlet在运转时会累计统计数据,则能够编写一个destroy()办法,该办法用于在未装进Servlet时将统计数字保留在文件中。另外一个示例是封闭数据库毗连。

当服务器卸装Servlet时,将在一切service()办法挪用完成后,或在指定的工夫距离事后挪用destroy()办法。一个Servlet在运转service()办法时大概会发生别的的线程,因而请确认在挪用destroy()办法时,这些线程已停止或完成。

(4)GetServletConfig()办法

GetServletConfig()办法前往一个ServletConfig对象,该对象用来前往初始化参数和ServletContext。ServletContext接口供应有关servlet的情况信息。

(5)GetServletInfo()办法

GetServletInfo()办法是一个可选的办法,它供应有关servlet的信息,如作者、版本、版权。

当服务器挪用sevlet的Service()、doGet()和doPost()这三个办法时,均必要"哀求"和"呼应"对象作为参数。"哀求"对象供应有关哀求的信息,而"呼应"对象供应了一个将呼应信息前往给扫瞄器的一个通讯路子。

javax.servlet软件包中的相干类为ServletResponse和ServletRequest,而javax.servlet.http软件包中的相干类为HttpServletRequest和HttpServletResponse。

Servlet经由过程这些对象与服务器通讯并终极与客户机通讯。Servlet能经由过程挪用"哀求"对象的办法获知客户机情况,服务器情况的信息和一切由客户机供应的信息。Servlet能够挪用"呼应"对象的办法发送呼应,该呼应是筹办发还客户机的。
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。
若相依 该用户已被删除
沙发
发表于 2015-1-20 16:32:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
板凳
发表于 2015-1-29 12:56:46 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
蒙在股里 该用户已被删除
地板
发表于 2015-2-6 01:06:07 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
透明 该用户已被删除
5#
发表于 2015-2-8 01:45:11 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
活着的死人 该用户已被删除
6#
发表于 2015-2-23 23:30:13 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘灵儿 该用户已被删除
7#
发表于 2015-3-7 10:25:51 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
乐观 该用户已被删除
8#
发表于 2015-3-14 21:02:48 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
金色的骷髅 该用户已被删除
9#
 楼主| 发表于 2015-3-21 14:09:19 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 20:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表