开始复习巩固知识,拿了JavaEETutorial5来参考,1000多页怪恐怖的,也难怪没人翻译了 :D 。简要翻译一下,以供参考。前两章概览介绍忽略了,从第三章Web应用开始。
[b]Getting Started with Web Applications[/b]
[img]/upload/attachment/79399/16c06b5f-16bc-3590-9415-71f8ac43f2c4.jpg[/img]
看上图web应用的总体结构。web client向web server发送http请求,web server将http请求封装成http对象,并将http对象分派给相应的web components,web components可以和java beans或者直接和database通讯。web components接受到http对象后,可以在转发给其他web components或者组装出一个http响应返回给web client。
[img]/upload/attachment/79401/5520f2be-a388-31eb-93a4-4d843b8ccf51.jpg[/img]
这是web components的结构,可以看出,servlet是整个web components的基础。其他components都是对它的一个封装。servlet就是个java类,jsp则是被设计为类似html,xml的文本标记语言。
这些web components都运行在一个叫做web container的环境下。web container提供了类似请求分派,安全,并发和生命周期管理等服务。还有供component调用的api,比如命名服务,交互和email。
web应用的一些行为,在安装,部署期间,可以通过叫做web application deployment descriptor(简称DD) 的xml配置文件来配置。
[b]
Web Application Life Cycle[/b]
web应用生命周期如下:
1.编写web component代码
2.配置DD
3.编译components及相关类
4.打包需要部署的内容
5.部署到web容器中
6.通过URL访问web应用
[b]
Web Modules[/b]
[img]/upload/attachment/79418/2325f718-7878-3c55-ab98-d5a4990d448e.jpg[/img]
web componets以及image之类的静态文件,统称为web资源。而最小的可发布的web资源就是web模块。除了components和资源,web模块还能包括如下内容。
服务器端工具类(数据bean),客户端类(applet)。
web模块的结构如上,如果你的web模块里面没有servlet,listener或filter,那么web.xml就不是必须的。当你把web模块发布到应用服务器上的时候,需要sun-web.xml(还没接触过这个配置文件,有点寒~)文件。sun-web.xml文件包含web模块的上下文根路径(context root)信息,以及web资源到应用服务器资源之间的一个映射。
[b]Configuring Web Applications[/b]
这一节前半部分完全是一步步讲netbeans操作的,没有讲关于DD的内容,忽略。
Declaring Resource References
这里的Resource可能可平时理解的不一样,这里的Resource只的是像enterprise beans, data sources, or web services这类组件。可以使用注解来注入这些Resource。
但是有一些限制。首先,你只能对受管对象注入Resource,第二,你不能对JSP注入Resource,这是因为,注解是在部署的时候被激活的,而JSP的编译是在第一次被访问的时候。
下面的组件可以被注入Resource.
[img]/upload/attachment/79533/645b930a-4cec-33ee-bc3e-4aaa2298ca08.jpg[/img]
Declaring a Reference to a Resource
@Resource注解是定义一个到Resource的引用的,对应DD里面的resource-ref元素。@Resource可以注解类,也可以注解方法或属性。作用是将Resource的引用注入给被注解的类,方法或属性,并会映射到JNDI相应的Resource上。
下面的实例是给类注入一个DataSource。
如果要注入多个Resource,那么如下书写
Declaring a Reference to a Web Service
@WebServiceRef注解一个到webservice的引用。
下面的例子使用@WebServiceRef注申明一个到webservice的引用,使用wsdlLocation元素确定了相应的wsdl文件的地址。
[b]Getting Started with Web Applications[/b]
[img]/upload/attachment/79399/16c06b5f-16bc-3590-9415-71f8ac43f2c4.jpg[/img]
看上图web应用的总体结构。web client向web server发送http请求,web server将http请求封装成http对象,并将http对象分派给相应的web components,web components可以和java beans或者直接和database通讯。web components接受到http对象后,可以在转发给其他web components或者组装出一个http响应返回给web client。
[img]/upload/attachment/79401/5520f2be-a388-31eb-93a4-4d843b8ccf51.jpg[/img]
这是web components的结构,可以看出,servlet是整个web components的基础。其他components都是对它的一个封装。servlet就是个java类,jsp则是被设计为类似html,xml的文本标记语言。
这些web components都运行在一个叫做web container的环境下。web container提供了类似请求分派,安全,并发和生命周期管理等服务。还有供component调用的api,比如命名服务,交互和email。
web应用的一些行为,在安装,部署期间,可以通过叫做web application deployment descriptor(简称DD) 的xml配置文件来配置。
[b]
Web Application Life Cycle[/b]
web应用生命周期如下:
1.编写web component代码
2.配置DD
3.编译components及相关类
4.打包需要部署的内容
5.部署到web容器中
6.通过URL访问web应用
[b]
Web Modules[/b]
[img]/upload/attachment/79418/2325f718-7878-3c55-ab98-d5a4990d448e.jpg[/img]
web componets以及image之类的静态文件,统称为web资源。而最小的可发布的web资源就是web模块。除了components和资源,web模块还能包括如下内容。
服务器端工具类(数据bean),客户端类(applet)。
web模块的结构如上,如果你的web模块里面没有servlet,listener或filter,那么web.xml就不是必须的。当你把web模块发布到应用服务器上的时候,需要sun-web.xml(还没接触过这个配置文件,有点寒~)文件。sun-web.xml文件包含web模块的上下文根路径(context root)信息,以及web资源到应用服务器资源之间的一个映射。
[b]Configuring Web Applications[/b]
这一节前半部分完全是一步步讲netbeans操作的,没有讲关于DD的内容,忽略。
Declaring Resource References
这里的Resource可能可平时理解的不一样,这里的Resource只的是像enterprise beans, data sources, or web services这类组件。可以使用注解来注入这些Resource。
但是有一些限制。首先,你只能对受管对象注入Resource,第二,你不能对JSP注入Resource,这是因为,注解是在部署的时候被激活的,而JSP的编译是在第一次被访问的时候。
下面的组件可以被注入Resource.
[img]/upload/attachment/79533/645b930a-4cec-33ee-bc3e-4aaa2298ca08.jpg[/img]
Declaring a Reference to a Resource
@Resource注解是定义一个到Resource的引用的,对应DD里面的resource-ref元素。@Resource可以注解类,也可以注解方法或属性。作用是将Resource的引用注入给被注解的类,方法或属性,并会映射到JNDI相应的Resource上。
下面的实例是给类注入一个DataSource。
@Resource javax.sql.DataSource catalogDS;
public getProductsByCategory() {
// get a connection and execute the query
Connection conn = catalogDS.getConnection();
..
}
如果要注入多个Resource,那么如下书写
@Resources ({
@Resource (name="myDB" type=java.sql.DataSource),
@Resource(name="myMQ" type=javax.jms.ConnectionFactory)
})
Declaring a Reference to a Web Service
@WebServiceRef注解一个到webservice的引用。
下面的例子使用@WebServiceRef注申明一个到webservice的引用,使用wsdlLocation元素确定了相应的wsdl文件的地址。
...
import javax.xml.ws.WebServiceRef;
...
public class ResponseServlet extends HTTPServlet {
@WebServiceRef(wsdlLocation=
"http://localhost:8080/helloservice/hello?wsdl")
static HelloService service;