2024年4月22日发(作者:)

3.3 实验三 HTTP响应对象

一.实验目的

1. 了解和掌握如何从响应对象获得输出流对象。

2. 掌握如何设置响应类型。

3. 掌握如何设置响应头和状态码。

4. 重点掌握如何实现响应重定向。

二.实验内容

任务1:在Eclipse的helloweb项目中创建下面的Servlet,实现通过设置响应内容类型

构建Excel电子表格。

package ;

import .*;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/ExcelServlet")

public class ExcelServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException{

der("Content-Encoding","gb2312");

tentType("application/-excel;charset=gb2312");

PrintWriter out = ter();

n("学号t姓名t性别t年龄t所在系");

n("95001t李勇t男t20t信息");

n("95002t刘晨t女t19t数学");

}

}

该程序的运行结果如下图所示:

图3.1 生成Excel电子表格

修改上述Servlet,将下面一行:

tentType("application/-excel;charset=gb2312");

改为:

1

tentType("application/msword;charset=gb2312");

重新访问该Servlet,看结果如何?

任务2:下面的ShowTimeServlet通过设置refresh响应头,实现每2秒钟刷新一次页面。

package ;

import .*;

import .*;

import DateFormat;

import t.*;

import .*;

public class ShowTimeServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException{

tentType("text/html;charset=gb2312");

der("refresh","2");

PrintWriter out = ter();

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm:ss");

String s = (date);

n("");

n("");

n("

每2秒钟刷新一次页面

");

n("

现在的时间是:"+s+"

");

n("");

n("");

}

}

任务3:响应重定向

步骤1:建立下面的登录页面

Login Page

cellpading="2" cellspacing="1">

2

步骤2:编写一个名为RedirectServlet的Servlet,在其中检索用户名和口令参数值,然

后判断其是否正确(若用户名和口令都为admin即认为正确),如果正确将响应重定向到

页面,否则将响应重定向到页面,这两个页面请你自己编写,存放

在应用程序根目录。下面是Servlet的部分代码。

package ;

import .*;

import t.*;

import .*;

public class RedirectServlet extends HttpServlet{

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException{

// 此处添加若干代码,获取用户名和密码值

if(){

direct();

}else{

direct();

}

}

}

任务4:实现文件上传

步骤1:建立页面,主要代码如下:

用户名:
密  码:

 

1、

2、

3、

4、

步骤2:将文件复制到webcontent文件夹中的lib目录中。

步骤3:建立do_文件,处理上传的文件。

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page language="java" import=".*"%>

3

<%

pload mySmartUpload=new

. SmartUpload();

int count=0;

lize(pageContext);

alMaxFileSize(1000000);

();

//设置上传路径

String path = getServletContext().getRealPath("/");

path=path+""+"upload";

//n(path+"

");

//设置上传路径

try{

count = (path);

n(count + " file(s) uploaded.");

("

");

for (int i=0;i

File myFile=es().getFile(i);

String fn=eName();

//("

src=uploadupload"+eName()+">");

//("

");

//("文件"+fn+"的地址为:");

//( "localhost:8083/upload/upload/"+fn+"

"

);

}

}

catch (Exception e)

{

n(ng());

}

%>

步骤4:在n(path+"

");所示的目录中创建upload文件夹,用

来存放上传的文件。

任务4:实现文件下载

步骤1:建立页面,主要代码如下:

下载

点击下载

步骤2:建立do_文件,主要代码如下:

<%@ page contentType="text/html;charset=gb2312" import=".*" %>

<%

SmartUpload su = new SmartUpload();// 新建一个SmartUpload对象

lize(pageContext); // 初始化

tentDisposition(null); // 设定contentDisposition为null以禁止浏览器自动打开

4

文件

String path = getServletContext().getRealPath("/");

path=path+""+"upload";

adFile(path+"/"); // 下载文件

%>

三.思考题

1. 如何理解Servlet的生命周期?

2. 如何理解请求转发与响应重定向?

5