`
ruvuoai
  • 浏览: 93981 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在J2EE1.4最新的Servlet 2.4特性

    博客分类:
  • web
阅读更多
发布时间:2006.03.15 09:06     来源:Java开源_网易部落    作者:linminghao

在J2EE1.4最新的Servlet 2.4版中,加入了一些新的功能,下面我们介绍其中主要的常用功能。

1、XML Schema定义Web查询部署描述文件

Servlet 2.3之前的版本使用DTD作为部署描述文件的定义,其web.xml的格式为如下所示:


    PUBLIC "-//sunMicrosystems,Inc.//DTD WebApplication 2.3f//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
   
     .......
   



Servlet 2.4版首次使用XML Schema定义作为部署描述文件,这样Web容器更容易校验web.xml语法。同时XML Schema提供了更好的扩充性,其web.xml中的格式如下所示:


              xmlns:workflow="http://www.workflow.com"
          xmins:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    .........
   



虽然上面显示两个版本的开头几行有差别,Servlet 2.4版程序web.xml中Web构件的设置方法和Servlet 2.3版大致相同。

2、Servlet Request监听器

Servlet 2.4版在事件监听器中加入了ServletRequest监听器,包括:ServletRequestListener,ServletRequestAttributeListener和其他相关类。这些类可以用来管理和控制与ServletRequest动作有关的事件。下面的程序显示了一个典型的ServletRequest监听器的结构。

import javax.setvlet.ServletContext;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.ServletRequestAttributeListener;
    import javax.servlet.http.HttpServletRequest;
    import iava.io.*;
    import java.util.Locale;
    public final class RequestListener  implements   SerVletRequestListener,
    ServletRequestAttributeListener,ServletContextListener{
        ........
public void requestlnitialized(javax.servlet.ServletRequestEvent event){
        ........
        }
public void attributeAdded(javax.servlet.ServletRequestAttributeEvent event){
        ........
        }
public void attributeRemoved(javax.servlet.ServletRequestAttributeEvent event){
        ........
        }
public void attributeReplaced(javax.servlet.ServletRequestAttributeEvent event){
        ........
        }
public void attributeDestroyed(javax.servlet.ServletRequestAttributeEvent event){
       ........
       }
    }



3、 Request Dispatcher变化

Servlet 2.4版的Web程序增强了filter和request dispatcher的配合功能,这样过滤器可以根据请求分发器(request dispatcher)所使用的方法有条件地对Web请求进行过滤。编程者可以通过在web.xml中使用元素设定过滤器作用的条件(下图1):




图1 设定元素的过滤器


·只有当request直接来自客户,过滤器才生效,对应为REQUEST条件。

·只有当request被一个请求分发器使用forward()方法转到一个Web构件时(采用或定义),对应称为FORWARD条件。

·类似地,只有当request被一个请求分发器使用include()方法转到一个Web构件时(采用或定义),对应称为INCLUDE条件。

·只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应称为ERROR条件。

·第五种过滤器作用的条件可以是上面四种条件的组合。

下面的程序中的定义了当客户请求/icsamples/* 样式的URL时,Security Filter会被用来过滤请求。但是如果到达URL为/icsamples/* 的Web构件的请求是从一个request dispatcher转发过来的,这个过滤器不工作。


    Security Filter
    /icsamples/*
   



如果使用下面的程序设置,在中加入INCLUDE,Security Filter只有在被一个request dispatcher使用include()方法包括RequestRecorderServlet时才会工作。在其他情况(如请求直接从客户发来,或request dispatcher使用forward方法)下,Security Filter都不会工作。


    Security Filter
    RequestRecorderServlet
    INCLUDE
   



下面的程序设置定义了Security Filter当request由客户直接发出或request

dispatcher使用forward方法时能工作。


    Security Filter
    /icsamples/*
    FORWARD
    REQUEST
   



程序例6显示了一个在中使用的例子。程序7定义的ReqDispatcherServlet根据用户请求的参数"type",决定如何处理请求。在其中使用了两个RequestDispatcher(rd,和rd2),它们可以向URL为/admin或/control的servlet转发请求。当请求被转发后,适当的过滤器会起作用。过滤器和Web资源的关系可以在web.xml中定义。如果用户输入的Web请求参数为“INCLUDE”,ReqDispatcherServlet的RequestDispatcher会调用include 方法,这样DispatcherFilterIcd会被使用,因为在定义了INCLUDE;如果用户输入的 Web请求参数为“ERROR”ReqDispatcherServlet会调用resp.sendError()方法,这样DispatcherFilterErr会被使用,因为在定义了ERROR。

例6:


    DispatcherFilterIcd
    /admin
    INCLUDE
   
   
    DispatcherFilterErr
    /errorpage
    ERROR
   



例7:

import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;

    public class ReqDispatcherServlet extends HttpServlet
    {
    String dispatchtype;
    public void init(ServletConfig config) throws ServletException
    {
    super.init(config);
    }
    public void service(HttpServletRequest req,HttpServletResponse 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("");
        out.println("");
out.println("
--------------------------------------------------------------------------------
");
out.println("
");
    out.println("ReqDispacherServelt");
    out.println("

");
    out.println("ServerName:"+req.getServerName()+"ServerPort:"+
req.getServerPort());   
    out.println("

");
    RequestDispatcher rd=req.getRequestDispatcher("/admin");
    RequestDispatcher rd2=req.getRequestDispatcher("/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(404,"Error from ReqDispacherServlet");
     }
    if(type.equals("CONTROL"))
     {
    rd2.forward(req,resp);
     }
    out.flush();
    }
    public voiddestroy()
    {
    System.out.println("ReqDispacherServlet:destroy()");
     }
    }



4、 增强的国际化功能

Servlet 2.4增加了Web程序国际化功能,在web.xml中可以定义网站的字符编码方式。


   
    zh
    gb2312
   
   



当客户请求了特定语言的Web资源时,servlet程序通过ServletResponse接口的setLocale方法设置一个Web响应的语言属性。

5、 Login/Logout功能

在Servlet 2.4中增加了logout和login方法方便安全管理。大家可以参考Servlet 2.4的API查看其用法 
分享到:
评论

相关推荐

    J2EE5 API Java Servlet2.5 DocumenTation chm英文版(5.04)

    转载请保持该文档完整,谢谢~~~ <br>目前开发J2EE大都使用1.4版本,J2EE4 Java Servlet2.4 DocumenTation已经发布。本次发布是官方1.5update4的chm版,各位如有需要官网5.0的API的chm版,请在后面留言,根据...

    《Java Web应用开发:J2EE和Tomcat》教程第二版

    书中涵盖了J2EE 1.4、Servlet 2.4、JSP2.0等多种技术,内容相当于几本同类书,但更加完整连贯,讲解更着重概念—技能—方法的相辅相成,使读者更容易地掌握技术,更快地融会贯通。 本书读者对象为高等院校计算机...

    Servlet和JSP迈上新台阶

    即将面世的J2EE 1.4提供用Java开发Web应用程序的新的Servlet 2.4和JavaServer Pages (JSP) 2.0技术.本文展示了这两种技术的新特性,并在适当的地方提供每个特性的示例代码

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4 J2EE核心技术 1.4.1 Servlet 1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    1.4 J2EE核心技术 1.4.1 Servlet 1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4 J2EE核心技术 1.4.1 Servlet 1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务...

    jsp servlet 入门学习资料-新手一看就懂

    1.4 本书用到的软件及获取 第2章 预备知识 2.1 Java程序设计基础 2.1.1 Java语言规则 2.1.2 Java变量和函数 2.1.3 子类 2.1.4 this和super 2.1.5 类的类型 2.1.6 抽象类 2.1.7 接口 2.1.8 包 2.2 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4 J2EE核心技术 1.4.1 Servlet 1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务...

    struts_jstl

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt " %> <%@ taglib prefix="my" uri="http://www.bjsxt.com/functions " %><br> 注意:JSTL必须在能够支持J2ee1.4/servlet2.4/jsp2.0版本...

    Java_EE_6规范中文版

    2.13 J2EE 1.3中的变化 2.14 J2EE 1.4中的变化 2.15 Java EE 5中的变化 第3章 安全 3.1 简介 3.2 一个简单的例子 3.3 安全体系结构 3.4 用户验证的必要条件 3.5 授权条件 3.6 部署标准 3.7 未来的方向 ...

    weblogic平台J2EE调优策略

    1.3.3 Servlet代码调优 1.4 JMS代码调优 1.4.1 注意必要的事项,避免使用不必要的特征 1.4.2 消息类型的选择 1.4.3 确认方式的选择和JMS事务 1.5 EJB代码调优 1.5.1 有效使用设计模式 1.5.2 使用EJB和WebLogic的特性...

    JSP高级编程(全)

    第三部分 JDBC 新技术及其在JSP/Servlet 中的应用 第9 章 JDBC 2.0/3.0 API 的新特性 9.1 JDBC API 2.0 的新特性 9.2 JDBC API 2.0 简介 9.3 JDBC API 3.0 简介 9.4 附录JDBC 数据类型和Java 数据类型的映射关系 9.5...

    JSP高级编程          

    第三部分 JDBC 新技术及其在JSP/Servlet 中的应用 第9 章 JDBC 2.0/3.0 API 的新特性 9.1 JDBC API 2.0 的新特性 9.2 JDBC API 2.0 简介 9.3 JDBC API 3.0 简介 目录 9.4 附录JDBC 数据类型和Java 数据类型的映射...

    (超赞)JAVA精华之--深入JAVA API

    1.4 java中的一些常用词汇 1.5 J2SE学习中的30个基本概念 1.6 Java线程 1.7 Java 5.0多线程编程 1.8 Java Socket编程 1.9 Java的内存泄漏 1.10 抽象类与接口的区别 1.11 Java变量类型间的相互转换 2 JAVA与WEB 2.1 ...

    jsp从入门到高级编程

    1.4 本书用到的软件及获取 第2章 预备知识 2.1 Java程序设计基础 2.1.1 Java语言规则 2.1.2 Java变量和函数 2.1.3 子类 2.1.4 this和super 2.1.5 类的类型 2.1.6 抽象类 2.1.7 接口 2.1.8 包 2.2 ...

    JSP高级教程

    1.4 本书用到的软件及获取 第2章 预备知识 2.1 Java程序设计基础 2.1.1 Java语言规则 2.1.2 Java变量和函数 2.1.3 子类 2.1.4 this和super 2.1.5 类的类型 2.1.6 抽象类 2.1.7 接口 2.1.8 包 2.2 ...

    JAVA SE学习精华集锦

    1.4 java中的一些常用词汇 56 1.5 J2SE学习中的30个基本概念 58 1.6 Java线程 60 1.7 Java 5.0多线程编程 65 1.8 Java Socket编程 80 1.9 Java的内存泄漏 85 1.10 抽象类与接口的区别 86 1.11 Java变量类型间的相互...

    hibernate+中文api

    1.4. 第三部分 - EventManager web应用程序 1.4.1. 编写基本的servlet 1.4.2. 处理与渲染 1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. ...

    JSP高级编程

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    Spring Security 中文教程.pdf

    2.3. 高级web特性 2.3.1. Remember-Me认证 2.3.2. 添加HTTP/HTTPS信道安全 2.3.3. 会话管理 2.3.3.1. 检测超时 2.3.3.2. 同步会话控制 2.3.3.3. 防止Session固定攻击 2.3.4. 对OpenID的支持 2.3.4.1...

Global site tag (gtag.js) - Google Analytics