加入收藏
|
设为首页
|
会员中心
|
我要投稿
|
RSS
首页
阅读中心
下载中心
影视频道
网上商城
FLASH频道
图片频道
文章中心
分类信息
网站建设
您当前的位置:
首页
>
阅读中心
>
软件学习
J2EE1.4新特性之Servlet2.4新特性
时间:2014-05-04 10:04:37 来源:不详 作者:佚名
在J2EE1.4最新的Servl
功能。
et 2.4版中,加入了一些新的功
能,下面我们介绍其中主要的常用
1、XML Schema定义Web查询部署描述文件
Servlet 2.3之前的版
示:
本使用DTD作为部署描述文件的
定义,其web.xml的格式为如下所
<?xml version="1.0" encoding="IS0-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//sunMi
crosystems,Inc.//DTD WebAppl
ication 2.3f//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
<web-app>
.......
</web-app>
Servlet 2.4版首次使用XML Schema
web.xml语法。同时XML Schema提供了更
定义作为部署描述文件,这样Web容器更容易校验
好的扩充性,其web.xml中的格式如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xm
lns="http://java.sun.com/xml/ns/j2ee"
xmlns:work
flow="http://www.workflow.co
m"
xmins:xsi="http://www.
w3.org/2001/XMLSchema-instance"
xsi:schemaLocati
on="http://java.sun.com/xml/
ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
.........
</web-app>
虽然上面显示两个版本
方法和Servlet 2.3版大致
的开头几行有差别,Servlet 2.
相同。
4版程序web.xml中Web构件的设置
2、Servlet Request监听器
Servlet 2.4版在事件
rvletRequestListener,Se
管理和控制与ServletReque
监听器的结构。
监听器中加入了ServletRequest
rvletRequestAttributeListene
st动作有关的事件。下面的程序
监听器,包括:Se
r和其他相关类。这些类可以用来
显示了一个典型的ServletRequest
import javax.setvlet.ServletContext;
import javax.servlet.Servlet
RequestListener;
import javax.servlet.Servlet
RequestAttributeListener;
import javax.ser
vlet.http.HttpServletRequest
;
import iava.io.*;
import java.util.Locale;
public final cla
ss RequestListener implemen
ts SerVletRequestListener,
ServletRequestAttributeListe
ner,ServletContextListener{
........
public void requestl
nitialized(javax.servlet.Ser
vletRequestEvent event){
........
}
public void attribut
eAdded(javax.servlet.Servlet
RequestAttributeEvent event){
........
}
public void attributeRemoved(jav
{
ax.servlet.ServletRequestAttributeEvent event)
........
}
public void attribut
event){
eReplaced(javax.servlet.Serv
letRequestAttributeEvent
........
}
public void attributeDestroyed(j
event){
avax.servlet.ServletRequestAttributeEvent
........
}
}
3、 Request Dispatcher变化
Servlet 2.4版的Web程
以根据请求分发器(request
可以通过在web.xml中使用
序增强了filter和request disp
dispatcher)所使用的方法有条
元素设定过滤器作用的条件(下
atcher的配合功能,这样过滤器可
件地对Web请求进行过滤。编程者
图1):
图1 设定元素的过滤器
·只有当request直接来自客户,过滤器才生效,对应为REQUEST条件。
·只有当request被一
),对应称为FORWARD条件。
个请求分发器使用forward()方
法转到一个Web构件时(采用或定义
·类似地,只有当request被一个请
用或定义),对应称为INCLUDE条件。
求分发器使用include()方法转到一个Web构件时(采
·只有当request被一
对应称为ERROR条件。
个请求分发器使用“错误信息页
”机制方法转到一个Web构件时,
·第五种过滤器作用的条件可以是上面四种条件的组合。
下面的程序中的定义了当客户请求/i
来过滤请求。但是如果到达URL为/icsamp
dispatcher转发过来的,这个过滤器不工
csamples/* 样式的URL时,Security Filter会被用
les/* 的Web构件的请求是从一个request
作。
<filter-mapping>
<filter-name>Security Filter</filter-name>
<url-pattern>/icsamples/*</url-pattern>
</filter-mapping>
如果使用下面的程序设置,在中加入
dispatcher使用include()方法包括Reque
直接从客户发来,或request dispatcher
。
INCLUDE,Security Filter只有在被一个request
stRecorderServlet时才会工作。在其他情况(如请求
使用forward方法)下,Security Filter都不会工作
<filter-mapping>
<fliter-name>Security Filter</filter-name>
<servlet-name>RequestRecorderServlet</servlet-name>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
下面的程序设置定义了
Security Filter当request由客
户直接发出或request
dispatcher使用forward方法时能工作。
<filter-mapping>
<filter-name>Security Filter</filter-name>
<url-pattern>/icsamples/*</uri-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
程序例6显示了一个在
的参数"type",决定如何处
可以向URL为/admin或/cont
。过滤器和Web资源的关系
”,ReqDispatcherServlet
ispatcherFilterIcd会被使
ERROR”ReqDispatcherServ
被使用,因为在定义了ERRO
中使用的例子。程序7定义的Req
理请求。在其中使用了两个Requ
rol的servlet转发请求。当请求
可以在web.xml中定义。如果用
的RequestDispatcher会调用inc
用,因为在定义了INCLUDE;如
let会调用resp.sendError()方
R。
DispatcherServlet根据用户请求
estDispatcher(rd,和rd2),它们
被转发后,适当的过滤器会起作用
户输入的Web请求参数为“INCLUDE
lude 方法,这样D
果用户输入的 Web请求参数为“
法,这样DispatcherFilterErr会
例6:
<filter-mapping>
<filter-name>DispatcherFilterIcd</filter-name>
<url-pattern>/admin</url-pattern>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>DispatcherFilterErr</filter-name>
<url-pattern>/errorpage</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
例7:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class ReqDispatcherSe
rvlet extends HttpServlet
{
String dispatchtype;
public void init(ServletConf
ig config) throws ServletException
{
super.init(config);
}
public void serv
ice(HttpServletRequest req,H
ttpServletResponse resp)
throws ServletException,IOException
{
PrintWriter out=resp.getWriter();
String type="NONE";
if((req.getParameter("type"))!=null)
{
type = req.getParameter("type");
}
resp.setContentType("text/html");
out.println("<HTML>");
out.println("<BODY>");
out.println("<HR>");
out.println("<p>");
out.println("ReqDispacherServelt");
out.println("</P><p>");
out.println("Ser
verName:"+req.getServerName(
)+"ServerPort:"+
req.getServerPort());
out.println("</p>");
RequestDispatche
r rd=req.getRequestDispatche
r("/admin");
RequestDispatche
r rd2=req.getRequestDispatch
er("/control");
if(type.equals("REQUEST"))
{
}
if(type.equals("FORWARD"))
{
rd.forward(reg,resp);
}
if(type.equals("INCLUDE"))
{
rd.include(req,resp);
}
if(type.equals("ERROR"))
{
resp.sendError(4
04,"Error from ReqDispacher
Servlet");
}
if(type.equals("CONTROL"))
{
rd2.forward(req,resp);
}
out.flush();
}
public voiddestroy()
{
System.out.println("ReqDispa
cherServlet:destroy()");
}
}
4、 增强的国际化功能
Servlet 2.4增加了Web
程序国际化功能,在web.xml中
可以定义网站的字符编码方式。
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>zh</locale>
<encoding>gb2312</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
当客户请求了特定语言
方法设置一个Web响应的语
的Web资源时,servlet程序通过
言属性。
ServletResponse接口的setLocale
5、 Login/Logout功能
在Servlet 2.4中增加了logout和log
API查看其用法。
in方法方便安全管理。大家可以参考Servlet 2.4的
来顶一下
返回首页
发表评论
共有
条评论
用户名:
密码:
验证码:
匿名发表
推荐资讯
后牧工业区厂房1500平
现实的童话公主艾米·
科比专为大场面而生
“最美清洁工”原是《
相关文章
无相关信息
栏目更新
栏目热门
站内搜索:
新闻
下载
图库
FLASH
电影
商品
文章
分类信息
高级搜索
网站首页
|
关于我们
|
服务条款
|
广告服务
|
联系我们
|
网站地图
|
免责声明
|
WAP
服务专员1
技术支持
SunC
Soft
© 2002-2013
SunC