实验三 HTTP响应对象
一、实验目的
1. 了解和掌握如何从响应对象获得输出流对象; 2. 掌握如何设置响应类型;
3. 掌握如何设置响应头和状态码; 4. 重点掌握如何实现响应重定向。 二、实验原理
对Servlet的请求目的是要获得响应消息。Servlet要向用户发送响应数据首先要获得输出流对象。另外,通过响应对象还可向客户端发送状态码,也可以设置有关响应头,还可以对响应重定向。
三、实验内容与步骤
(一) 通过设置响应内容类型构建Excel电子表格 package com.demo; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*;
public class ExcelServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setHeader(\
response.setContentType(\ PrintWriter out = response.getWriter();
out.println(\ out.println(\学号\\t姓名\\t性别\\t年龄\\t所在系\ out.println(\李勇\\t男\\t20\\t信息\ out.println(\刘晨\\t女\\t19\\t数学\ } }
该程序的运行结果如下图所示:
图3.1 生成Excel电子表格
(二)向客户发送二进制文件 package com.demo; import java.io.*; import java.util.*;
7
import javax.servlet.*; import javax.servlet.http.*;
public class DownloadServlet extends HttpServlet{ public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
response.setContentType(\ File f = new File(\
FileInputStream is = new FileInputStream(f);
ServletOutputStream os = response.getOutputStream(); byte[] bytearray = new byte[1024]; int bytesread = 0;
while( (bytesread = is.read(bytearray) ) != -1 ){ os.write(bytearray, 0, bytesread); }
os.flush(); } }
注意:此Servlet正确运行,需要将servlet-api.jar文件复制到C盘根目录下。
(三)下面的ShowTimeServlet通过设置refresh响应头实现每2秒钟刷新一次页面。 package com.demo; import java.io.*; import java.util.*;
import java.text.SimpleDateFormat; import javax.servlet.*; import javax.servlet.http.*;
public class ShowTimeServlet extends HttpServlet{ public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
response.setContentType(\ response.setHeader(\
PrintWriter out = response.getWriter(); Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(\ String s = sdf.format(date);
out.println(\ out.println(\
out.println(\每5秒钟刷新一次页面
\ out.println(\现在的时间是:\
out.println(\ out.println(\ } }
(四)响应重定向
【步骤1】建立下面的login.html登录页面
8