MyEclipse 6 by HC12021721546

VIEWS: 13 PAGES: 36

									JSP 程序设计实验指导书




   主编教师:程继洪
烟台南山学院                                                                                                                                         JSP 程序设计实验指导书



                                                                                    目录
实验 1 JSP 开发环境配置与测试 ......................................................................................................................... 5

   【实验目的】 .................................................................................................................................................... 5
   【实验环境】 .................................................................................................................................................... 5
   【实验指导】 .................................................................................................................................................... 5
       1 JSP 开发环境配置 ...................................................................................................................................... 5
          1、安装 JDK................................................................................................................................................................ 5
          2、安装 Tomcat ........................................................................................................................................................... 6
          3、安装 MyEclipse ...................................................................................................................................................... 6
          4、安装 MySQL .......................................................................................................................................................... 7
       2 JSP 程序开发步骤 ...................................................................................................................................... 9
          1、开发步骤 ................................................................................................................................................................ 9
   【实训报告】 .................................................................................................................................................. 12

实验 2 JSP 语法和内置对象 ............................................................................................................................... 13

   【实验目的】 .................................................................................................................................................. 13
   【实验环境】 .................................................................................................................................................. 13
   【实验指导】 .................................................................................................................................................. 13
       1 JSP 页面结构 ............................................................................................................................................ 13
          1.1 声明变量与方法 .................................................................................................................................................. 13
          1.2 JSP 表达式 ........................................................................................................................................................... 13
          1.3 JSP 代码段 ........................................................................................................................................................... 14
          1.4 JSP 注释 ............................................................................................................................................................... 14
       2 JSP 指令 .................................................................................................................................................... 15
          2.1 include 指令 ........................................................................................................................................................ 15
       3 JSP 动作 .................................................................................................................................................... 15
          3.1 include 动作 ........................................................................................................................................................ 15
          3.2 forward 动作 ....................................................................................................................................................... 15
          3.3 useBean 动作、setProperty 动作和 getProperty 动作 .................................................................................... 15
       3.4 application 对象 ..................................................................................................................................... 16
   【实验报告】 .................................................................................................................................................. 16

实验 3 JSP 文件上传与下载 ............................................................................................................................... 18

   【实验目的】 .................................................................................................................................................. 18
   【实验环境】 .................................................................................................................................................. 18
   【实验指导】 .................................................................................................................................................. 18
       1 文件上传 .................................................................................................................................................. 18
       2 文件下载 .................................................................................................................................................. 19
   【实验报告】 .................................................................................................................................................. 20

实验 4 SERVLET 应用 ....................................................................................................................................... 21

   【实验目的】 .................................................................................................................................................. 21
   【实验环境】 .................................................................................................................................................. 21


                                                                                                                                                                                     2
烟台南山学院                                                                                                                                       JSP 程序设计实验指导书


   【实验指导】 .................................................................................................................................................. 21
       1 编写一个 Servlet ...................................................................................................................................... 21
       2 部署 Servlet .............................................................................................................................................. 22
       3 执行 Servlet .............................................................................................................................................. 22
   【实验报告】 .................................................................................................................................................. 22

实验 5 综合案例.................................................................................................................................................. 23

   【实验目的】 .................................................................................................................................................. 23
   【实验环境】 .................................................................................................................................................. 23
   【实验指导】 .................................................................................................................................................. 23
       1 框架设计 .................................................................................................................................................. 23
       2 权限验证 .................................................................................................................................................. 23
       3 登录功能 .................................................................................................................................................. 24
           3.1 获得数据库连接 ................................................................................................................................................. 24
           3.2 编写登录页面 ..................................................................................................................................................... 25
           3.3 编写登录 Servlet ................................................................................................................................................. 26
           3.4 编写工具类 Table2Object ................................................................................................................................... 27
           3.5 编写成功跳转页面 ............................................................................................................................................. 27
       4 添加学生 .................................................................................................................................................. 27
           4.1 新建 AddStudent.jsp 页面................................................................................................................................... 27
           4.2 新建 Student 类 ................................................................................................................................................... 28
           4.3 新建业务处理类 ................................................................................................................................................. 29
           4.4 向工具类 Table2Object 中增加方法 student2Object。 ..................................................................................... 29
           4.5 新建 AddStudentServlet 类 ................................................................................................................................. 30
           4.6 修改 Main.jsp ...................................................................................................................................................... 31
   【实验报告】 .................................................................................................................................................. 31

附录 JSPSMARTUPLOAD API 说明 .............................................................................................................. 33

   1 FILE 类............................................................................................................................................................ 33
       1.1 saveAs ..................................................................................................................................................... 33
       1.2 isMissing ................................................................................................................................................. 33
       1.3 getFieldName.......................................................................................................................................... 33
       1.4 getFileName............................................................................................................................................ 33
       1.5 getFilePathName .................................................................................................................................... 33
       1.6 getFileExt................................................................................................................................................ 33
       1.7 getSize ..................................................................................................................................................... 33
       1.8 getBinaryData......................................................................................................................................... 34
   2 FILES 类 .......................................................................................................................................................... 34
       2.1 getCount.................................................................................................................................................. 34
       2.2 getFile ..................................................................................................................................................... 34
       2.3 getSize ..................................................................................................................................................... 34
       2.4 getCollection ........................................................................................................................................... 34
       2.5 getEnumeration....................................................................................................................................... 34
   3 REQUEST 类 .................................................................................................................................................... 34
       3.1 getParameter .......................................................................................................................................... 34

                                                                                                                                                                                  3
烟台南山学院                                                                                                                             JSP 程序设计实验指导书


    3.2 getParameterValues ................................................................................................................................ 34
    3.3 getParameterNames ............................................................................................................................... 34
 4 SMARTUPLOAD 类这个类完成上传下载工作。 .......................................................................................... 34
    4.1 上传与下载共用的方法: ................................................................................................................... 35
 4.2 上传文件使用的方法:............................................................................................................................. 35
    4.2.1 upload .................................................................................................................................................. 35
    4.2.2 save ...................................................................................................................................................... 35
    4.2.3 getSize .................................................................................................................................................. 35
    4.2.4 getFiles ................................................................................................................................................ 35
    4.2.5 getRequest ............................................................................................................................................ 35
    4.2.6 setAllowedFilesList .............................................................................................................................. 35
    4.2.7 setDeniedFilesList ............................................................................................................................... 35
    4.2.8 setMaxFileSize ..................................................................................................................................... 36
    4.2.9 setTotalMaxFileSize ............................................................................................................................. 36
 4.3 下载文件常用的方法................................................................................................................................. 36
    4.3.1 setContentDisposition .......................................................................................................................... 36
    4.3.2 downloadFile ....................................................................................................................................... 36




                                                                                                                                                                      4
烟台南山学院                                                         JSP 程序设计实验指导书



                       实验 1 JSP 开发环境配置与测试
【实验目的】
   1、了解 JSP 开发环境安装与配置;
   2、了解 JSP 开发的一般步骤。
【实验环境】
   连接网络的计算机,操作系统 Windows XP 或更高版本。
【实验指导】
1 JSP 开发环境配置
     JSP 编程使用的 Java 语言,所以运行 JSP 程序必须要有 JVM 的支持,还必须要有
Java 程序编辑、编译程序(JDK)的支持。现在企业流行的集成开发环境是 Eclipse 或
MyEclipse。大多数应用程序都需要连接数据库,所以需要 DBMS 的支持。JSP 应用程
序是运行在服务器上的,        所以需要 Web 服务器的支持,在此以 Java 1.6 Update21、Tomcat、
MySQL、MyEclipse6.5 为例,安装配置 JSP 开发环境。
1、安装 JDK
      从 Java 公司官方网站     (http://www.oracle.com/technetwork/java/index.html)下载 JDK,
现在最新的是 Java SE6 Update22,        我们采用的 JDK1.6 Update 21,只需要双击中下载到的
EXE 文件,点下一步即可安装。JDK 安装好后,需要配置 Java 的环境变量,步骤如下:
      (1)我的电脑->属性->高级选项卡->环境变量,打开“环境变量”对话框,在系
统变量中新建以下环境变量:
      ① JAVA_HOME : 表 示 Java SDK 的 安 装 目 录 , 其 值 为 : D:\Program
Files\Java\jdk1.6.0_21(根据自己的实际安装位置进行调整)                 。
      ② CLASSPATH : 表 示 Java 要 访 问 的 jar 文 件 所 在 的 目 录 , 其 值
为:%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib。
      ③并修改 Path 环境变量,       在其中增加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
      注意:
           对于 Path 环境变量是添加,而不要删除原来的内容,否则很多 Windows 功
     能不能使用;若有其他程序要用到自己的 Java 环境变量,请将第③步的内容添加到
     Path 环境变量的最后,以免影响其他程序的运行。
           字母不区分大小写,大写字母是遵照 Java 环境变量配置习惯。
      (2)测试
      打开 Windows 的命令行窗口(开始->运行,在弹出的窗口中输入 cmd 回车)                             ,输入
javac 然后回车,若能显示 javac 的帮助信息,说明 JDK 安装成功,如下图所示。




                                                                                5
烟台南山学院                                             JSP 程序设计实验指导书


2、安装 Tomcat
    在 Tomcat 官方网站(http://tomcat.apache.org/)上下载 Tomcat,现在最新版本是 7.x,
但还没有 Eclipse 插件,因此不能集成到 MyEclipse 集成开发环境中,这里使用 6.028 这
个版本。安装时只需要一路 next 即可,安装完成后,也不需要设置环境变量,只要在
IE 浏览器地址栏中输入:     http://localhost:8080 回车,若能出现 Tomcat 界面说明安装成功,
如下图所示。




3、安装 MyEclipse
     只需要一路 Next 即可,主要是进行相关配置。通过 Window->Preferences…菜单打
开配置对话框。说明:每设置一项要点“Apply”按钮,保存所做的更改。
     (1) 在 General 下找到 workspace,将字符编码方式(Text file encoding)设置为
Other utf-8。如图 1-1 所示。




                      图 1-1 设置工作区字符编码方式
  (2) 设置常用文件的字符编码方式
  找到“MyEclipse Enterprise workbench”->Files and Editors,将其下的常见文件字
符编码方式统一设置为 utf-8,如图 1-2 所示。



                                                                 6
烟台南山学院                                                JSP 程序设计实验指导书




                       图 1-2 设置常见文件字符编码方式
(3) 设置常用 Web 服务器
   找到“MyEclipse Enterprise workbench”->Servers,找到 Tomcat->Tomcat6.x,将其
设置为启用,并指定 Tomcat 安装目录,点“OK”按钮保存设置即可。
4、安装 MySQL
     下载 MySQL 的安装文件,一路 Next 安装即可,并按下图进行设置,如图 1-3 至
1-10 所示。




                            图 1-3 选择详细配置




                                                                     7
烟台南山学院                             JSP 程序设计实验指导书


                 图 1-4 选择开发模式




                图 1-5 选择多用途数据库




                 图 1-6 选择决策支持




         图 1-7 设置 MySQL 的访问端口,并添加防火墙例外




                                               8
烟台南山学院                                              JSP 程序设计实验指导书




                 图 1-8 设置 MySQL 字符编码方式,以处理中文




                    图 1-9 将 MySQL 设置为 Windows 服务




         图 1-10 设置 MySQL 访问密码,并可以远程访问
  说明:以上设置是针对实验开发环境下的设置,若为实际应用,可根据需要进行相
应的设置。
2 JSP 程序开发步骤
1、开发步骤
  打开 MyEclipse 开发环境,选择 File->New->Web Project,或在 Package Explorer 中
右击选择 New->Web Project,在打开的对话框中,   输入项目名 Demo,     并选定 Java EE 5.0
规范支持,点击 Finish。如图 1-11 所示。



                                                                  9
烟台南山学院                                          JSP 程序设计实验指导书




                   图 1-11 MyEclipse 新建 Web 项目
(1) 第一个 JSP 页面
   右单击 Demo 项目的 WebRoot 目录,New->JSP 新建 JSP 页面。如图 1-12 所示。




                       图 1-12 新建 JSP 页面




                                                           10
烟台南山学院                                          JSP 程序设计实验指导书




                         图 1-13 设置 JSP 模板和文件名
   输入文件名 HelloWorld.jsp,并选择“Default JSP template”,点击确定。
   在页面的<body>标签中,输入以下代码:
    <%
       out.println("<h1>Hello World!</h1>");
     %>
   并保存。
(2) 部署 Demo

   点击部署按钮        ,选择 Demo 项目,点“Add”按钮,在弹出的窗口中,选择
Tomcat6.x 服务器,点 Finish。




                                                           11
烟台南山学院                                              JSP 程序设计实验指导书




(3) 运行 Demo 项目

    按     按 钮 启 动 Tomcat 服 务 器 , 在 IE 或 其 他 浏 览 器 的 地 址 栏 中 输 入 :
http://localhost:8080/Demo/HelloWorld.jsp,出现如下界面。




【实训报告】
  1 记述 JSP 开发环境的安装与配置过程。
  2 系统开发环境安装配置完成后,新建一个 Web 项目,并书写自己的第一个 JSP
页面,输出 Hello+你自己的名字。




                                                               12
烟台南山学院                                       JSP 程序设计实验指导书



                        实验 2 JSP 语法和内置对象
【实验目的】
    1、掌握 JSP 变量/方法,表达式,代码段和注释的使用方法;
    2、掌握 JSP 指令的语法格式及用法;
    3、掌握 JSP 常用动作的语法格式及用法;
    4、掌握常用的 JSP 内置对象。
【实验环境】
  连接网络的计算机,操作系统 Windows XP 或更高版本以及配有 JSP 开发环境的计
算机。
【实验指导】
1 JSP 页面结构
  说明:以后代码如无特殊说明均写在<body>标签中(JSP 代码可以写在网页的任何
位置)。
1.1 声明变量与方法
     新建一 JSP 页面,输入以下代码。
(1) 声明变量
     <%!
           int i=0;
         %>
         <%
           out.println("i="+i++);
     %>
     刷新你写的页面几次,观察到什么结果,从结果中你得到什么启示?
(2) 输入以下代码
     <%!
           public int max(int a, int b){
                if (a>b){
                     return a;
                }
                return b;
           }
      %>
      <%
           out.println("<h1>3 和 5 中较大的是"+max(3,5)+"</h1>");
      %>
     将上面变量和方法的声明,写在 out.println();代码段之后,再访问你写的 JSP 页面,
观察结果,你得到什么启示?
1.2 JSP 表达式
    在 JSP 页面中输入以下代码。
    <h1><%=max(3,5) %></h1>
    <h1><%=(i+a+c)/3 %></h1>
    <h1><%=date.toString() %></h1>
    <%!

                                                         13
烟台南山学院                                       JSP 程序设计实验指导书


             public int max(int a, int b){
                   if (a>b){
                        return a;
                   }
                   return b;
             }
             int i = 3, a = 5, c=4;
             Date date = new Date();
    %>
    通过上面的代码,你认为 JSP 表达式可以出现什么 Java 元素?
1.3 JSP 代码段
   在 JSP 页面中输入以下代码,从以下代码的书写中,你发现了什么重要提示?
(<% %>中的代码段,无论写在多少个分离的<% %>标签中,都必须完整,即符合 Java
语法,比如大括号必须匹配等)
   <%
        int grade = 80;
        switch(grade/10){
        case 10:;
        case 9:
      %>
        <h1>你的成绩为优秀!</h1>
      <%
        break;
        case 8:;
        case 7:
      %>
        <h1>你的成绩为良好!</h1>
      <%
        break;
        case 6:
      %>
        <h1>你的成绩为及格!</h1>
      <%
        break;
        default:
      %>
        <h1>你的成绩为不及格!</h1>
      <%} %>
1.4 JSP 注释
    输入以下代码,访问你的 JSP 查看页面源文件,你看到了什么?说明什么问题?
    <!--
         <%=new Date().toString() %>
    -->
    <%--

                                                        14
烟台南山学院                                                        JSP 程序设计实验指导书


           <%=new Date().toString() %>
    --%>
2 JSP 指令
    2.1 include 指令
    (1)新建 Included.jsp 页面,在页面中输入以下代码,而且只保留如下代码:
         <% int a=5, b=8, c=6;
            out.println("<h1>Hello World!</h1>");
         %>
    (2)编写 Including.jsp 页面,在其中输入以下代码:
    <%@ include file="Included.jsp" %>
    并在<body>中输入以下代码:
       <%=a+b+c %>
    (3) 启动 Tomcat 服务器,访问 Including.jsp,观察结果。
3 JSP 动作
  3.1 include 动作
  新建 Including2.jsp 页面,在其中输入以下代码:
          <jsp:include page="Included.jsp"></jsp:include>
          <%=a+b+c %>
  观察编辑器有什么提示?并想一想,include 指令和 include 动作有什么异同?
  3.2 forward 动作
  (1)新建 ForwardDemo.jsp 页面,并输入以下代码:
          <%
              request.setAttribute("userName", "JSP Practice Referece Book");
              pageContext.setAttribute("userName","JSP Practice Referece Book",
   pageContext.PAGE_SCOPE);
               %>
              <jsp:forward page="Forwarded.jsp"></jsp:forward>
  (2)新建 Forwarded.jsp,并输入以下代码:
          <h1>Forwarded.jsp</h1>
          <%=request.getAttribute("userName") %><br/>
          <%=pageContext.getAttribute("userName",pageContext.PAGE_SCOPE) %>
  (3)访问 ForwardDemo.jsp 观察结果,你能得出什么结论?
  3.3 useBean 动作、setProperty 动作和 getProperty 动作
  (1)在项目的 src 目录下新建 com.phoenix.test 包,并在该包在新建类 Student,并
输入以下代码
  public class Student {

       private Long id;
       private String name;

       //getters and setters……

    }
    (2)编写 StudentInfo.jsp 页面,输入以下内容。

                                                                             15
烟台南山学院                                                             JSP 程序设计实验指导书


    <form action="StudentInfoHandle.jsp">
        学号:<input type="text" name="id"/><br/>
        姓名:<input type="text" name="name"/><br/>
        <input type="submit" value="提交"/>
    </form>
  (3)编写 StudentInfoHandle.jsp,输入以下内容。
        <jsp:useBean id="stu" class="com.phoenix.test.Student"></jsp:useBean>
        <jsp:setProperty name="stu" property="*"/>
        <h1>学生信息</h1>
        学号:<jsp:getProperty name="stu" property="id"/><br/>
        姓名:<jsp:getProperty name="stu" property="name"/><br/>
  (4)运行 StudentInfo.jsp,输入学号和姓名并提交,观察结果。
  (5) 观察 Tomcat 服务器 webapps 目录下的 Demo 项目文件夹的结构,                          Student.class
在什么文件夹下?由此你得出什么结论?



            注意:为了能够输入中文,需要对 Tomcat 配置文件作修改,在 Tomcat 安装
目录\conf\server.xml 中找到以下内容,


    <Connector port="8080" protocol="HTTP/1.1"


                     connectionTimeout="20000"


                     redirectPort="8443"/>,并在其中添加 URIEncoding="utf-8"。


3.4 application 对象
     新建 ApplicationDemo.jsp 页面,输入以下代码,观察运行结果。
      <%
         Integer i = 0;
         i = (Integer) application.getAttribute("count");
         if (null == i){
              application.setAttribute("count", 1);
              out.println("<h1>你是第 1 位访问者</h1>");
         }else{
              ++i;
              application.setAttribute("count",i);
              out.println("<h1>你是第"+i+"位访问者</h1>");
         }
       %>
     结果说明了 application 对象的作用范围是什么?
【实验报告】


                                                                                    16
烟台南山学院                          JSP 程序设计实验指导书


  1 page 指令都有哪些属性,每个属性的意义是什么?
  2 taglib 指令的作用是什么?指令格式是什么?
  3 本实验未出现的 JSP 内置对象还有哪些,请简述他们的意义和作用,并模仿对面
给出的例子,自己对每个对象写一个 JSP 实例。




                                           17
烟台南山学院                                                               JSP 程序设计实验指导书



                         实验 3 JSP 文件上传与下载
【实验目的】
   1、掌握利用第三方组件(jspSmartUpload)实现 JSP 文件上传和下载;
   2、掌握 jspSmartUpload 提供的 API。
【实验环境】
   MyEclipse 6.5 集成开发平台、Tomcat 服务器;jspSmartUpload.jar 文件。
【实验指导】
    要使用第三方组件,必须将支持的 jar 包拷贝到项目的 lib 目录下,或者拷贝到
Tomcat 安装目录的 lib 目录下。
1 文件上传
   1.1 新建 FileUpload.jsp 文件,输入以下代码。
      <form action="FileUploadHandle.jsp" method="post"
                                           enctype="multipart/form-data">
          <p>选择上传文件</p>
          <p>上传文件:<input type="file" name="myFile"/></p>
          <p><input type="submit" value="上传"/></p>
        </form>
   1.2 新建 FileUploadHandle.jsp 实现文件上传。
       <!-- 使用 page 指令导入所需要的包 -->
       <%@ page import="com.jspsmart.upload.*" %>
          <%
              SmartUpload myUpload = new SmartUpload();
              //上传文件初始化
              myUpload.initialize(pageContext);
              //设置上传文件最大限制 100K
              myUpload.setMaxFileSize(100*1024);
              //设置允许上传的文件类型
              myUpload.setAllowedFilesList("jpg,txt");
              //设置禁止上传的文件类型
              myUpload.setDeniedFilesList("exe,bat,jsp");
              //实现文件上传
              myUpload.upload();
              //保存上传的文件
              int count = myUpload.save("/upload");

              //上传文件的信息
              for (int i=0; i<myUpload.getFiles().getCount();i++){
                   File file = myUpload.getFiles().getFile(i);
                   out.println("表单项名称:"+file.getFieldName()+
                             ",文件长度:"+file.getSize()+
                             ",文件名:"+file.getFilePathName()+
                             ",扩展名:"+file.getFileExt()+
                             ",文件全名"+file.getFilePathName());

                                                                                18
烟台南山学院                                                 JSP 程序设计实验指导书


               }
            %>
     1.3 在 WebRoot 目录下新建 upload 文件夹。
     1.4 执行 FileUpload.jsp,观察结果。



         注意



     (1)新建 upload 文件夹后,要重新部署项目,以使该文件夹拷贝到项目运行时的 WebRoot 目
录。


  (2)上传成功的文件保存在 Tomcat 安装目录\webapps\项目名\upload 文件夹中,而不是保存在
项目的 WebRoot\upload 文件夹中。


  (3)本上传组件不支持中文文件名,文件能够成功上传,但文件名乱码。若要支持中文文件
名,必须下载支持中文的 jspSmartUpload.jar 包。


2 文件下载
     2.1 新建 FileDownload.jsp 页面,输入以下代码。
        <p>文件下载</p>
        <p>请点击<a href="FileDownloadHandle.jsp">此处</a>下载文件</p>
     2.2 新建 FileDownloadHandle.jsp 页面,输入以下代码。
         <%@ page import="com.jspsmart.upload.*" %>
         <%

        out.clear();
        //out = pageContext.pushBody();
        SmartUpload myUpload = new SmartUpload();
        //初始化 SmartUpload 对象
        myUpload.initialize(pageContext);
        //禁止浏览器自动打开文件,若要在浏览器中打开文件,可不设此项
        myUpload.setContentDisposition(null);
        //下载文件
        myUpload.downloadFile("upload/Test.txt");
      %>
  2.3 在 Tomcat 安装目录\webapps\你的项目名\upload 文件夹下,新建一 Test.txt,并
输入一些内容。
  2.4 运行你写的 JSP 观察结果。




                                                                  19
烟台南山学院                                JSP 程序设计实验指导书




     注意 jspSmartUpload 不支持下载工具,这会使你的程序崩溃。


【实验报告】
  写一个实现动态下载文件的 JSP 程序(就是用户能够选择(或指定)下载文件)。




                                                 20
烟台南山学院                                                               JSP 程序设计实验指导书



                                  实验 4 Servlet 应用
【实验目的】
    1、熟悉 Servlet 接口及其中规定的方法和意义;
    2、掌握 Servlet 编写、部署和运行。
【实验环境】
    MyEclipse 6.5 集成开发平台、Tomcat 服务器。
【实验指导】
   自己实现 Servlet 有几种方法:                   (2)继承 HttpServlet 类;
                         (1)实现 Servlet 接口;                     (3)
继承 GenericServlet 类。一般情况下,需要继承 HttpServlet 或 GenericServlet 类,因为这
样可以不必考虑与容器的交互。GenericServlet 可以处理各种网络请求,而 HttpServlet
只能处理 Http 请求。
1 编写一个 Servlet
  (1)在 com.phoenix.test 包下新建一个类 FirstServlet,并使它继承 HttpServlet 类,
写入以下代码。
  在 Source->Override/Implements methods…菜单中,选择要覆盖的基类中的方法。
  package com.phoenix.test;

    import java.io.IOException;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class FirstServlet extends HttpServlet {

       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
           doPost(req, resp);
       }

       @Override
       protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
           String userName = req.getParameter("userName");
           userName = "Hello "+userName;
           req.setAttribute("userName",userName);
           req.getRequestDispatcher("/Success.jsp").forward(req, resp);
       }

    }
    (2)新建 ServletReq.jsp 页面,输入以下代码。

                                                                                 21
烟台南山学院                                                             JSP 程序设计实验指导书


       <form action="firstServlet">
            <p>姓名:<input type="text" name="userName"/></p>
            <p><input type="submit" value="提交"/></p>
         </form>
    (3)新建 Success.jsp,作为 Servlet 执行完毕后跳转的目标页面。
        <h1><%=request.getAttribute("userName") %></h1>
2 部署 Servlet
    在项目的 WebRoot\WEB-INF\web.xml 文件中,添加以下代码。
       <servlet>
           <servlet-name>FirstServlet</servlet-name>
           <servlet-class>com.phoenix.test.FirstServlet</servlet-class>
       </servlet>

           <servlet-mapping>
               <servlet-name>FirstServlet</servlet-name>
               <url-pattern>/firstServlet</url-pattern>
           </servlet-mapping>
3 执行 Servlet
  部署项目(注意只要修改了配置文件,就要重新部署项目,并重启服务器)启动服
务器,请求 ServletReq.jsp 页面,在其中输入姓名,点提交观察运行结果。
【实验报告】
  1、试述 Servlet 接口的定义,及其中每个方法的意义。
  2、试着将部署中的<servlet>和<servlet-mapping>中的<servlet-name>都改为 aaa,重
新部署并运行项目,你得到什么启示?
  3、编写一个你自己的 Servlet,部署并运行它。




                                                                              22
烟台南山学院                                                                 JSP 程序设计实验指导书



                                实验 5 综合案例
【实验目的】
   1、掌握基本 SQL 语句的使用;
   2、掌握实际开发中软件结构设计;
   3、理解 MVC 模式在软件结构设计中的运用;
   4、掌握 Servlet、JavaBean 和 JSP 在软件开发中的地位、作用及其相互关系;
   5、掌握 JSP 数据库连接与操作;
   6、掌握 JSP 开发应用程序的一般方法。
   7、掌握 Filter 的编写、部署、配置和应用。
【实验环境】
   MyEclipse 集成开发平台、Tomcat 服务器和 MySQL 数据库。
【实验指导】
  在 MVC 模式中,        模型
            倡导控制、 (逻辑)           在
                           和视图分离, JSP 开发的系统中,Servlet
用于控制系统的运行流程,  JavaBean 用于业务逻辑处理、             而
                                数据传输和数据持久化, JSP
用于显示系统的处理结果。相应的软件结构也分为 4 层:表现层、控制层、逻辑层和持
久层,另有数据传输层在各层之间传递数据。
1 框架设计
   在 MyEclipse 中新建一个 Web 项目,并在 src 目录下新建以下 Java 包:
   com.phoenix.bo:用于存放系统中用到的实体类,即持久化的类,和数据库中的某个
表相对应;
   com.phoenix.common: 用于存放系统中各层都需要的类,
   com.phoenix.servlet: 用于存放系统中的所有的 Servlet,相应于控制层;
   com.phoenix.util:用于存放系统中的所有的业务处理接口(类)       ,相应于业务逻辑
层。
2 权限验证
   权限验证的思想是:             将请求页面中设置的角色与登录时用户的角色进行对比,             若二
者匹配或者是登录的角色是管理员(本例中是教师)                       ,则允许用户进行本次操作,否则
将用户导向登录页面,重新进行登录。
   (1) 由于在系统中有不同的角色,                   各角色具有的权限不同,  所以要进行权限控制,
这个功能由 Filter 过滤器进行。在 com.phoenix.common 包下新建 AuthenticateFilter,并
实现 Filter 接口,并输入以下代码:
   public void destroy() {
           // TODO Auto-generated method stub
   }

     public void doFilter(ServletRequest req, ServletResponse resp,
              FilterChain chain) throws IOException, ServletException {

         if (req instanceof HttpServletRequest){ //http 请求
               HttpServletRequest request = (HttpServletRequest)req;
               String login = request.getParameter(“login”);
               String roleName = request.getParameter(“roleName”);
               if (null == login || “”.equals(login)){ //非登录请求

                                                                                  23
烟台南山学院                                                                   JSP 程序设计实验指导书


                    HttpSession session = request.getSession();
                    String sername = (String) session.getAttribute(“ sername”);
                    String sessionRoleName = (String) session.getAttribute(“roleName”);
                    if (null != sername && !””.equals( sername) &&
                              (sessionRoleName.equals(roleName)                             ||
sessionRoleName.equals(“教师”))){
                         chain.doFilter(request, resp);
                    }else{
                         request.setAttribute(“opTip”, “你还没有登录,请登录后继续访
问!”);
                         request.getRequestDispatcher(“/index.jsp”).forward(request, resp);
                    }
                }else{ //登录请求
                    chain.doFilter(request, resp);
                }
            }else{ //其他请求
                chain.doFilter(req, resp);
            }
        }

       public void init(FilterConfig arg0) throws ServletException {
           // TODO Auto-generated method stub
       }
     请你在输入代码的同时,理解该段代码实现的业务逻辑是怎么样的?
     (2)在 web.xml 中添加如下代码,将你的 Filter 部署到项目中。
           <filter>
                <filter-name>authenFilter</filter-name>
                <filter-class>com.phoenix.common.AuthenticateFilter</filter-class>
           </filter>

             <filter-mapping>
                  <filter-name>authenFilter</filter-name>
                  <url-pattern>/*</url-pattern>
             </filter-mapping>
3 登录功能
     首先要将 student.sql 文件导入 MySQL 数据库中。
3.1 获得数据库连接
     在 com.phoenix.common 包中新建 GetConnection 类,输入以下代码。试回顾一下,
Java 连接数据库的内容。
     Import java.sql.*;

     public class GetConnection {

        public static final String CLASSNAME = “com.mysql.jdbc.Driver”;

                                                                                            24
烟台南山学院                                                                  JSP 程序设计实验指导书


       public static final String URL = “jdbc:mysql://localhost:3306/student”;
       public static final String USER = “root”;
       public static final String PASSWORD = “789456”;
       public static Connection conn;

       public static Connection getConnection(){
           try {
                if (null == conn){
                     Class.forName(CLASSNAME);
                     conn = DriverManager.getConnection(URL, USER, PASSWORD);
                }
           } catch (ClassNotFoundException e) {
                System.out.println(“系统找不到指定类”);
           } catch (SQLException e) {
                System.out.println(“数据库连接出现异常”);
           }
           return conn;
       }

   }
3.2 编写登录页面
   需要收集用户的 ID、姓名和密码。新建 index.jsp 文件,输入以下内容。
    <form action=”loginServlet”>
        <input type=”hidden” name=”login” value=”login”/>
        <%=request.getAttribute(“opTip”) %>
        <table>
            <tr>
                 <th>用户 ID</th>
                 <td><input type=”text” name=”roleId”/></td>
            </tr>
            <tr>
                 <th>用户名</th>
                 <td><input type=”text” name=” sername”/></td>
            </tr>
            <tr>
                 <th>密&nbsp;&nbsp;码</th>
                 <td><input type=”password” name=”password”/></td>
            </tr>
            <tr>
                 <td colspan=”2”>
                     <input type=”submit” value=”提交”/>
                     <input type=”reset” value=”重置”/>
                 </td>
            </tr>

                                                                                   25
烟台南山学院                                                                   JSP 程序设计实验指导书


             </table>
          </form>
3.3 编写登录 Servlet
  在 com.phoenix.servlet 包下新建 LoginServlet,输入以下代码。并在 com.phoenix.bo
包下按照 Student 数据库中的 role 数据库表新建一 Java Role 类。
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                 throws ServletException, IOException {
            doPost(req, resp);
        }

         @Override
         protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                  throws ServletException, IOException {
             String sername = req.getParameter(“ sername”);
             String password = req.getParameter(“password”);
             String roleId = req.getParameter(“roleId”);
             conn = GetConnection.getConnection();
             String sql = “select * from role where roleId=”+roleId+””;
             try {
                  st = conn.createStatement();
                  rs = st.executeQuery(sql);
                  Role role = null;
                  while(rs.next()){
                       role = Table2Object.role2Role(rs);
                  }
                  String target = null;
                  if(null != role){
                       if               (role.getUserName().equals( sername)               &&
role.getPassword().equals(password)){
                            req.getSession().setAttribute(“ sername”, sername);
                            req.getSession().setAttribute(“roleName”, role.getRoleName());
                            target = “jsp/Main.jsp”;
                       }else{
                            req.setAttribute(“opTip”, “密码输入错误,请重新输入”);
                            target = “/index.jsp”;
                       }
                  }else{
                       req.setAttribute(“opTip”,”用户不存在!”);
                       target = “/index.jsp”;

                                                                                           26
烟台南山学院                                                         JSP 程序设计实验指导书


                }
                req.getRequestDispatcher(target).forward(req, resp);
           } catch (NumberFormatException e) {
                System.out.println(“目标字符串不能转换成 Long 型数值”);
                e.printStackTrace();
           } catch (SQLException e) {
                System.out.println(“数据库操作出现异常”);
                e.printStackTrace();
           }

   }
  由于该功能需要向 session 中保存数据,所以将该功能直接放在 Servlet 中,而没有
放在逻辑层的实现类中。
  按照实验 4 的方法步骤,再参考【实验指导】2 的要求,配置该 Servlet。
3.4 编写工具类 Table2Object
  在 com.phoenix.common 包中新建 Table2Object 类,并添加一方法 role2Role,代码
如下,用于实现从数据库表到 Java 实体的转换:
    public static Role role2Role(ResultSet rs) throws SQLException{
        Role role = null;
        if(rs.getRow() != 0){
             role = new Role();
             role.setRoleNo(rs.getInt(1));
             role.setRoleId(rs.getLong(2));
             role.setUserName(rs.getString(3));
             role.setRoleName(rs.getString(4));
             role.setPassword(rs.getString(5));
        }
        return role;
    }
3.5 编写成功跳转页面
    在 WebRoot 下新建目录 jsp,在其中新建 Main.jsp,输入以下内容,作为测试之用。
      <%=session.getAttribute(“roleName”) %>
    现在部署你的项目,并测试它。
4 添加学生
  添加学生的功能,只能由教师进行,所以登录为教师的用户才能执行此功能。根据
我们的角色控制要求,提交页面必须包含一个隐藏域名为 roleName,值为“教师”。
4.1 新建 AddStudent.jsp 页面
    输入以下代码。
    <form action=”addStudentServlet”>
           <input type=”hidden” name=”roleName” value=”教师”/>
           <p>学号:<input type=”text” name=”studentId”/></p>
           <p>姓名:<input type=”text” name=”studentName”/></p>
           <p>
               性别:

                                                                          27
烟台南山学院                                                          JSP 程序设计实验指导书


               <input type=”radio” name=”studentSex” value=”男” checked=”checked”/>
男
               <input type=”radio” name=”studentSex” value=”女”/>女
           </p>
           <p> 出 生 日 期 : <input type=”text” name=”studentBirthday”/> 格 式 :
2010-09-01</p>
           <p>专业:<input type=”text” name=”studentSpecialty”/></p>
           <p>
               <input type=”submit” name=”保存”/>
               <input type=”reset” name=”重置”/>
           </p>
     </form>
4.2 新建 Student 类
    在 com.phoenix.bo 包中新建 Student 类,输入以下代码。
    Public class Student {

       private Long studentId;
       private String studentName;
       private String studentSex;
       private Date studentBirthday;
       private String studentSpecialty;

       public Long getStudentId() {
           return studentId;
       }
       public void setStudentId(Long studentId) {
           this.studentId = studentId;
       }
       public String getStudentName() {
           return studentName;
       }
       public void setStudentName(String studentName) {
           this.studentName = studentName;
       }
       public String getStudentSex() {
           return studentSex;
       }
       public void setStudentSex(String studentSex) {
           this.studentSex = studentSex;
       }
       public Date getStudentBirthday() {
           return studentBirthday;
       }
       public void setStudentBirthday(Date studentBirthday) {

                                                                                28
烟台南山学院                                                                 JSP 程序设计实验指导书


            this.studentBirthday = studentBirthday;
        }
        public String getStudentSpecialty() {
            return studentSpecialty;
        }
        public void setStudentSpecialty(String studentSpecialty) {
            this.studentSpecialty = studentSpecialty;
        }

    }
4.3 新建业务处理类
    在 com.phoenix.util 包中新建 StudentUtil 类,增加一个方法 addStudent。
      Public List addStudent(Student student) throws SQLException{
          String sql = “insert into student values(?,?,?,?,?)”;
          conn = GetConnection.getConnection();
          pst = conn.prepareStatement(sql);
          pst.setLong(1, student.getStudentId());
          pst.setString(2, student.getStudentName());
          pst.setString(3, student.getStudentSex());
          pst.setDate(4, student.getStudentBirthday());
          pst.setString(5, student.getStudentSpecialty());
          //保存学生
          pst.executeUpdate();

            //将保存的学生信息检出,显示给用户
            sql = “select * from student where studentId=”+student.getStudentId()+””;

            rs = pst.executeQuery(sql);
            Student stu = null;
            List list = new ArrayList();
            while(rs.next()){
                 stu = Table2Object.student2Object(rs);
                 list.add(stu);
            }

            return list;

        }
4.4 向工具类 Table2Object 中增加方法 student2Object。
        Public static Student student2Object(ResultSet rs) throws SQLException {

            Student stu = new Student();
            stu.setStudentId(rs.getLong(1));
            stu.setStudentName(rs.getString(2));

                                                                                        29
烟台南山学院                                                                 JSP 程序设计实验指导书


           stu.setStudentSex(rs.getString(3));
           stu.setStudentBirthday(rs.getDate(4));
           stu.setStudentSpecialty(rs.getString(5));

           return stu;

       }
4.5 新建 AddStudentServlet 类
       public class AddStudentServlet extends HttpServlet {

       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
           doPost(req, resp);
       }

       @Override
       protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
           Student stu = new Student();
           stu.setStudentId(Long.parseLong(req.getParameter(“studentId”)));
           stu.setStudentName(req.getParameter(“studentName”));
           stu.setStudentSex(req.getParameter(“studentSex”));
           SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
           Date stuBirth;
           try {
                stuBirth = sdf.parse(req.getParameter(“studentBirthday”));
                stu.setStudentBirthday(new java.sql.Date(stuBirth.getTime()));
           } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
           }
           stu.setStudentSpecialty(req.getParameter(“studentSpecialty”));

           StudentUtil stUtil = new StudentUtil();
           try {
                List list = stUtil.addStudent(stu);
                req.setAttribute(“list”, list);
                req.getRequestDispatcher(“/jsp/Main.jsp”).forward(req, resp);
           } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                req.getRequestDispatcher(“jsp/Error.jsp”).forward(req, resp);
           }

                                                                                  30
烟台南山学院                                                JSP 程序设计实验指导书


       }

     }
     按照实验 4 的方法步骤,再参考 4.4.1 的请求,配置该 Servlet。
4.6 修改 Main.jsp
       <p>                             你                     的      名
   字:<%=session.getAttribute(“ sername”) %>&nbsp;&nbsp;&nbsp;&nbsp;
        你的身份:<%=session.getAttribute(“roleName”) %></p>
        <a href=”jsp/AddStudent.jsp?roleName=教师”>添加学生</a>
        <%
           List list = (List) request.getAttribute(“list”);
        %>
        <table border=”1” cellspacing=”0”>
           <caption>学生信息表</caption>
           <tr>
                <th>学号</th><th>姓名</th><th>性别</th><th>出生日期</th><th>专业
</th>
           </tr>
           <%
                for (int i=0;i<list.size();i++){
                     Student stu = (Student) list.get(i);
           %>
           <tr>
                <td><%=stu.getStudentId() %></td>
                <td><%=stu.getStudentName() %></td>
                <td><%=stu.getStudentSex() %></td>
                <td><%=stu.getStudentBirthday() %></td>
                <td><%=stu.getStudentSpecialty() %></td>
           </tr>
           <%
                }
           %>
        </table>
      运行程序,观察结果。由于每一个学生或教师在 role 表中都对应一条记录,记录
了每个学生或教师的角色和密码,请你修改 StudentUtil 类的 addStudent 方法,完成这一
功能,即每插入一个学生或教师记录,就在 role 表中插入一条对应的记录记载该学生或
教师的角色和密码(如密码统一预设为每个人的 ID)                                  。
【实验报告】
     1、根据上面的步骤,实现学生信息的修改和删除操作;
     2、实现学生信息的查询操作,可以指定学号、姓名、专业等,也可以查询所有学
生;
  3、实现学生修改自己信息的功能,但只能修改本人信息(禁止修改他人信息)                ,且
只能修改“出生日期”和“密码”        ,其他信息禁止修改(只能由管理员(教师)修改)        。
  提示:在登录 LoginServlet 中修改代码,将查到的 Role 对象的 roleId 属性也保存在

                                                                   31
烟台南山学院                                     JSP 程序设计实验指导书


session 中,点击“修改本人信息”链接时,直接从 session 获取 roleId(对应用户的 ID)
查到该记录,然后进行修改。
      4、实现教师信息的录入、查询、修改和删除操作。
      5、将你的实训报告连同项目,数据库备份文件一起,交给实训老师。




                                                      32
烟台南山学院                                                         JSP 程序设计实验指导书



                        附录 jspSmartUpload API 说明
1 File 类
  这个类包装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文
件大小、扩展名、文件数据等信息。File 类主要提供以下方法:
1.1 saveAs
     作用:将文件换名另存。
     原型:
     public void saveAs(java.lang.String destFilePathName)
     或
     public void saveAs(java.lang.String destFilePathName, int optionSaveAs)
     其 中,destFilePathName 是另存的文件名,optionSaveAs 是另存的选项,该选项有
三 个 值 , 分 别 是 SAVEAS_PHYSICAL, SAVEAS_VIRTUAL , SAVEAS_AUTO 。
SAVEAS_PHYSICAL 表 明 以 操 作 系 统 的 根 目 录 为 文 件 根 目 录 另 存 文 件 ,
SAVEAS_VIRTUAL 表 明 以 Web 应 用 程 序 的 根 目 录 为 文 件 根 目 录 另 存 文 件 ,
                                      当
SAVEAS_AUTO 则表示让组件决定, Web 应用程序的根目录存 在另存文件的目录时,
它会选择 SAVEAS_VIRTUAL,否则会选择 SAVEAS_PHYSICAL。
     例如,    saveAs ("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若 Web 服务器安装
在 C 盘 , 则 另 存 的 文 件 名 实 际 是 c:\ upload\sample.zip 。 而
saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若 Web 应用程 序的根目录是
webapps/jspsmartupload     ,     则      另     存      的   文      件     名     实  际 是
webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip", SAVEAS_AUTO)
执 行 时 若 Web 应 用 程 序 根 目 录 下 存 在 upload 目 录 , 则 其 效 果 同
saveAs("/upload/sample.zip",        SAVEAS_VIRTUAL)             ,       否     则  同
saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。
     建议:对于 Web 程序的开发来说,最好使用 SAVEAS_VIRTUAL,以便移植。
1.2 isMissing
  作用:这个方法用于判断用户是否选择了文件,也即对应的表单项是否有值。选择
了文件时,它返回 false。未选文件时,它返回 true。
  原型:public boolean isMissing()
1.3 getFieldName
      作用:取 HTML 表单中对应于此上传文件的表单项的名字。
      原型:public String getFieldName()
1.4 getFileName
      作用:取文件名(不含目录信息)
      原型:public String getFileName()
1.5 getFilePathName
      作用:取文件全名(带目录)
      原型:public String getFilePathName
1.6 getFileExt
      作用:取文件扩展名(后缀)
      原型:public String getFileExt()
1.7 getSize
      作用:取文件长度(以字节计)

                                                                               33
烟台南山学院                                                       JSP 程序设计实验指导书


      原型:public int getSize()
1.8 getBinaryData
     作用:取文件数据中指定位移处的一个字节,用于检测文件等处理。
     原型:public byte getBinaryData(int index)。其中,index 表示位移,其值在 0 到
getSize()-1 之间。
2 Files 类
  这个类表示所有上传文件的集合,通过它可以得到上传文件的数目、大小等信息。
有以下方法:
2.1 getCount
      作用:取得上传文件的数目。
      原型:public int getCount()
2.2 getFile
      作用:取得指定位移处的文件对象 File(这是 com.jspsmart.upload.File,不是
java.io.File,注意区分)       。
      原型:   public File getFile(int index)。其中,index 为指定位移,其值在 0 到 getCount()-1
之间。
2.3 getSize
      作用:取得上传文件的总长度,可用于限制一次性上传的数据量大小。
      原型:public long getSize()
2.4 getCollection
  作用:将所有上传文件对象以 Collection 的形式返回,以便其它应用程序引用,浏
览上传文件信息。
  原型:public Collection getCollection()
2.5 getEnumeration
  作用:将所有上传文件对象以 Enumeration(枚举)的形式返回,以便其它应用程
序浏览上传文件信息。
  原型:public Enumeration getEnumeration()
3 Request 类
   这个类的功能等同于 JSP 内置的对象 request。只所以提供这个类,是因为对于文
件上传表单,通过 request 对象无法获得表单项的值,必须通过 jspSmartUpload 组件提
供的 Request 对象来获取。该类提供如下方法:
3.1 getParameter
      作用:获取指定参数之值。当参数不存在时,返回值为 null。
      原型:public String getParameter(String name)。其中,name 为参数的名字。
3.2 getParameterValues
  作用:当一个参数可以有多个值时,用此方法来取其值。它返回的是一个字符串数
组。当参数不存在时,返回值为 null。
  原型:public String[] getParameterValues(String name)。其中,name 为参数的名字。
3.3 getParameterNames

  作用:取得 Request 对象中所有参数的名字,用于遍历所有参数。它返回的是一个
枚举型的对象。
  原型:public Enumeration getParameterNames()
4 SmartUpload 类这个类完成上传下载工作。


                                                                            34
烟台南山学院                                                                     JSP 程序设计实验指导书


4.1 上传与下载共用的方法:
      只有一个:initialize。
      作用:执行上传下载的初始化工作,必须第一个执行。
      原型:有多个,主要使用下面这个:
      public final void initialize(javax.servlet.jsp.PageContext pageContext)
      其中,pageContext 为 JSP 页面内置对象(页面上下文)                           。
4.2 上传文件使用的方法:
4.2.1 upload
  作用:上传文件数据。对于上传操作,第一步执行 initialize 方法,第二步就要执行
这个方法。
  原型:public void upload()
4.2.2 save
    作用:将全部上传文件保存到指定目录下,并返回保存的文件个数。
    原型:public int save(String destPathName)
    和 public int save(String destPathName,int option)
    其 中,destPathName 为文件保存目录,option 为保存选项,它有三个值,分别是
SAVE_PHYSICAL,SAVE_VIRTUAL 和 SAVE_AUTO。               (同 File 类的 saveAs 方法的选项
之值类似)   SAVE_PHYSICAL 指示组件将文件保存到以操作系统根目录为文件根目录的
目录下,SAVE_VIRTUAL 指示组件将文件保存到以 Web 应用程序根目录为文件根目录
的目录下,而 SAVE_AUTO 则表示由组件自动选择。
    注:save(destPathName)作用等同于 save(destPathName,SAVE_AUTO)。
4.2.3 getSize
      作用:取上传文件数据的总长度
      原型:public int getSize()
4.2.4 getFiles
  作用:取全部上传文件,以 Files 对象形式返回,可以利用 Files 类的操作方法来获
得上传文件的数目等信息。
  原型:public Files getFiles()
4.2.5 getRequest
      作用:取得 Request 对象,以便由此对象获得上传表单参数之值。
      原型:public Request getRequest()
4.2.6 setAllowedFilesList
      作用:设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组
件将抛出异常。
      原型:public void setAllowedFilesList(String allowedFilesList)
      其 中,allowedFilesList 为允许上传的文件扩展名列表,各个扩展名之间以逗号分
隔。如果想允许上传那些没有扩展名的文件,可以用两个逗号表 示。例如:
setAllowedFilesList("doc,txt,,")将允许上传带 doc 和 txt 扩展名的文件以及没有扩展名的文
件。

4.2.7 setDeniedFilesList

  作用:用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制,则上传
时组件将抛出异常。

                                                                                      35
烟台南山学院                                                           JSP 程序设计实验指导书


     原型:public void setDeniedFilesList(String deniedFilesList)
     其 中,   deniedFilesList 为禁止上传的文件扩展名列表,               各个扩展名之间以逗号分隔。
如果想禁止上传那些没有扩展名的文件,可以用两个逗号来表 示。例如:
setDeniedFilesList("exe,bat,,")将禁止上传带 exe 和 bat 扩展名的文件以及没有扩展名的文
件。
4.2.8 setMaxFileSize
  作用:设定每个文件允许上传的最大长度。
  原型:public void setMaxFileSize(long maxFileSize)
  其中,maxFileSize 为为每个文件允许上传的最大长度,当文件超出此长度时,将
不被上传。
4.2.9 setTotalMaxFileSize
     作用:设定允许上传的文件的总长度,用于限制一次性上传的数据量大小。
     原型:public void setTotalMaxFileSize(long totalMaxFileSize)
     其中,totalMaxFileSize 为允许上传的文件的总长度。
4.3 下载文件常用的方法
4.3.1 setContentDisposition
  作用:将数据追加到 MIME 文件头的 CONTENT-DISPOSITION 域。                      jspSmartUpload
组件会在返回下载的信息时自动填写 MIME 文件头的 CONTENT-DISPOSITION 域,如
果用户需要添加额外信息,请用此方法。
  原型:public void setContentDisposition(String contentDisposition)
  其 中,contentDisposition 为要添加的数据。如果 contentDisposition 为 null,则组
件将自动添加 "attachment;",以表明将下载的文件作为附件,结果是 IE 浏览器将会提
示另存文件,而不是自动打开这个文件(IE 浏览器一般根据下载的文件扩 展名决定执
行什么操作,扩展名为 doc 的将用 word 程序打开,扩展名为 pdf 的将用 acrobat 程序打
开,等等)。
4.3.2 downloadFile
      作用:下载文件。
      原型:共有以下三个原型可用,第一个最常用,后两个用于特殊情况下的文件下载
(如更改内容类型,更改另存的文件名)                         。
      ① public void downloadFile(String sourceFilePathName)
      其中,sourceFilePathName 为要下载的文件名(带目录的文件全名)
      ② public void downloadFile(String sourceFilePathName,String contentType)
      其中,sourceFilePathName 为要下载的文件名(带目录的文件全名),contentType
为内容类型(MIME 格式的文件类型信息,可被浏览器识别)                                 。
      ③ public void downloadFile(String sourceFilePathName,String contentType,String
destFileName)
      其中,sourceFilePathName 为要下载的文件名(带目录的文件全名),contentType
为内容类型(MIME 格式的文件类型信息,可被浏览器识别),destFileName 为下载后默
认的另存文件名。
      本 文 来 自               CSDN      博 客 , 转 载 请 标 明 出 处 :
http://blog.csdn.net/xlong_chp/archive/2006/06/08/780827.aspx




                                                                                  36

								
To top