岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> J2EE >> Servlet/Jsp >> Java正文
JBuilder2005 Servlet开发之下载型
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 19:32:03

  在这节里,我们对welcome.jsp页面进行改造,在页面中添加一个链接,这个链接调用Servlet下载上节所记录的系统日志文件。
  
  通过向导创建ExcelFileServlet
  
  1、File->New...->Web->双击Standard Servlet图标,启动创建标准Servlet的向导。
  
  指定Servlet类名为ExcelFileServlet,将包名设为bookstore.servlet,按Next到下一步。
  
  2、选择覆盖doGet()处理方法。
  
 

  
图 11 覆盖Servlet方法

  
  ·Servlet:creates content type:unspecified,设定Servlet的生成文档的类型,由于这个Servlet作为一个Excel文件并以附件的形式下载,需要我们手工设定Servlet的响应内容类型。
  
  ·implements methods:doGet(),这样向导将生成一个doGet()方法框架。
  按Next到下一步。
  
  3、定义Servlet的URL参数。
  
 

  
图 12 定义Servlet的URL参数

  
  点击Add Parameter在参数列表出现一个新行,在新行中定义Servlet的URL参数,其中Name为URL所带的参数名,而Variable为Servlet中对应的变量名,此外还可以通过Desc和Default为变量指定注释和默认值,在Type栏中指定变量的类型。
  
  我们定义了两个URL参数,分别是year和month,指定需要下载日志的年份和月份。按Next到下一步。
  
  4.指定servlet的访问路径
  
  接受第4步向导所设定的Servlet的名字和访问路径,它们分别是:
  
  ·Name:excelfileservlet
  
  ·URL pattern:/excelfileservlet
  
  直接按Finish创建ExcelFileServlet,其代码如下所示:
  
  代码清单 8 ExcelFileServlet.java
  
  1. package bookstore.servlet;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5. import java.util.*;
  6.
  7. public class ExcelFileServlet
  8. extends HttpServlet
  9. {
  10.  //Initialize global variables
  11.  public void init()
  12.  throws ServletException
  13.  {
  14.  }
  15.
  16.  //Process the HTTP Get request
  17.  public void doGet(HttpServletRequest request, HttpServletResponse response)
  18.  throws ServletException, IOException
  19.  {
  20.   //年份
  21.   String year = request.getParameter("year");
  22.   if (year == null)
  23.   {
  24.    year = "2005";
  25.   }
  26.
  27.   //月份
  28.   String month = request.getParameter("month");
  29.   if (month == null)
  30.   {
  31.    month = "1";
  32.   }
  33.   PrintWriter out = response.getWriter();
  34.   //@todo implement GET
  35.  }
  36.
  37.  //Clean up resources
  38.  public void destroy()
  39.  {
  40.  }
  41. }
  
  第17~35行的doGet()方法是ExcelFileServlet的主体部分,其中第20~32是获取URL参数的代码。
  
  在web.xml中将生成对应这个Servlet的部署描述信息,如下所示:
  
  代码清单 9 ExcelFileServlet的部署描述配置信息
  
  1. <web-app>
  2.  …
  3.  <servlet>
  4.   <servlet-name>excelfileservlet</servlet-name>
  5.   <servlet-class>bookstore.servlet.ExcelFileServlet</servlet-class>
  6.  </servlet>
  7.  <servlet-mapping>
  8.   <servlet-name>excelfileservlet</servlet-name>
  9.   <url-pattern>/excelfileservlet</url-pattern>
  10.  </servlet-mapping>
  11.  …
  12. </web-app>
  
  下载日志文件代码
  
  在这一小节里,我们需要更改Servlet的doGet()方法,指定响应的格式并从日志目录中读取相应的日志文件内容写到Servlet的输出流中。
  
  由于文件内容以二进制流形式输出,Servlet向导在代码清单 8第33行所生成代码:
  
  PrintWriter out = response.getWriter();是多余的,我们将其删除。加入以下粗体的代码:
  
  代码清单 10 下载日志文件代码
  
  1. package bookstore.servlet;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5.
  6. public class ExcelFileServlet
  7. extends HttpServlet
  8. {
  9.  …
  10.  public void doGet(HttpServletRequest request, HttpServletResponse response)
  11.  throws ServletExceptio

[1] [2] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    传世私服 传奇世界私服 天龙八部私服 bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365