uris与web应用程序
用如下模式来构造从客户端访问web应用程序的url:
http://hoststring/contextpath/servletpath/pathinfo
其中
hoststring
或是一个被映射到一虚拟主机的主机名,或是主机名:端口
(hostname:portnumber)
contextpath
web应用程序的名字
servletpath
被映射到servletpath的一个servlet
pathinfo
url的其余部分,典型的是一个文件名
如正使用虚拟主机,可用虚拟主机名来替换url的hoststring部分。
进一步的信息,参考weblogic服务器怎样解释http请求。
配置servlets
servlets被注册和配置成为一个web应用程序的一部分。通过给web应用程序部署描述符添加几个条目来注册servlet。第一个,在<servlet>元素下定义servlet的名称和执行这个servlet的已编译的类。这个元素也包含这个servlet的初始化参数和安全角色的定义。第二个,在<servlet-mapping>元素下定义调用这个servlet的url模式。
编辑web应用程序部署描述符的完整说明,参考:
· 配置web应用程序,部署servlets
· 配置web应用程序,将servlet映射到url
servlet映射
servlet映射控制你如何访问这个servlet。以下的例子示范了在web应用程序中可使用的servlet映射的一些方法。在这个例子中,下面列出了一系列的servlet配置和映射,在随后的表(参考url模式和servlet调用)中列出了用来调用这些servlets的urls。
listing 8-1 servlet映射示例
<servlet>
<servlet-name>watermelon</servlet-name>
<servlet-class>myservlets.watermelon</servlet-class>
</servlet>
<servlet>
<servlet-name>garden</servlet-name>
<servlet-class>myservlets.garden</servlet-class>
</servlet>
<servlet>
<servlet-name>list</servlet-name>
<servlet-class>myservlets.list</servlet-class>
</servlet>
<servlet>
<servlet-name>kiwi</servlet-name>
<servlet-class>myservlets.kiwi</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>watermelon</servlet-name>
<url-pattern>/fruit/summer/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>garden</servlet-name>
<url-pattern>/seeds/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>list</servlet-name>
<url-pattern>/seedlist</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>kiwi</servlet-name>
<url-pattern>*.abc</url-pattern>
</servlet-mapping>
table 8-1 ur模式和servlet调用url 调用的servlet
http://host:port/mywebapp/fruit/summer/index.html watermelon
http://host:port/mywebapp/fruit/summer/index.abc watermelon
http://host:port/mywebapp/seedlist list
http://host:port/mywebapp/seedlist/index.html 默认servlet,如果已经配置的话,或者是一条http 404 file not found错误消息如list servlet的映射是/seedlist*,就会调用list servlet
http://host:port/mywebapp/seedlist/pear.abc kiwi如list servlet的映射是/seedlist*,就会调用list servlet
http://host:port/mywebapp/seeds garden
http://host:port/mywebapp/seeds/index.html garden
http://host:port/mywebapp/index.abc kiwi
servlet初始化参数
在web应用部署描述符中的<servlet>元素的<init-param>元素中用<param-name>和<param-value>标签定义servlets的初始化参数。例如:
listing 8-2配置 servlet初始化参数示例
<servlet>
<servlet-name>helloworld2</servlet-name>
<servlet-class>examples.servlets.helloworld2</servlet-class>
<init-param>
<param-name>greeting</param-name>
<param-value>welcome</param-value>
</init-param>
<init-param>
<param-name>person</param-name>
<param-value>weblogic developer</param-value>
</init-param>
</servlet>
有关编辑web应用程序部署描述符的更多信息,参考编写web应用程序部署描述符。
配置jsp
通过将jsp文件放在web应用程序的根目录(或根目录下的子目录)里来部署它们。另外的jsp配置参数在weblogic特有的部署描述符(weblogic.xml)的<jsp-descriptor>元素中定义。这些参数定义以下功能:
· jsp编译器的选项。
· 调试。
· 服务器检查需重新编译的已更新的jsps的时间间隔。
· 字符编码。
有关这些参数的完整描述,参考jsp参数名称及值。
有关编辑weblogic.xml文件的说明,参考建立weblogic特有的部署描述符。
配置jsp标签库
weblogic服务器按照servlet 2.2规范提供建立和使用jsp标签的能力。定制的jsp标签就是能从jsp页面中调用的java类。要建立定制jsp标签,需将它们放在标签库中,并在标签库描述符文件(tld)中定义它们的行为。这个tld必须在web应用程序描述符中定义,这样包含jsp页面的web应用程序就可利用它。将tld文件放在web应用程序的web-inf目录下是个好主意,这是因为这个目录从不对公众开放。
在web应用程序的部署描述符中,需为标签库定义uri模式。uri模式必须与jsp页面中的taglib指令的值相一致。还需定义tld的位置。例如,在jsp页面中的taglib指令如下:
<%@ taglib uri="mytaglib" prefix="taglib" %>
并且tld位于web应用程序的web-inf目录中,就应该在web应用程序的部署描述符中建立如下条目:
<taglib>
<taglib-uri>mytaglib</taglib-uri>
<tablig-location>web-inf/mytld.tld</taglib-location>
</taglib>
有关建立定制jsp标签库的更多信息,参考jsp标签扩展的编程。
weblogic服务器也包含了几个可在应用程序中使用的定制的jsp标签。这些标签执行缓存,基于参数的流控制,对象集上的迭代。更多信息,参考使用定制的weblogic jsp标签。
配置初始(welcome)页面
weblogic服务器允许设置这样一个页面,这个页面在请求的url是一个目录时作为默认页面。这个特性使得站点更易于使用,因为用户在输入url时不必给出特定的文件名。
在web应用程序级定义初始页面。如服务器宿主多个web应用程序,就需为每个web应用程序单独定义不同的初始页面。
要定义初始页面,编辑web应用程序部署描述符web.xml。有关更多信息,参考初始文件。
if you do not define welcome pages, weblogic server looks for the following files in the following order and serves the first one it finds:
如未定义初始页面,weblogic服务器以下列顺序查找以下文件,并提供它找到的第一个文件:
1. index.html
2. index.htm
3. index.jsp
更多信息,参考weblogic服务器如何解释http请求。
建立默认的servlet
每个web应用程序都有一个默认的servlet。这个默认的servlet,可以自定义,如没有自定义,weblogic服务器会用一个名为fileservlet的内部servlet作为默认的servlet。有关fileservlet的更多信息,参考weblogic如何解释http请求。
可将任何servlet注册成为默认的servlet。编写自己的默认servlet,就可使用自己的逻辑来决定如何处理回送给默认servlet的请求。
建立默认的servlet来代替fileservlet时应小心,因为fileservlet被用来为大多数文件提供服务,如文本文件,html文件,图像文件等等。如希望自己的默认servlet为这些文件提供服务,就必须将这些功能写进自己的默认servlet。
建立用户定义的默认servlet:
1. 定义自己的servlet(如在配置servlets中描述一样)。
2. 用”/” url模式映射自己的默认servlet。这样使得自己的默认servlet响应文件的所有类型,除了扩展名是*.htm*或.html类型的文件,因为它们被内部映射到fileservlet。
如也想使自己的默认servlet响应以*.htm或*.html结尾的文件,除“/”映射外,还必须将这些扩展名映射到自己的默认servlet上。有关映射servlets的说明,参考配置servlets。
3. 如还想fileservlet为其它扩展名的文件服务,将那些文件扩展名映射到fileservlet(除自己的默认servlet的映射外)。例如,要使fileservlet为gif文件服务,映射*.gif到fileservlet。
