java webservice教程Word格式.docx

上传人:b****6 文档编号:21964856 上传时间:2023-02-02 格式:DOCX 页数:8 大小:101.12KB
下载 相关 举报
java webservice教程Word格式.docx_第1页
第1页 / 共8页
java webservice教程Word格式.docx_第2页
第2页 / 共8页
java webservice教程Word格式.docx_第3页
第3页 / 共8页
java webservice教程Word格式.docx_第4页
第4页 / 共8页
java webservice教程Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

java webservice教程Word格式.docx

《java webservice教程Word格式.docx》由会员分享,可在线阅读,更多相关《java webservice教程Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

java webservice教程Word格式.docx

Web服务器插件在其他Web服务器进程的内部地址空间启动一个Java虚拟机,Servlet容器组件在此Java虚拟机中运行。

如有Servlet请求,Web服务器插件获得此请求并转发给Servlet容器(JNI通信,Java本地调用接口)。

3其他Web服务器进程外的Servlet容器

与上面类似,只是在Web服务器外部地址,启动一个Java虚拟机进程,转发用IPC通信机制,两个进程之间通信的一种机制。

Servlet是JavaWEB应用中最核心的组件,最常用:

1.请求对象ServletRequest和HttpServletResponse

2.响应对象ServletResponse、HttpServletResponse

3.Servlet配置对象,ServletConfig,容器初始化一个Servlet时,会向他提供一个ServletConfig对象,Servlet通过该对象来获取初始化参数信息以及ServletContext对象。

4.ServletContext对象:

通过它来访问容器为当前Web应用提供的各种资源

主要由两个Java包组成,javax.servlet和javax.servlet.http前者定义了Servlet接口以及相关的通用接口和相关类,后者定义了与HTTP协议相关的。

javawebservice教程之Servlet接口

ServletAPI的核心,所有的Servlet都必须实现这一接口,定义了5个方法,其中3个方法由容器来调用,容器会在Servlet生命周期的不同阶段调用特定方法。

1.Init

2.Service(ServletRequestreq,ServletResponseres),响应客户请求,访问特定servlet对象时,调用service方法

3.destory():

负责释放Servlet对象占用的资源,当Servlet对象结束生命周期时,容器会调用此方法

4.getServletConfig:

返回一个ServletConfig对象。

所有的servlet

5.getServletInfo:

返回一个字符串,返回Servlet创建者,版本,版权信息等。

抽象类,实现了Servlet接口,ServletConfig接口,Serializable接口。

这样所有的Servlet就通过SerletConfig接口,拥有了获得自己相关属性的方法:

getInitParameter,getInitParameterNames。

另外,还有getServletContext,也是实现Config接口需要实现的。

ServletConfig

<

servlet>

servlet-name>

....<

/servlet-name>

servlet-class>

.....<

/servlet-class>

init-param>

param-name>

param-value>

/init-param>

/servlet>

servlet-mapping>

/servlet-mapping>

Servlet的init(ServletConfigconfig)方法有一个这个参数,它初始化一个servlet对象时,创建一个ServletConfig对象,包含了这个Servlet的初始化参数信息。

ServiceConfig还有一个当前的ServletContext对象关联的API.

从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet有效,一个servlet的ServletConfig对象不能被另一个servlet访问。

getInitParameter()/getInitParameter(Stringname),用来获得初始化参数,getServletContext

getServletName:

返回SERVLET的名字即webxml中相应servlet元素<

元素的值:

GenericServlet的子类,虽然自定义,Servlet类可以GenericServlet,但一把都扩展HttpServlet类。

它为HTTP的请求方式,分别实现相应的方法,doGet、doPost、doDelete,从源码上看,它实现了SERVLET接口的service(ServletRequestreq,ServletResponseres)方法,并且重载了方法,service(HttpServiceRequestreq,HttpServletResponserep)。

Http协议请求方法功能介绍

privatestaticfinalStringMETHOD_DELETE="

DELETE"

;

privatestaticfinalStringMETHOD_HEAD="

HEAD"

privatestaticfinalStringMETHOD_GET="

GET"

privatestaticfinalStringMETHOD_OPTIONS="

OPTIONS"

privatestaticfinalStringMETHOD_POST="

POST"

privatestaticfinalStringMETHOD_PUT="

PUT"

privatestaticfinalStringMETHOD_TRACE="

TRACE"

protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

{

Stringmethod=req.getMethod();

if(method.equals(METHOD_GET)){

longlastModified=getLastModified(req);

if(lastModified==-1){

//servletdoesn'

tsupportif-modified-since,noreason

//togothroughfurtherexpensivelogic

doGet(req,resp);

}else{

longifModifiedSince=req.getDateHeader(HEADER_IFMODSINCE);

if(ifModifiedSince<

(lastModified/1000*1000)){

//Iftheservletmodtimeislater,calldoGet()

//Rounddowntothenearestsecondforapropercompare

//AifModifiedSinceof-1willalwaysbeless

maybeSetLastModified(resp,lastModified);

resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);

}

}elseif(method.equals(METHOD_HEAD)){

doHead(req,resp);

}elseif(method.equals(METHOD_POST)){

doPost(req,resp);

}elseif(method.equals(METHOD_PUT)){

doPut(req,resp);

}elseif(method.equals(METHOD_DELETE)){

doDelete(req,resp);

}elseif(method.equals(METHOD_OPTIONS)){

doOptions(req,resp);

}elseif(method.equals(METHOD_TRACE)){

doTrace(req,resp);

//

//NotethatthismeansNOservletsupportswhatever

//methodwasrequested,anywhereonthisserver.

StringerrMsg=lStrings.getString("

http.method_not_implemented"

);

Object[]errArgs=newObject[1];

errArgs[0]=method;

errMsg=MessageFormat.format(errMsg,errArgs);

resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED,errMsg);

前者表示客户端请求参数,用它可以读取客户端请求数据的方法,比如getContentType、getLocalPort等。

后者是前者的子接口,它提供了读取HTTP请求中相关信息的方法,比如getMethod,getQueryString,HTTP请求中的查询字符串,?

后面的内容。

本来,我们得自己去解析HTTP请求,然后做出回应,现在根据sun的servletAPI来构建Servlet,则无需实现费力地解析如HTTP请求,这都有Servlet代劳,并封转为HttpServletRequest对象,Servlet只需要调用getXXX方法。

ServletResponse和HttpServletResponse

前者用来生产相应结果,它有一系列设置响应信息的setXXX方法,默认为text/plain,存文本,servlet通过servletResponse产生HTTP相应的正文部分。

二进制用Servlet的getOutPutStream方法返回一个ServletOutputStream对象来输出二进制数据,getWrte方法返回一个PrintWrite对象,用来返回字符串形式的正为。

后者是前者的子接口,通过它来设置HTTP响应头,向客户端写cookie等,addHeader。

addCookie。

另外,它还有一个静态的状态常量。

是Servlet与Servlet容器的接口,容器启动一个Web应用时,都为之创建一个唯一ServletContext对象,管理访问容器的各种资源,6个方法:

1.在web应用范围内共享数据的方法,setAttribute,getAttribute

2.访问当前Web应用的资源

3.访问Servlet容器中的其他Web应用。

ServletContextgetContext(java.lang.Stringuripath) 

4.访问服务器端的文件系统资源,getRealPath,getResource

5.输出日志

6.访问容器相关信息

ServletContext:

对任何servlet,任何人在任何时间都有效,这才是真正全局的对象。

web-app>

.................

charset<

/param-name>

GB2312<

/param-value>

/web-app>

1.Web应用:

3阶段,启动阶段、运行阶段、终止阶段

a)启动:

加载web.xml--------为web应用创建一个ServletContext对象-----初始化所有Filter-----对需要启动时就要初始化的Servlet初始化

b)运行:

最重要阶段,这时,所有Servlet处于待命阶段,随时响应请求,如果servlet未初始化,则先初始化,再调用servlet方法

c)终止:

销毁处于运行状态的servlet---销毁运行阶段的Filter-----销毁所有WEB应用相关的对象,如ServletCCotext,并且释放web应用占用的资源

2.Servlet生命周期:

3个状态,初始化、运行、销毁

A初始化claa文件读入内存------Servlet容器创建ServletConfig------包含了特别Servlet的初始化配置信息--------容器创建Servlet对象----调用Servlet对象的init(ServletConfigfig)

如果servlet被首次访问,会初始化,如果servlet设置了<

load-on-startup>

元素,则容器启动servlet应用时,就会初始化

B.运行阶段响应请求

C销毁:

web应用终止时,Servlet容器会调用所有servlet的destory方法,然后再销毁这些servlet对象,另外,还销毁与servlet关联的ServletConfig。

ServletContext与Web应用有同样的生命周期,Web应用范围表示,由WEB应用的生命周期构成的时间段,WEB应用的生命周期内所有的Web组件集合,共享数据,可以在Wwb应用范围内存取共享,这可以通过ServletContext对象来实现,这就是setAttribute和removeAttrinut、getAttribute等。

4.ServletContextListener监听器

监听ServletContext的生命周期,实际上就是监听Web应用的生命周期

contextInitialized、contextDestoryed事件,这可以用来实现初始化、销毁的时候,一些持久化存储(下载/上传/图像/。

过滤器

在一些web组件响应客户请求过程中,可能都会完成一些相同的操作,比如,先检查IP,可以使用过滤器:

在wen组件被调用前,检查serviceRequest对象,修改请求头,和请求正文的内容,或者对请求进行预处理操作;

过滤器,能在wen组件被调用后检查ServletResponse对象,修改响应头和响应正文。

HTTP会话

会话管理:

有些情况下,容器会把httpsession对象从内存中转移到持久设备中,这可以确保重启web应用后,能恢复重启前的会话。

Tomcat目前包括两种方式:

标准会话管理器:

org.apache.catalina.session.StandardManager

持久会话管理器:

org.......................................PresistentManager

前者:

当Tomcat服务器终止或者web应用终止时,会对被终止的web应用的httpsession对象进行持久化,保存在文件中。

Home/WORK/CATALINA/HOSTNAME/APPLICATIONNAME/sessions.ser。

重启时,激活

后者:

提供了更灵活的功能,它把存放httpsession对象的永久性存储设备称为会话store:

当tomcat关闭时或重启(或单个web),会对httpsession持久化store中

具有容错功能,这时备份到会话store中,防止意外关闭

灵活控制内存中的httpsession的数目

两种实现:

FileStore,文件中

JDBCStore:

数据库中

会话的监听

HttpSessionListener:

监听会话的创建以及销毁事件,如下两个方法,

sessionCreated(HttpSessionEventevent),SessionDestoryed(HttpSessionEventevent)

HttpSessionAttributeListener:

监听会话中添加,替换,删除属性事件

HttpSessionBindingListener:

监听会话与一个属性绑定或解除绑定的事件

HttpSessionActivctionListener:

监听会话被激活或被搁置的事件。

前两个必须在web.xml文件中通报各国<

listener>

元素向容器注册,后两个由会话的属性来实现,假如MyData类,的对象会作为会话的属性与会话绑定,如果希望监听对象与会话绑定的解除绑定,以及会话被激活或搁置的事件,那么可以让MyData类实现后两个接口。

以上,就是长沙尚学堂小编为大家带来的javawebservice教程,不知道对你是否有帮助,但是这是小编用心为大家带来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1