Microsoft Word - 第4章 Servlet技术—样章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第4章 Servlet技术—样章.doc"

Transcription

1 第 4 章 Servlet 技术 学习目标 u 熟悉 Servlet 在生命周期中调用的方法 u 掌握 HttpServlet 类的作用及其使用 u 掌握 Servlet 虚拟路径的映射 u 掌握 ServletConfig 和 ServletContext 接口的使用 随着 Web 应用业务需求的增多, 动态 Web 资源的开发变得越来越重要 目前, 很多公司都提供了开发动态 Web 资源的相关技术, 其中比较常见的有 ASP PHP JSP 和 Servlet 等 基于 Java 的动态 Web 资源开发,SUN 公司提供了 Servlet 和 JSP 两种技术 接下来, 本章将针对 Servlet 技术的相关知识进行详细地讲解 4.1 Servlet 开发入门 Servlet 接口 针对 Servlet 技术的开发,SUN 公司提供了一系列接口和类, 其中最重要的是 javax.servlet.servlet 接口 Servlet 就是一种实现了 Servlet 接口的类, 它是由 web 容器负责创建并调用, 用于接收和响应用户的请求 在 Servlet 接口中定义了 5 个抽象方法, 具体如表 4-1 所示 表 4-1 Servlet 接口的方法方法声明功能描述负责 Servlet 初始化工作 容器在创建好 Servlet 对象后, 就会调 void init(servletconfig config) 用此方法 该方法接收一个 ServletConfig 类型的参数,Servlet 容器通过这个参数向 Servlet 传递初始化配置信息返回容器调用 init(servletconfig config) 方法时传递给 Servlet 的 ServletConfig getservletconfig() ServletConfig 对象返回一个字符串, 其中包含了关于 Servlet 的信息, 例如, 作者 String getservletinfo() 版本和版权等信息负责响应用户的请求, 当容器接收到客户端访问 Servlet 对象的请求时, 就会调用此方法 容器会构造一个表示客户端请求信息的 ServletRequest 对象和一个用于响应客户端的 void service(servletrequest ServletResponse 对象作为参数传递给 service() 方法 在 service() request,servletresponse response) 方法中, 可以通过 ServletRequest 对象得到客户端的相关信息和请求信息, 在对请求进行处理后, 调用 ServletResponse 对象的方法设置响应信息负责释放 Servlet 对象占用的资源 当 Servlet 对象被销毁时, 容 void destroy() 器会调用此方法 1

2 表 4-1 列举了 Servlet 接口中的 5 个方法, 其中,init() service() 和 destroy() 这三个方法都是 Servlet 生命周期方法, 它们会在某个特定的时刻被调用 另外,getServletInfo() 方法用于返回 Servlet 的相关信息 getservletconfig() 方法用于返回 ServletConfig 对象, 该对象包含 Servlet 的初始化信息 需要注意的是, 表中提及的 Servlet 容器指的是 Web 服务器 实现第一个 Servlet 程序 为了帮助大家快速学习 Servlet 开发, 接下来, 分步骤实现一个 Servlet 程序, 具体如下 : (1) 在目录 D:\cn\itcast\firstapp\servlet 下编写一个 Servlet 由于直接实现 Servlet 接口来编写 Servlet 很不方便, 需要实现很多方法 因此, 我们可以通过继承 Servlet 接口的实现类 javax.servlet.genericserlvet 来实现 具体代码如例 4-1 所示 例 4-1 HelloWorldServlet.java 1 package cn.itcast.firstapp.servlet; 2 import java.io.*; 3 import javax.servlet.*; 4 public class HelloWorldServlet extends GenericServlet { 5 public void service(servletrequest request, ServletResponse response) 6 throws ServletException, IOException { 7 // 得到输出流 PrinterWriter 对象,Servlet 使用输出流来产生响应 8 PrintWriter out = response.getwriter(); 9 // 使用输出流对象向客户端发送字符数据 10 out.println("hello World"); 11 } 12 } 从例 4-1 中可以看出,HelloWorldServlet 类继承 GenericServlet 后, 只实现了 service() 方法 这是因为 GenericServlet 类除了 Servlet 接口的 service() 方法外, 其它方法都已经实现 由此可见, 继承 GenericServlet 类比实现 Servlet 接口更加简便 (2) 打开命令行窗口, 进入 HelloWorldServlet.java 所在目录, 编译 HelloWorldServlet.java 文件, 程序报错, 如图 4-1 所示 2

3 图 4-1 编译 HelloWorldServlet.java 的出错信息从图 4-1 中可以看出, 编译错误提示 程序包 javax.servlet 不存在 这是因为 Java 编译器在 CLASSPATH 环境变量中没有找到 javax.servlet 包 因此, 如果想编译 Servlet, 需要将 Servlet 相关 jar 包所在的目录添加到 ClASSPATH 环境变量中 (3) 由于 Servlet 程序是一个 JavaEE 程序而不是 JavaSE 程序, 因此所有的 jar 文件都需要自己手动的加入 classpath 环境变量中 进入 Tomcat 安装目录下的 lib 目录, 里面包含了许多与 Tomcat 服务器相关的 jar 文件, 其中 servlet-api.jar 文件就是与 Servlet 相关的 jar 文件, 如图 4-2 所示 图 4-2 Servlet-api.jar (4) 打开命令行窗口, 通过 set classpath 命令将图 4-2 所示的 servlet-api.jar 文件所在的目录添加到 CLASSPATH 环境变量中, 如图 4-3 所示 3

4 图 4-3 设置 CLASSPATH 环境变量 (5) 重新编译 HelloWorldServlet.java, 如果程序编译通过, 则会生成一个 HelloWorldServlet.class 文 件, 如图 4-4 所示 图 4-4 HelloWorldServlet.class 文件 (5) 在 Tomcat 的 webapps 下创建目录 chapter04,chapter04 为 Web 应用的名称, 然后在 chapter04 目录下创建 /WEB-INF/classes 目录, 将图 4-4 所示的 HelloWorldServlet.class 文件拷贝到 classes 目录下, 需要注意的是, 在拷贝时要将该文件所在的包目录 (/cn/itcast/firstapp/servlet) 一起拷贝过去, 如图 4-5 所示 图 4-5 classes 目录下的 HelloWorldServlet.class 文件 (6) 进入目录 WEB-INF, 编写一个 web.xml 文件, 关于 web.xml 文件的编写方式可以参考 Tomcat 安装目录下的 web.xml 文件, 该文件位于 examples/web-inf 子目录下 下面是 chapter04/web-inf 目录下 web.xml 中的配置代码 : <?xml version="1.0" encoding="iso "?> <web-app xmlns=" xmlns:xsi=" xsi:schemalocation=" version="3.0"> <servlet> <servlet-name>helloworldservlet</servlet-name> <servlet-class>cn.itcast.firstapp.servlet.helloworldservlet</servlet-class> 4

5 </servlet> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/helloworldservlet</url-pattern> </servlet-mapping> </web-app> 在上面的配置信息中, 元素 <servlet> 用于注册 Servlet, 它的两个子元素 <servlet-name> 和 <servlet-class> 分别用来指定 Servlet 名称及其完整类名 元素 <servlet-mapping> 用于映射 Servlet 对外访问的虚拟路径, 它的子元素 <servlet-name> 的值必须和 <servlet> 元素中 <servlet-name> 相同, 子元素 <url-pattern> 则是用于指定访问该 Servlet 的虚拟路径, 该路径以正斜线 (/) 开头, 代表当前 Web 应用程序的根目录 (7) 启动 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 HelloWorldServlet, 浏览器显示的结果如图 4-6 所示 图 4-6 运行结果 从图 4-6 中可以看出, 客户端可以正常访问 Tomcat 服务器的 Servlet 至此, 我们的第一个 Servlet 程 序实现了 Servlet 的生命周期 在 Java 中, 任何对象都有生命周期,Servlet 也不例外, 接下来, 通过一张图来描述 Servlet 的生命周 期, 如图 4-7 所示 客户端 Servlet 容器 Servlet 1 发送请求 2 解析请求 3 创建 Servlet 实例对象 4 调用 init() 方法 5 调用 service() 方法 7 返回响应 6 输出响应消息 8 调用 destory() 方法 5

6 图 4-7 Servlet 的生命周期图 4-7 描述了 Servlet 的生命周期 按照功能的不同, 大致可以将 Servlet 的生命周期分为三个阶段, 分别是初始化阶段 运行阶段和销毁阶段 接下来, 针对 Servlet 生命周期的这三个阶段进行详细地讲解, 具体如下 : l 初始化阶段当客户端向 Servlet 容器发出 HTTP 请求要求访问 Servlet 时,Servlet 容器首先会解析请求, 检查内存中是否已经有了该 Serlvet 对象, 如果有直接使用该 Serlvet 对象, 如果没有就创建 Servlet 实例对象, 然后通过调用 init() 方法实现 Servlet 的初始化工作 需要注意的是, 在 Servlet 的整个生命周期内, 它的 init() 方法只被调用一次 l 运行阶段这是 Servlet 生命周期中最重要的阶段, 在这个阶段,Servlet 容器会为这个请求创建代表 HTTP 请求的 ServletRequest 对象和代表 HTTP 响应的 ServletResponse 对象, 然后将它们作为参数传递给 Servlet 的 service() 方法 service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求, 通过 ServletResponse 对象生成响应结果 在 Servlet 的整个生命周期内, 对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法, 并且创建新的 ServletRequest 和 ServletResponse 对象, 也就是说,service() 方法在 Servlet 的整个生命周期中会被调用多次 l 销毁阶段当服务器关闭或 web 应用被移除出容器时,Serlvet 随着 web 应用的销毁而销毁 在销毁 Servlet 之前, Servlet 容器会调用 Servlet 的 destroy() 方法, 以便让 Servlet 对象释放它所占用的资源 在 Servlet 的整个生命周期中,destroy() 方法也只被调用一次 需要注意的是,Servlet 对象一旦创建就会驻留在内存中等待客户端的访问, 直到服务器关闭, 或 web 应用被移除出容器时 Servlet 对象才会销毁 接下来, 通过一个具体的案例来演示 Servlet 生命周期方法的执行效果 对例 4-1 进行修改, 在 HelloWorldServlet 中重写 init() 方法和 destroy() 方法, 修改后的代码如例 4-2 所示 例 4-2 HelloWorldServlet.java 1 package cn.itcast.firstapp.servlet; 2 import javax.servlet.*; 3 public class HelloWorldServlet extends GenericServlet { 4 public void init(servletconfig config) throws ServletException { 5 System.out.println("init methed is called"); 6 } 7 public void service(servletrequest request, ServletResponse response) 8 throws ServletException { 9 System.out.println("Hello World"); 10 } 11 public void destroy() { 12 System.out.println("destroy method is called"); 13 } 14 } 重新编译 HelloWorldServlet.java 文件, 将编译后生成的 class 文件拷贝到 chapter04 的 WEB-INF/classes 目录 启动 Tomcat 服务器, 在浏览器的地址栏输入 URL 地址 访问 helloworldservlet,tomcat 控制台的打印结果如图 4-8 所示 6

7 图 4-8 运行结果从图 4-8 可以看出,Tomcat 的控制台输出了 init methed is called 和 Hello World 语句 说明用户第一次访问 HelloWorldServlet 时,Tomcat 就创建了 HelloWorldServlet 对象, 并在调用 service() 方法处理用户请求之前, 通过 init() 方法实现了 Servlet 的初始化 刷新浏览器, 多次访问 HelloWorldServlet,Tomcat 控制台的打印结果如图 4-9 所示 图 4-9 运行结果从图 4-9 中可以看出,Tomcat 控制台只会输出 Hello World 语句 由此可见,init() 方法只在第一次访问时执行,service() 方法则在每次访问时都被执行 如果想将 HelloWorldServlet 移除, 可以通过 Tomcat 的管理平台终止 Web 应用 chapter04, 此时,Servlet 容器会调用 HelloWorldServlet 的 destroy() 方法, 在 Tomcat 控制台打印出 destroy method is called 语句, 如图 4-10 所示 7

8 图 4-10 运行结果 & 多学一招 : 自动加载 Servlet 程序有时候, 我们希望某些 Servlet 程序可以在 Tomcat 启动时随即启动 例如, 当启动一个 Web 项目时, 首先需要对数据库信息进行初始化 这时, 我们只需要使用 web.xml 文件中 <load-on-startup> 元素, 将初始化数据库的 Servlet 配置为随着 web 应用启动而启动的 Servlet 即可 <load-on-startup> 元素是 <servlet> 元素的一个子元素, 它用于指定 Servlet 被加载的时机和顺序 在 <load-on-startup> 元素中, 其值必须是一个整数 如果这个值是一个负数, 或者没有设定这个元素, Servlet 容器将在客户端首次请求这个 Servlet 时加载它 ; 如果这个值是正整数或 0,Servlet 容器将在 Web 应用启动时加载并初始化 Servlet, 并且 <load-on-startup> 的值越小, 它对应的 Servlet 就越先被加载 接下来, 将例 4-2 中 HelloWorldServlet 配置为 Tomcat 启动时自动加载的 Servlet, 具体配置方式如下所示 : <servlet> <servlet-name>helloworldservlet</servlet-name> <servlet-class>cn.itcast.firstapp.servlet.helloworldservlet</servlet-class> <!-- 设置 Servlet 在 Web 应用启动时初始化 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/helloworldservlet</url-pattern> </servlet-mapping> 启动 Tomcat 服务器, 在 Tomcat 控制台输出的信息中, 会发现如图 4-11 所示的内容 8

9 图 4-11 运行结果 从图 4-11 中可以看出,HelloWorldServlet 的初始化信息被打印了出来, 由此说明,HelloWorldServlet 在 Tomcat 启动时就被自动加载并且初始化了 4.2 Servlet 高级应用 HttpServlet 由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互, 因此, 在 Servlet 接口中, 提供了一个抽象类 javax.servlet.http.httpservlet, 它是 GenericServlet 的子类, 专门用于创建应用于 HTTP 协议的 Servlet 为了大家可以更好地了解 HttpServlet, 接下来, 我们看一下 HttpServlet 类的源代码片段, 具体如下 : 1 public abstract class HttpServlet extends GenericServlet { 2 protected void doget(httpservletrequest req, HttpServletResponse resp) 3 throws ServletException, IOException 4 { } 7 protected void dopost(httpservletrequest req, HttpServletResponse resp) 8 throws ServletException, IOException { } 11 protected void service(httpservletrequest req, HttpServletResponse resp) 12 throws ServletException, IOException { 13 String method = req.getmethod(); 14 if (method.equals(method_get)) { 15 long lastmodified = getlastmodified(req); 16 if (lastmodified == -1) { 17 // servlet doesn't support if-modified-since, no reason 18 // to go through further expensive logic 19 doget(req, resp); 20 } else { 9

10 21 long ifmodifiedsince = req.getdateheader(header_ifmodsince); 22 if (ifmodifiedsince < (lastmodified / 1000 * 1000)) { 23 // If the servlet mod time is later, call doget() 24 // Round down to the nearest second for a proper compare 25 // A ifmodifiedsince of -1 will always be less 26 maybesetlastmodified(resp, lastmodified); 27 doget(req, resp); 28 } else { 29 resp.setstatus(httpservletresponse.sc_not_modified); 30 } 31 } 32 } else if (method.equals(method_head)) { 33 long lastmodified = getlastmodified(req); 34 maybesetlastmodified(resp, lastmodified); 35 dohead(req, resp); 36 } else if (method.equals(method_post)) { 37 dopost(req, resp); 38 } else if (method.equals(method_put)) { 39 doput(req, resp); 40 } else if (method.equals(method_delete)) { 41 dodelete(req, resp); 42 } else if (method.equals(method_options)) { 43 dooptions(req,resp); 44 } else if (method.equals(method_trace)) { 45 dotrace(req,resp); 46 } else { 47 String errmsg = lstrings.getstring("http.method_not_implemented"); 48 Object[] errargs = new Object[1]; 49 errargs[0] = method; 50 errmsg = MessageFormat.format(errMsg, errargs); 51 resp.senderror(httpservletresponse.sc_not_implemented, errmsg); 52 } 53 } 54 public void service(servletrequest req, ServletResponse res) 55 throws ServletException, IOException { 56 HttpServletRequest request; 57 HttpServletResponse response; 58 try { 59 request = (HttpServletRequest) req; 60 response = (HttpServletResponse) res; 61 } catch (ClassCastException e) { 62 throw new ServletException("non-HTTP request or response"); 63 } 64 service(request, response); 10

11 65 } 66 } 通过分析 HttpServlet 的源代码片段, 发现 HttpServlet 主要有两大功能, 第一是根据用户请求方式的不 同, 定义相应的 doxxx() 方法处理用户请求 例如, 与 GET 请求方式对应的 doget() 方法, 与 POST 方式对 应的 dopost() 方法 第二是通过 service() 方法将 HTTP 请求和响应分别转为 HttpServletRequest 和 HttpServletResponse 类型的对象 需要注意的是, 由于 HttpServlet 类在重写的 service() 方法中, 为每一种 HTTP 请求方式都定义了对应 的 doxxx() 方法, 因此, 当定义的类继承 HttpServlet 后, 只需根据请求方式, 重写对应的 doxxx() 方法即可, 而不需要重写 service() 方法 : 动手体验 :HttpServlet 中的 doget() 和 dopost() 方法 由于大多数客户端的请求方式都是 GET 和 POST, 因此学习如何使用 HttpServlet 中 doget() 和 dopost() 方法变得相当重要 接下来, 通过一个具体的案例, 分步骤讲解 HttpServlet 中 doget() 和 dopost() 方法 的使用, 具体如下 : (1) 在目录 D:\cn\itcast\firstapp\servlet 下编写 RequestMethodServlet 类, 并且通过继承 HttpServlet 类, 实现 doget() 和 dopost() 方法的重写, 如例 4-3 所示 例 package cn.itcast.firstapp.servlet; 2 import java.io.*; 3 import javax.servlet.*; 4 import javax.servlet.http.*; RequestMethodServlet.java 5 public class RequestMethodServlet extends HttpServlet { 6 public void doget(httpservletrequest request, HttpServletResponse response) 7 throws ServletException, IOException { 8 PrintWriter out = response.getwriter(); 9 out.write("this is doget method"); 10 } 11 public void dopost(httpservletrequest request, HttpServletResponse response) 12 throws ServletException, IOException { 13 PrintWriter out = response.getwriter(); 14 out.write("this is dopost method"); 15 } 16 } (2) 在 chapter04 应用的 web.xml 中配置 RequestMethodServlet 的映射路径, 配置信息如下所示 : 1 <servlet> 2 <servlet-name>requestmethodservlet</servlet-name> 3 <servlet-class>cn.itcast.firstapp.servlet.requestmethodservlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>requestmethodservlet</servlet-name> 7 <url-pattern>/requestmethodservlet</url-pattern> 8 </servlet-mapping> 11

12 (3) 编译 RequestMethodServlet.java 文件, 并将编译后生成的 RequestMethodServlet.class 文件拷贝到 Tomcat 安装目录下的 webapps\chapter04\web-inf\classes 文件中 (4) 采用 GET 方式访问 RequestMethodServlet 启动 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 浏览器显示的结果如图 4-12 所示 图 4-12 运行结果从图 4-12 中可以看出, 浏览器显示出了 this is doget method 语句 由此可见, 采用 GET 方式请求 Servlet 时, 会自动调用 doget() 方法 (5) 采用 POST 方式访问 RequestMethodServlet 在目录 webapps\chapter04 下编写一个名为 form.html 文件, 并将其中表单的提交方式设置为 POST, 如例 4-4 所示 例 4-4 form.html <form action="/chapter04/requestmethodservlet" method="post"> 姓名 <input type="text" name="name" /><br /> 密码 <input type="text" name="psw" /><br /> <input type="submit" value=" 提交 "/> </form> (6) 启动 Tomcat 服务器, 在浏览器的地址栏中输入 访问 form.html 文件, 浏览器显示的结果如图 4-13 所示 图 4-13 运行结果 点击 提交 按钮, 浏览器界面跳转到 RequestMethodServlet, 显示的结果如图 4-14 所示 图 4-14 运行结果从图 4-14 中可以看出, 浏览器显示出了 this is dopost method 语句 由此可见, 采用 POST 方式请求 Servlet 时, 会自动调用 dopost() 方法 需要注意的是, 如果 GET 和 POST 请求的处理方式一致, 则可以在 dopost() 方法中直接调用 doget() 方法, 具体示例如下 : public void doget(httpservletrequest request,httpservletresponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.write("the same way of the doget and dopost method"); } 12

13 public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { this.doget(request, response); } 使用 Eclipse 工具开发 Servlet 为了帮助大家了解 Servlet 的开发过程, 在本节之前实现的 Servlet 都没有借助开发工具, 开发步骤相当繁琐 但是, 在实际开发中, 通常都会使用 Eclipse 工具完成 Servlet 的开发,Eclipse 不仅会自动编译 Servlet, 还会自动创建 web.xml 文件, 完成 Servlet 虚拟路径的映射 接下来, 分步骤为大家讲解如何使用 Eclipse 工具开发 Servlet, 具体如下 : 1 新建 Web 工程选择 Eclipse 上方工具栏的 File à New à Other 选项, 进入新建工程的界面, 如图 4-15 所示 选择 Dynamic Web Project 点击 Next 图 4-15 新建工程的界面 选择图 4-15 所示的 Dynamic Web Project 选项, 单击 Next 按钮, 进入填写工程信息的界面, 如 图 4-16 所示 13

14 Web 应用名称 运行环境 动态 web 模块版本 点击 Next 图 4-16 填写工程信息的界面 在图 4-16 中, 我们填写的工程名为 chapter04, 选择的运行环境是 Tomcat 7.0, 点击 Next 按钮, 进 入 Web 工程的配置界面, 如图 4-17 所示 Java 程序的源文件 点击 Next 图 4-17 Web 工程的配置界面 14

15 在图 4-17 中,Eclipse 会自动将 src 目录下的文件编译成 class 文件存放到 classes 目录下 需要注意的 是,src 目录和 classes 目录都是可以修改的, 在此, 我们不作任何修改, 采用默认设置的目录 点击 Next 按钮, 进入下一个配置页面, 如图 4-18 所示 Web 应用的根目录 Web 资源存放的目录 点击 Finish 完成 图 4-18 New Dynamic Web Project 选项在图 4-18 中, Context root 选项用于指定 Web 工程的根目录, Content directory 选项用于指定存放 Web 资源的目录 在此, 我们采用默认设置的目录, 将 chapter04 作为 web 资源的根目录, 将 WebContent 作为存放 Web 资源的目录 点击 Finish 按钮, 完成 Web 工程的配置, 创建好的 Web 应用目录如图 4-19 所示 src 程序源文件 Web 应用的配置文件 2 创建 Servlet 程序 图 4-19 创建好的 Web 应用目录 15

16 创建好 Web 工程后, 接下来, 就可以开始新建 Servlet 了 右击图 4-19 所示的 src 文件, 选择 New à Other 选项, 进入创建 Servlet 的界面, 如图 4-20 所示 选择 Servlet 点击 Next 示 图 4-20 创建 Servlet 的界面 在图 4-20 中, 选择 Servlet 选项, 单击 Next 按钮, 进入填写 Servlet 信息的界面, 如图 4-21 所 指定 Servlet 所在的包 创建的 Servlet 的名称 点击 Next 图 4-21 填写 Servlet 的界面在图 4-21 中, Java package 用于指定 Servlet 所在包的名称, Class name 用于指定 Servlet 的名称 在此, 我们创建的 Servlet 的名称为 TestServlet01, 它所在的包的名称为 cn.itcast.chapter04.servlet 点击 Next 按钮, 进入配置 Servlet 的界面, 如图 4-22 所示 16

17 <servlet-name> 元素的内容 <url-pattern> 元素的内容 点击 Next 图 4-22 Servlet 的配置界面在图 4-22 中, Name 选项用来指定 web.xml 文件中 <servlet-name> 元素的内容, URL mapping 文本框用来指定 web.xml 文件中 <url-pattern> 元素的内容, 这两个选项的内容都是可以修改的, 在此, 我们不作任何修改, 采用默认设置的内容, 点击 Next 按钮, 进入下一个配置界面, 如图 4-23 所示 勾选需要自动创建的方法 点击 Finish 完成 图 4-23 配置界面在图 4-23 中, 可以勾选需要创建的方法 在此, 我们只选择 Inherited abstract methods doget 和 dopost 方法, 点击 Finish 按钮, 完成 Servlet 的创建 TestServlet01 创建后的界面如图 4-24 所示 17

18 图 4-24 创建后的 TestServlet01 界面 由于 Eclipse 工具在创建 Servlet 时会自动将 Servlet 的相关配置文件添加到 web.xml, 因此打开 web.xml 文件, 可以看到 TestServlet01 的虚拟映射路径自动进行了配置, 如图 4-25 所示 图 4-25 web.xml 文件至此,Servlet 创建成功了 为了更好的演示 Servlet 的运行效果, 接下来在该 Servlet 的 doget() 和 dopost() 方法中添加一些代码, 具体如下 : protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { this.dopost(request, response); } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.print("this servlet is created by eclipse"); } 3 部署和访问 Servlet 打开 Servers 选项卡, 选中部署 Web 应用的 Tomcat 服务器 ( 关于 Tomcat 服务器的配置方式参考第二章 ), 右击并选择 add and Remove 选项, 如图 4-26 所示 18

19 图 4-26 Add and Remove 选项 单击图 4-26 所示的 Add and Remove 选项, 进入部署 Web 应用的界面, 如图 4-27 所示 图 4-27 部署 Web 应用的界面在图 4-27 中, Available 选项中的内容是还没有部署到 Tomcat 服务器的 Web 工程, Configured 选项中的内容是已经部署到 Tomcat 服务器的 Web 工程, 选中 chapter04, 点击 Add 按钮, 将 chapter04 工程添加到 Tomcat 服务器中, 如图 4-28 所示 19

20 点击 Finish 完成 图 4-28 将 chapter04 工程部署到 Tomcat 服务器点击图 4-28 所示的 Finish 按钮, 完成 Web 应用的部署 接下来, 启动 Eclipse 中的 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 TestServlet01, 浏览器显示的结果如图 4-29 所示 图 4-29 访问 EclipseServlet 至此, 我们使用 Eclipse 工具完成了 Servlet 的开发 值得一提的是,Eclipse 工具在 Web 开发中相当重 要, 大家应该熟练掌握 Eclipse 工具的使用 Servlet 虚拟路径的映射 在 web.xml 文件中, 一个 <servlert-mapping> 元素用于映射一个 Servlet 的对外访问路径, 该路径也称为虚拟路径 例如, 在 小节中,HelloWorldServlet 所映射的虚拟路径为 /HelloWorldServlet 创建好的 Servlet 只有映射成虚拟路径, 客户端才能对其进行访问 但是, 在映射 Servlet 时, 有一些细节问题需要注意, 比如 Servlet 的多重映射 在映射路径中使用通配符 配置缺省的 Servlet 等, 接下来, 针对这些问题进行详细地讲解, 具体如下 : 一 Servlet 的多重映射 20

21 Servlet 的多重映射指的是同一个 Servlet 可以被映射成多个虚拟路径 也就是说, 客户端可以通过多个路径实现对同一个 Servlet 的访问 Servlet 多重映射的实现方式有两种, 具体如下 : 1 配置多个 <servlet-mapping> 元素 以 小节的 TestServlet01 为例, 在 web.xml 文件中对 TestServlet01 虚拟路径的映射进行修改, 修改后的代码如下所示 : <servlet> <servlet-name>testservlet01</servlet-name> <servlet-class>cn.itcast.chapter04.servlet.testservlet01</servlet-class> </servlet> <servlet-mapping> <!-- 映射为 TestServlet01--> <servlet-name> TestServlet01</servlet-name> <url-pattern>/testservlet01</url-pattern> </servlet-mapping> <servlet-mapping> <!-- 映射为 Test01--> <servlet-name>testservlet01</servlet-name> <url-pattern>/test01</url-pattern> </servlet-mapping> 重启 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 TestServlet01, 浏览器显示的结果如图 4-30 所示 图 4-30 运行结果 在浏览器的地址栏中输入 URL 地址 访问 TestServlet01, 浏览器显 示的结果如图 4-31 所示 图 4-31 运行结果通过图 4-30 和图 4-31 的比较, 发现使用两个 URL 地址都可以正常访问 TestServlet01 由此可见, 通过配置多个 <servlet-mapping> 元素可以实现 Servlet 的多重映射 2 在一个 <servlet-mapping> 元素下配置多个 <url-pattern> 子元素 同样以 TestServlet01 为例, 在 web.xml 文件中对 TestServlet01 虚拟路径的映射进行修改, 修改后的代码如下所示 : <servlet> <servlet-name>testservlet01</servlet-name> <servlet-class>cn.itcast.chapter04.servlet.testservlet01</servlet-class> </servlet> <servlet-mapping> <!-- 映射为 TestServlet01 和 Test02--> 21

22 <servlet-name>testservlet01</servlet-name> <url-pattern>/testservlet01</url-pattern> <url-pattern>/test02</url-pattern> </servlet-mapping> 重启 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 TestServlet01, 浏览器显示的结果如图 4-32 所示 图 4-32 运行结果 在浏览器的地址栏中输入 URL 地址 访问 TestServlet01, 浏览器显 示的结果如图 4-33 所示 图 4-33 运行结果 通过图 4-32 和图 4-33 的比较, 发现使用两个 URL 地址都可以正常访问 TestServlet01 由此可见, 在 一个 <servlet-mapping> 元素下配置多个 <url-pattern> 子元素同样可以实现 Servlet 的多重映射 二 Servlet 映射路径中使用通配符 有时候, 我们希望某个目录下的所有路径都可以访问同一个 Servlet, 这时, 可以在 Servlet 映射的路 径中使用通配符 * 通配符的格式只有两种, 具体如下 : 1) 格式为 *. 扩展名, 例如 *.do 匹配以.do 结尾的所有 URL 地址 2) 格式为 /*, 例如 /abc/* 匹配以 /abc 开始的所有 URL 地址 需要注意的是, 这两种通配符的格式不能混合使用, 例如,/abc/*.do 就是不合法的映射路径 另外, 当客户端访问一个 Servlet 时, 如果请求的 URL 地址能够匹配多个虚拟路径, 那么 Tomcat 将采取最具体匹 配原则查找与请求 URL 最接近的虚拟映射路径 例如, 对于如下所示的一些映射关系 : Ø /abc/* 映射到 Servlet1 Ø /* 映射到 Servlet2 Ø /abc 映射到 Servlet3 Ø *.do 映射到 Servlet4 将发生如下一些行为 : Ø 当请求 URL 为 /abc/a.html, /abc/* 和 /* 都可以匹配这个 URL,Tomcat 会调用 Servlet1 Ø 当请求 URL 为 /abc, /abc/* 和 /abc 都可以匹配这个 URL,Tomcat 会调用 Servlet3 Ø 当请求 URL 为 /abc/a.do, *.do 和 /abc/* 都可以匹配这个 URL,Tomcat 会调用 Servlet1 Ø 当请求 URL 为 /a.do, /* 和 *.do 都可以匹配这个 URL,Tomcat 会调用 Servlet2 Ø 当请求 URL 为 /xxx/yyy/a.do, *.do 和 /* 都可以匹配这个 URL,Tomcat 会调用 Servlet2 三 缺省 Servlet 如果某个 Servlet 的映射路径仅仅是一个正斜线 (/), 那么这个 Servlet 就是当前 Web 应用的缺省 Servlet Servlet 服务器在接收到访问请求时, 如果在 web.xml 文件中找不到匹配的 <servlet-mapping> 元素的 URL, 22

23 就会将访问请求交给缺省 Servlet 处理, 也就是说, 缺省 Servlet 用于处理其他 Servlet 都不处理的访问请求 接下来对 小节的 TestServlet01 进行修改, 将其设置为缺省的 Servlet, 具体如下 : <servlet> <servlet-name>testservlet01</servlet-name> <servlet-class>cn.itcast.chapter04.servlet. TestServlet01</servlet-class> </servlet> <servlet-mapping> <servlet-name>testservlet01</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 启动 Tomcat 服务器, 在浏览器的地址栏中输入任意的 URL 地址 浏览器显示的结果如图 4-34 所示 图 4-34 运行结果从图 4-34 中可以看出, 当 URL 地址和 TestServlet01 的虚拟路径不匹配时, 浏览器仍然可以正常访问 TestServlet01 值得一提的是, 在 Tomcat 安装目录下的 web.xml 文件中也配置了一个缺省的 Servlet, 配置信息如下所示 : <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.defaultservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 在上面的配置信息中,org.apache.catalina.servlets.DefaultServlet 被设置为缺省的 Servlet, 它对 Tomcat 服务器上所有 Web 应用都起作用 当 Tomcat 服务器中的某个 Web 应用没有缺省 Servlet 时, 都会将 DefaultServlet 作为默认缺省的 Servlet 需要注意的是, 当客户端访问 Tomcat 服务器中的某个静态 HTML 文件时,DefaultServlet 会判断 HTML 是否存在, 如果存在, 就回将数据以流的形式回送给客户端, 否则会报告 404 错误 4.3 ServletConfig 和 ServletContext ServletConfig 接口 在 Servlet 运行期间, 经常需要一些辅助信息, 例如, 文件使用的编码, 使用 Servlet 程序的公司等, 这些信息可以在 web.xml 文件中使用一个或多个 <init-param> 元素进行配置 当 Tomcat 初始化一个 Servlet 23

24 时, 会将该 Servlet 的配置信息封装到一个 ServletConfig 对象中, 通过调用 init(servletconfig cofig) 方法将 ServletConfig 对象传递给 Servlet ServletConfig 定义了一系列获取配置信息的方法, 接下来通过一张表来描述 ServletConfig 的常用方法, 如表 4-2 所示 表 4-2 ServletConfig 接口的常用方法方法说明功能描述 String getinitparameter(string name) 根据初始化参数名返回对应的初始化参数值 Enumeration getinitparameternames() 返回一个 Enumeration 对象, 其中包含了所有的初始化参数名 ServletContext getservletcontext() 返回一个代表当前 Web 应用的 ServletContext 对象 String getservletname() 返回 Servlet 的名字, 即 web.xml 中 <servlet-name> 元素的值了解了 ServletConfig 接口的常用方法 接下来以 getinitparameter() 方法为例, 分步骤讲解该方法的使用, 具体如下 : (1) 首先在 web.xml 文件中为 Servlet 配置一些参数信息, 具体如下 : <servlet> <servlet-name>testservlet02</servlet-name> <servlet-class>cn.itcast.chapter04.servlet.testservlet02</servlet-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>testservlet02</servlet-name> <url-pattern>/testservlet02</url-pattern> </servlet-mapping> 上面的参数信息中 <init-param> 节点表示要设置的参数, 该节点中的 <param-name> 表示参数的名称, <param-value> 表示参数的值, 我们在 <init-param> 节点中为 TestServlet02 配置了一个名为 encoding 的参数, 并且参数的值为 UTF-8 (2) 编写 TestServlet02 类, 实现读取 web.xml 文件中的的参数信息,TestServlet02 的实现代码如例 4-5 所示 例 4-5 TestServlet02.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 public class TestServlet02 extends HttpServlet { 6 protected void doget(httpservletrequest request, 7 HttpServletResponse response) throws ServletException, IOException { 8 PrintWriter out = response.getwriter(); 9 // 获得 ServletConfig 对象 10 ServletConfig config = this.getservletconfig(); 11 // 获得参数名为 encoding 对应的参数值 12 String param = config.getinitparameter("encoding"); 13 out.println("encoding="+param); 14 } 24

25 15 protected void dopost(httpservletrequest request, 16 HttpServletResponse response) throws ServletException, IOException { 17 this.doget(request, response); 18 } 19 } (3) 启动 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 TestServlet02 访问 TestServlet02, 显示的结果如图 4-35 所示 图 4-35 运行结果 从图 4-35 可以看出, 在 web.xml 文件中为 TestServlet02 配置的编码信息被读取了出来 由此可见, 通 过 ServletConfig 对象可以获得 web.xml 文件中的参数信息 ServletContext 接口 当 Servlet 容器启动时, 会为每个 Web 应用创建一个唯一的 ServletContext 对象代表当前 Web 应用, 该对象不仅封装了当前 Web 应用的所有信息, 而且实现了多个 Servlet 之间数据的共享 接下来, 针对 ServletContext 接口的不同作用分别进行讲解, 具体如下 : 1 获取 Web 应用程序的初始化参数在 web.xml 文件中, 不仅可以配置 Servlet 的初始化信息, 还可以配置整个 Web 应用的初始化信息 Web 应用初始化参数的配置方式具体如下所示 : <context-param> <param-name>companyname</param-name> <param-value>itcast</param-value> </context-param> <context-param> <param-name>address</param-name> <param-value>beijing</param-value> </context-param> 在上面的示例中,<context-param> 元素位于根元素 <web-app> 中, 它的子元素 <param-name> 和 <param-value> 分别用来指定参数的名字和参数值 要想获取这些参数信息, 可以使用 ServletContext 接口, 它定义了 getinitparameternames() 和 getinitparameter(string name) 方法分别用来获取参数名和参数值 接下来, 通过一个案例来演示如何使用 ServletContext 接口获取 Web 应用程序的初始化参数, 如例 4-6 所示 例 4-6 TestServlet03.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import java.util.*; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 public class TestServlet03 extends HttpServlet { 25

26 7 public void doget(httpservletrequest request, HttpServletResponse response) 8 throws ServletException, IOException { 9 PrintWriter out = response.getwriter(); 10 // 得到 ServletContext 对象 11 ServletContext context = this.getservletcontext(); 12 // 得到包含所有初始化参数名的 Enumeration 对象 13 Enumeration<String> paramnames = context.getinitparameternames(); 14 // 遍历所有的初始化参数名, 得到相应的参数值, 打印到控制台 15 out.println("all the paramname and paramvalue are following:"); 16 // 遍历所有的初始化参数名, 得到相应的参数值并打印 17 while (paramnames.hasmoreelements()) { 18 String name = paramnames.nextelement(); 19 String value = context.getinitparameter(name); 20 out.println(name + ": " + value); 21 out.println("<br>"); 22 } 23 } 24 public void dopost(httpservletrequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 this.doget(request, response); 27 } 28 } 在例 4-6 中, 当通过 this.getservletcontext() 方法获取到 ServletContext 对象后, 首先调用 getinitparameternames () 方法, 获取到包含所有初始化参数名的 Enumeration 对象, 然后遍历 Enumeration 对象, 根据获取到的参数名, 通过 getinitparamter(string name) 方法得到对应的参数值 启动 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 TestServlet03, 浏览器显示的结果如图 4-36 所示 图 4-36 运行结果从图 4-36 中可以看出, 在 web.xml 文件中配置的信息被读取了出来 由此可见, 通过 ServletContext 对象可以获取到 Web 应用的初始化参数 2 实现多个 Servlet 对象共享数据由于一个 Web 应用中的所有 Servlet 共享同一个 ServletContext 对象, 因此 ServletContext 对象的域属性可以被该 Web 应用中的所有 Servlet 访问 在 ServletContext 接口中定义了分别用于增加 删除 设置 ServletContext 域属性的四个方法, 如表 4-3 所示 表 4-3 ServletContext 接口的方法方法说明功能描述返回一个 Enumeration 对象, 该对象包含了所有存放在 Enumeration getattributenames() ServletContext 中的所有域属性名 26

27 Object getattibute(string name) 根据参数指定的属性名返回一个与之匹配的域属性值根据参数指定的域属性名, 从 ServletContext 中删除匹配的域 void removeattribute(string name) 属性 void setattribute(string name,object 设置 ServletContext 的域属性, 其中 name 是域属性名,obj 是 obj) 域属性值了解了 ServletContext 接口中操作属性的方法, 接下来通过一个案例来学习这些方法的使用, 如例 所示 例 4-7 TestServlet04.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 public class TestServlet04 extends HttpServlet { 6 public void doget(httpservletrequest request, HttpServletResponse response) 7 throws ServletException, IOException { 8 ServletContext context = this.getservletcontext(); 9 // 通过 setattribute() 方法设置属性值 10 context.setattribute("data", "this servlet save data"); 11 } 12 public void dopost(httpservletrequest request, HttpServletResponse response) 13 throws ServletException, IOException { 14 this.doget(request, response); 15 } 16 } 例 4-8 TestServlet05.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 public class TestServlet05 extends HttpServlet { 6 public void doget(httpservletrequest request, HttpServletResponse response) 7 throws ServletException, IOException { 8 PrintWriter out = response.getwriter(); 9 ServletContext context = this.getservletcontext(); 10 // 通过 getattribute() 方法获取属性值 11 String data = (String) context.getattribute("data"); 12 out.println(data); 13 } 14 public void dopost(httpservletrequest request, HttpServletResponse response) 15 throws ServletException, IOException { 16 this.doget(request, response); 17 } 18 } 27

28 在例 4-7 中,setAttribute() 方法用于设置 ServletContext 对象的属性值 在例 4-8 中,getAttribute() 方法用于获取 ServletContext 对象的属性值 为了验证 ServletContext 对象是否可以实现多个 Servlet 数据的共享, 启动 Tomcat 服务器, 首先在浏览器的地址栏中输入 URL 地址 访问 TestServlet04, 将数据存入 ServletContext 对象, 然后在浏览器的地址栏中输入 URL 地址 访问 TestServlet05, 浏览器显示的结果如图 4-37 所示 图 4-37 运行结果从图 4-37 中可以看出, 浏览器显示出了 ServletContext 对象存储的属性 由此说明,ServletContext 对象所存储的数据可以被多个 Servlet 所共享 3 读取 Web 应用下的资源文件有时候, 希望读取 Web 应用中的一些资源文件, 比如配置文件, 图片等等 为此, 在 ServletContext 接口中定义了一些读取 Web 资源的方法, 这些方法是依靠 Servlet 容器来实现的 Servlet 容器根据资源文件相对于 Web 应用的路径, 返回关联资源文件的 IO 流 资源文件在文件系统的绝对路径等 表 4-4 列举了 ServletContext 接口中用于获取资源路径的相关方法, 具体如下 : 表 4-4 ServletContext 接口的常用方法方法说明功能描述返回一个 Set 集合, 集合中包含资源目录中子目录和文件的路径名 Set getresourcepaths(string path) 称 参数 path 必须以正斜线 (/) 开始, 指定匹配资源的部分路径返回资源文件在服务器文件系统上的真实路径 ( 文件的绝对路径 ) 参数 path 代表资源文件的虚拟路径, 它应该以正斜线开始 (/) 开始, / String getrealpath(string path) 表示当前 Web 应用的根目录, 如果 Servlet 容器不能将虚拟路径转换为文件系统的真实路径, 则返回 null 返回映射到某个资源文件的 URL 对象 参数 path 必须以正斜线 (/) URL getresource(string path) 开始, / 表示当前 Web 应用的根目录 InputStream 返回映射到某个资源文件的 InputStream 输入流对象 参数 path 传递 getresourceasstream(string path) 规则和 getresource() 方法完全一致了解了 ServletContext 接口中用于获得 Web 资源路径的方法, 接下来通过一个案例, 分步骤演示如何使用 ServletContext 对象读取资源文件, 具体如下 : (1) 创建一个资源文件 在 Eclipse 中右击 src 目录, 选择 New > Other 选项, 进入创建文件的界面, 如图 4-38 所示 28

29 点击 Next 图 4-38 新建文件的界面 点击图 4-38 所示的 Next 按钮, 进入填写文件名称的界面, 如图 4-39 所示 点击 Finish 图 4-39 填写文件名称的界面 29

30 在图 4-39 中, File name 文本框中的内容为资源文件的名称, 在此, 我们创建的资源文件名为 itcast.properties, 并且选择存放的目录为 src 目录 点击 Finish 按钮, 完成配置文件的创建 在创建好的 itcast.properties 文件中, 输入如下所示的配置信息 : Company = itcast Address = Beijing 需要注意的是,Eclipse 中 src 目录下创建的资源文件在 Tomcat 服务器启动时会被复制到 WEB-INF/classes 目录下, 如图 4-40 所示 图 4-40 WEB-INF/classes 目录 (2) 编写读取 itcast.properties 资源文件的 TestServlet06,TestServlet06 的实现代码如例 4-9 所示 例 4-9 TestServlet06.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import java.util.properties; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 public class TestServlet06 extends HttpServlet { 7 public void doget(httpservletrequest request, HttpServletResponse response) 8 throws ServletException, IOException { 9 ServletContext context = this.getservletcontext(); 10 PrintWriter out = response.getwriter(); 11 InputStream in = context 12.getResourceAsStream("/WEB-INF/classes/itcast.properties"); 13 Properties pros = new Properties(); 14 pros.load(in); 15 out.println("company=" + pros.getproperty("company") + "<br>"); 16 out.println("address=" + pros.getproperty("address") + "<br>"); 17 } 18 public void dopost(httpservletrequest request, HttpServletResponse response) 19 throws ServletException, IOException { 20 this.doget(request, response); 21 } 22 } 30

31 在例 4-9 中, 使用 ServletContext 的 getresourceasstream(string path) 方法获得了关联 itcast.properties 资源文件的输入流对象, 其中的 path 参数必须以正斜线 / 开始, 表示 itcast.properties 文件相对于 Web 应用的相对路径 (3) 启动 Tomcat 服务器, 在浏览器的地址栏中输入 URL 地址 访问 TestServlet06, 浏览器显示的结果如图 4-41 所示 图 4-41 运行结果从图 4-41 中可以看出,itcast.properties 资源文件的内容被读取出来了 由此可见, 使用 ServletContext 可以读取到 Web 应用中的资源文件 (4) 有的时候, 我们需要获取的是资源的绝对路径 接下来, 对例 4-9 进行修改, 通过使用 getrealpath(string path) 方法获取资源文件的绝对路径, 修改后的代码如例 4-10 所示 例 4-10 TestServlet06.java 1 package cn.itcast.chapter04.servlet; 2 import java.io.*; 3 import java.util.properties; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 public class TestServlet06 extends HttpServlet { 7 public void doget(httpservletrequest request, HttpServletResponse response) 8 throws ServletException, IOException { 9 PrintWriter out = response.getwriter(); 10 ServletContext context = this.getservletcontext(); 11 String path = context.getrealpath("/web-inf/classes/itcast.properties"); 12 FileInputStream in = new FileInputStream(path); 13 Properties pros = new Properties(); 14 pros.load(in); 15 out.println("company=" + pros.getproperty("company") + "<br>"); 16 out.println("address=" + pros.getproperty("address") + "<br>"); 17 } 18 public void dopost(httpservletrequest request, HttpServletResponse response) 19 throws ServletException, IOException { 20 this.doget(request, response); 21 } 22 } 在例 4-10 中, 使用 ContextServlet 对象的 getrealpath(string path) 方法获得 itcast.properties 资源文件的绝对路径 path, 然后使用这个路径创建关联 itcast.properties 文件的输入流对象 (5) 启动 Tomcat 服务器, 在浏览器的地址栏中再次输入 URL 地址 TestServlet06 访问 TestServlet06, 同样可以看到图 4-41 所显示的内容 31

32 4.2 本章小结 本章主要介绍了 Java Servlet API 中主要接口和类的用法, 并且介绍了它们的生命周期 在 Java Web 程序中,Servlet 负责接收用户请求的 HttpServletRequest, 在 doget() dopost() 方法中做相应的处理, 并将回应 HttpServletResponse 反馈给用户 Servlet 需要在 web.xml 中配置, 一个 Servlet 可以配置多个 URL 访问 Servlet 技术在 web 开发中非常重要, 读者应该熟练掌握 Servlet 相关技术 32

服务器将响应传输给客户端 Servlet 技术具有如下特点 : 方便 :Servlet 提供了大量的实用工具例程, 如处理很难完成的 HTML 表单数据 读取和设置 HTTP 头, 以及处理 Cookie 和跟踪会话等 跨平台 :Servlet 用 Java 类编写, 可以在不同操作系统平台和不同应

服务器将响应传输给客户端 Servlet 技术具有如下特点 : 方便 :Servlet 提供了大量的实用工具例程, 如处理很难完成的 HTML 表单数据 读取和设置 HTTP 头, 以及处理 Cookie 和跟踪会话等 跨平台 :Servlet 用 Java 类编写, 可以在不同操作系统平台和不同应 第 3 章 Servlet 基础 学习目标 掌握 Servlet 接口及其实现类的使用 了解 Servlet 的生命周期 熟练使用 Eclipse 工具开发 Servlet 掌握 Servlet 虚拟路径映射的配置 随着 Web 应用业务需求的增多, 动态 Web 资源的开发变得越来越重要 目前, 很多公司都提供了开发动态 Web 资源的相关技术, 其中比较常见的有 ASP PHP JSP 和 Servlet

More information

Microsoft Word - 第4章 Servlet开发—教学设计.doc

Microsoft Word - 第4章 Servlet开发—教学设计.doc 传智播客 JavaWeb 程序开发入门 教学设计 课程名称 : JavaWeb 程序开发入门 授课年级 : 2014 年级 授课学期 : 2014 学年第一学期 教师姓名 : 某某老师 2014 年 09 月 09 日 课题名称内容分析教学目标及基本要求重点及措施 计划第 4 章 Servlet 技术 6 课时学时随着 Web 应用业务需求的增多, 动态 Web 资源的开发变得越来越重要, 为此 Sun

More information

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

resp.getwriter().print(j + * + i + = + j * i+ ); resp.getwriter().print(<br/>); protected void dopost(httpservletrequest req, HttpServletRespo 第三章补充案例 案例 3-1 HttpServlet 一 案例描述 1 考核知识点名称 :HttpServlet 编号 : 2 练习目标 掌握 HttpServlet 的 doget() 方法和 dopost() 方法 3 需求分析由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互, 因此, 在 Servlet 接口中, 提供了 一个抽象类 javax.servlet.http.httpservlet,

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ 第 四 章 Filter( 过 滤 器 ) 样 题 A 卷 一 选 择 题 ( 每 小 题 2 分, 共 20 分 ) 1 下 面 选 项 中, 用 于 实 现 初 始 化 过 滤 器 的 方 法 是 ( ) A init(filterconfig filterconfig) B dofilter(servletrequest req,servletresponse resp,filterchain

More information

教案模板4-2

教案模板4-2 传智播客 Java Web 程序设计任务教程 教学设计 课程名称 :Java Web 程序设计任务教程 授课年级 : 2016 年级 授课学期 : 2016 学年第二学期 教师姓名 : 某某老师 2016 年 9 月 1 日 课题 名称 第 3 章 Servlet 基础 计划 学时 6 课时 内容分析教学目标及基本要求教学重点教学难点教学方式 随着 Web 应用业务需求的增多, 动态 Web 资源的开发变得越来越重要,

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

Servlet

Servlet Servlet Allen Long Email: allen@huihoo.com http://www.huihoo.com 2004-04 Huihoo - Enterprise Open Source http://www.huihoo.com 1 Huihoo - Enterprise Open Source http://www.huihoo.com 2 GET POST Huihoo

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt

Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt 2004 Marty Hall servlet 基础 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 Eclipse 插件 ( 比如 MyEclipse 插件 ), 其开发方式和步骤可能略有差异和不同 在该例中,

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 与客户端交互 客户端跟踪 与客户端交互客户端跟踪 1 与客户端交互 HTTP servlet 与客户端的交互 通过 service 方法处理客户端的请求 service 方法根据请求 (request) 类型的不同, 调用不同的方法 对于 GET 请求, 调用 doget( ) 方法进行处理 对于 POST 请求, 调用 dopost( )

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问 内置对象的取得和多人开发 一 内置对象的取得 在使用的 servlet 的时候可以通过 HttpServletResquest 获取到一些内置对象, 但是在 struts2 中为了方便取得内置对象, 专门提供了一个 ServletActionContext 这个类取得取得内置对象, 观察如下方法 public static javax.servlet.jsp.pagecontext() 取得 pagecontext

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4 WebEx 一键集成 1 文档目的...1 2 Web 集成...1 2.1 URL API 语法...1 2.2 启会...2 2.3 加会...3 2.4 调用...3 3 移动集成...3 3.1 wbx schema...3 3.2 调用...4 4 取得 sessionticket...4 1 文档目的 本文档目的是, 让用户了解如何在 Web 端和移动端, 一键调用 WebEx app,

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 掌握 Model I 体系结构 掌握 Model II 体系结构 掌握 MVC 应用程序 Model I 体系结构 6 1 Model I 体系结构结合使用 JSP 页面和 Bean 来开发 Web 应用程序 应用服务器 请求 JSP 页面 响应 Bean 数据库服务器 Model I 体系结构 6 2 Model I 体系结构用于开发简单的应用程序

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 网络程序设计的基本概念 Servlet 基础 Servlet 的生命周期 网络程序设计的基本概念 Servlet 基础 Servlet 的生命周期 1 网络程序设计的基本概念 网络将世界联系在一起, 使世界变得更加丰富多彩 同时网络互连是一个内容丰富而复杂的主题, 所以这方面的程序设计涉及面很广且不易掌握 与其他语言相比, 语言在网络应用程序方面具有一定的优势

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

ebook

ebook 26 JBuilder RMI Java Remote Method Invocation R M I J a v a - - J a v a J a v J a v a J a v a J a v a R M I R M I ( m a r s h a l ) ( u n m a r c h a l ) C a ff e i n e J a v a j a v a 2 i i o p J a v

More information

untitled

untitled Velocity 14 100061 315@pptph.com.cn http://www.pptph.com.cn 010-67129212 010-67129211 787 1092 1/16 22 535 1 0 000 2001 11 1 2001 11 1 ISBN 7-115-09828-X/TP 2577 32.00 01067129223 1 2 1 2 3 4 5 1 Velocity

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

XXXXXXXX http://cdls.nstl.gov.cn 2 26

XXXXXXXX http://cdls.nstl.gov.cn 2 26 [ ] [ ] 2003-7-18 1 26 XXXXXXXX http://cdls.nstl.gov.cn 2 26 (2003-7-18) 1...5 1.1...5 1.2...5 1.3...5 2...6 2.1...6 2.2...6 2.3...6 3...7 3.1...7 3.1.1...7 3.1.2...7 3.1.2.1...7 3.1.2.1.1...8 3.1.2.1.2...10

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

spc

spc 网站的静态页面生成方案 yanrong79@gmail.com 提升网站性能的方式有很多, 例如有效的使用缓存, 生成静态页面等等 今天要说的就是生成静态页面的方式 什么叫生成静态页面呢? 很简单, 例如我们如果访问一个链接 http://xyz.com/index.do, 那么服务器就会解析这个请求, 让特定的 Action 去处理 这其中的缺点是显而易见的 : 如果访问的人, 那么就会加重应用服务器的压力,

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

第X章

第X章 Java Web 开发 Java Web 开发 盛鑫教育产品研发部研发 www.51ok.org 声明 : 1 本书为内部资料, 仅供盛鑫教育授权单位使用 ; 2 本书版权归盛鑫教育所有, 未经本公司书面许可, 任何单位和个人不得全部或部分复制本课程资料 ; 3 如发现本书存在印刷质量问题, 盛鑫教育负责免费调换 ; 4 希望广大读者阅读本书后提出宝贵意见和建议, 并将您的意见反馈至 :info@51ok.org;

More information

untitled

untitled 653 JAVA 2008 11 Institution of Software Engineer... 2... 4... 4... 5... 5... 8... 8... 8... 8... 8... 9... 9... 9... 11... 13... 13... 13... 13... 15... 15... 15... 15... 16... 16... 17... 17... 17...

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

TopTest_Adminstrator.doc

TopTest_Adminstrator.doc 壹 前 言... 3 貳 系 統 簡 介... 4 一 TKB multimedia Top-Test 系 統 架 構...4 1. 使 用 者 介 面 層 (Presentation tier)...5 2. 商 業 邏 輯 層 (business logic tier)...5 3. 資 料 服 務 層 (data services tier)...5 二 TKB Multimedia Top-Test

More information

Servlet技术

Servlet技术 Servlet 技 术 1 复 习 几 个 要 点 2 请 求 (request) 用 户 何 时 发 起 一 个 请 求 点 击 一 个 链 接 提 交 一 个 表 单 在 地 址 栏 键 入 一 个 Web 地 址! 请 求 通 过 URL 来 指 定 http://www.neusoft.edu.cn:80/cs/news.html URL 的 构 成 : http:// 代 表 超 文 本

More information

优迈科技教学大纲2009版本

优迈科技教学大纲2009版本 java 软 件 工 程 师 培 训 教 学 大 纲 1 JAVA 软 件 工 程 师 培 训 教 学 大 纲 深 圳 软 件 园 人 才 实 训 基 地 2009 年 3 月 目 录 java 软 件 工 程 师 培 训 教 学 大 纲 2 教 学 阶 段...3 第 一 章 JAVA 起 步...3 第 二 章 面 向 对 象 的 编 程...4 第 三 章 数 据 结 构 IO 线 程 网 络...5

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

Spring3.x开发入门

Spring3.x开发入门 Spring Bean 管理 Spring 的工厂类 课程安排 Spring 的 Bean 管理 (XML 方式 ) Spring 的属性注入 (XML 方式 ) Spring 的 Bean 管理 ( 注解方式 ) Spring 的属性注入 ( 注解方式 ) Spring 的工厂类 Spring 的 Bean 管理 (XML 方式 ) 三种实例化 Bean 的方式 使用类构造器实例化 ( 默认无参数

More information

RUN_PC連載_10_.doc

RUN_PC連載_10_.doc PowerBuilder 8 (10) Jaguar CTS ASP Jaguar CTS PowerDynamo Jaguar CTS Microsoft ASP (Active Server Pages) ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar Server ASP

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

Microsoft Word - JavaWeb程序开发入门—教学大纲.doc

Microsoft Word - JavaWeb程序开发入门—教学大纲.doc JavaWeb 程序开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 : 201409210011 学分 : 5 学分学时 : 54 学时 ( 其中 : 讲课学时 :38 上机学时 :16) 先修课程 :Java 基础入门 MySQL 数据库入门后续课程 :JavaWeb 程序开发进阶教程适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 JavaWeb 程序开发入门

More information

untitled

untitled ArcGIS Server Web services Web services Application Web services Web Catalog ArcGIS Server Web services 6-2 Web services? Internet (SOAP) :, : Credit card authentication, shopping carts GIS:, locator services,

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

07-form

07-form PHP 的输 入 表单与 文件上传杨亮 Web 基本流程 请求 页 面 对应 文件 获取数据 PC Mobile HTTP 请求 html css javascript 服务器 (Apache) (IIS) html css javascript 后端脚本 (PHP) (JSP) (ASP) 数据库 (MySQL) (Oracle) (Access) 返回 页 面 返回 页 面 返回数据 客户端 服务器端

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

1.1 Filter 的特性 请求映射 filter-mapping 和 servlet-mapping 都是将对应的 filter 或 servlet 映射到某 个 url-pattern 上, 当客户发起某一请求时, 服务器先将此请求与 web.xml 中定 义的所有 url-pat

1.1 Filter 的特性 请求映射 filter-mapping 和 servlet-mapping 都是将对应的 filter 或 servlet 映射到某 个 url-pattern 上, 当客户发起某一请求时, 服务器先将此请求与 web.xml 中定 义的所有 url-pat 1.1 Filter 的特性 1.1.1 请求映射 filter-mapping 和 servlet-mapping 都是将对应的 filter 或 servlet 映射到某 个 url-pattern 上, 当客户发起某一请求时, 服务器先将此请求与 web.xml 中定 义的所有 url-pattern 进行匹配, 然后执行匹配通过的 filter 和 servlet 你可以使用三种方式定义 url-pattern

More information

Microsoft PowerPoint - 03-Form-Data-Chinese.ppt

Microsoft PowerPoint - 03-Form-Data-Chinese.ppt 2004 Marty Hall 客户请求的处理 : 表单数据 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

Microsoft Word - Learn Objective-C.doc

Microsoft Word - Learn Objective-C.doc Learn Objective C http://cocoadevcentral.com/d/learn_objectivec/ Objective C Objective C Mac C Objective CC C Scott Stevenson [object method]; [object methodwithinput:input]; output = [object methodwithoutput];

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

JAR 包 : doget 方法 : 1. import java.io.ioexception; 2. import java.io.printwriter; 3. import javax.servlet.servletexception; 4. import javax.servlet.htt

JAR 包 : doget 方法 : 1. import java.io.ioexception; 2. import java.io.printwriter; 3. import javax.servlet.servletexception; 4. import javax.servlet.htt Java Servlet 技术的实现原理 程天任 摘要 : Server Applet 全称 Java Servlet, 是用 Java 编写的服务器端程序 其主要功能在于交互式地浏览和修改数据, 生成动态 Web 内容 狭义的 Servlet 是指 Java 语言实现的一个接口, 广义的 Servlet 是指任何实现了这个 Servlet 接口的类, 一般情况下, 人们将 Servlet 理解为后者

More information

(Microsoft Word - \272\364\263q\245|\244A_49636107_\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc)

(Microsoft Word - \272\364\263q\245|\244A_49636107_\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc) SCJP (Oracle Certified Professional, Java SE5/6 Programmer) 學 制 / 班 級 : 四 年 制 / 網 通 四 乙 指 導 老 師 : 方 信 普 老 師 學 生 學 號 / 姓 名 : 49636107 蘇 建 瑋 繳 交 年 份 : 100 年 6 月 一 SCJP 介 紹 SCJP 是 Sun Certified Java Programmer

More information

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX BPMX3 技 术 白 皮 书 业 务 流 程 开 发 平 台 介 绍 目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX3... 5 2.2.1 BPMX3

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

jsp

jsp JSP Allen Long Email: allen@huihoo.com http://www.huihoo.com 2004-04 Huihoo - Enterprise Open Source http://www.huihoo.com 1 JSP JSP JSP JSP MVC Huihoo - Enterprise Open Source http://www.huihoo.com 2

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - Chap02.doc

Microsoft Word - Chap02.doc Servlet & JSP Servlet Web Model 2 2-2 Servlet & JSP 教學手冊 2.1 從 Servlet 到 Web 容器 要撰寫一個 Servlet 類別很簡單, 只要繼承 javax.servlet.http.httpservlet 類別, 並重新定義 (override)doget() dopost() 等對應 HTTP 請求的方法 然而到這邊為止, 還稱不上一個可以服務的

More information

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

More information

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information