Java 25---HttpServletResponse相关API

导读

1.Http协议请求流程
2.对响应操作
在这里插入图片描述

在这里插入图片描述

Http协议请求流程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对响应操作


HttpServletResponse  resp
//在页面显示内容
字符输出 PrintWriter pw=resp.getWrite();
//设置内容类型
resp.setContentType

实例:

package com.oracleoaec.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class ServletDemo1 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置响应头--响应正文的编码集格式(解决响应中文乱码问题,下边的更常用)
//		resp.setHeader("Content-Type", "text/html; charset=utf-8");
		//解决响应正文的中文乱码问题
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter writer = resp.getWriter();
		writer.write("<a href='#'>罗玉凤</a>");
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}


字节输出  ServletOutputStream os = resp.getOutputStream();

实例

package com.oracleoaec.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

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

public class ServletDemo2 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置资源转化类型,可以百度查HttpContentType资源表
		resp.setContentType("image/jpeg");
		ServletOutputStream os = resp.getOutputStream();//获得字节输出流
		//边读边写
		//图片资源
		File file = new File("C:\\Users\\Administrator\\Desktop\\教学课堂笔记\\images\\m.jpg");
		InputStream is = new FileInputStream(file);//字节读取流
		//缓冲区
		byte[] b = new byte[1024*1024];
		int a = -1;//每次读取到的数量
		while((a=is.read(b))!=-1){//循环读
			os.write(b, 0, a);//循环写
		}
		is.close();
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

生成验证码

首先要导入jar包ValidateCode.jar到WebContent->WEB-INF->lib


package com.oracleoaec.servlet;

import java.io.IOException;

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

import cn.dsna.util.images.ValidateCode;

public class ServletDemo3 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//width 宽
		//height 高
		//codeCount 验证码的数量
		//lineCount 干扰线的数量
		ValidateCode vc = new ValidateCode(120, 20, 4, 9);
		//在服务器后台打印验证码
		System.out.println(vc.getCode());
		vc.write(resp.getOutputStream());
		
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

//设置响应头信息
resp.setHeader(String name, String value) 

实例

public class ServletDemo4 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 通过路径得到一个输入流
		String path = "D:\\阿里巴巴 Java 开发手册.pdf";
		FileInputStream fis = new FileInputStream(path);
		// 创建字节输出流
		ServletOutputStream sos = resp.getOutputStream();

		// 得到要下载的文件名
		String filename = path.substring(path.lastIndexOf("\\") + 1);

		// 设置文件名的编码
		filename = URLEncoder.encode(filename, "UTF-8");// 将不安全的文件名改为UTF-8格式

		// 告知客户端要下载文件
		resp.setHeader("content-disposition", "attachment;filename=" + filename);
		// 文件下载http://tool.oschina.net/commons
		resp.setHeader("content-type", "application/pdf");

		// 执行输出操作
		int len = 1;
		byte[] b = new byte[1024*1024];
		while ((len = fis.read(b)) != -1) {
			sos.write(b, 0, len);
		}
		
		sos.close();
		fis.close();
	}

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

//请求重定向
sendRedirect(String location) 

实例

package com.oracleoaec.servlet;

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 ServletDemo5 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//逻辑验证
		System.out.println("我是S5");
		int a = 1;
		if(a!=1){
			//跳转资源到doS2
			resp.sendRedirect("doS2");//重定向到doS2
		}
	}

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

图解

在这里插入图片描述

补充

//告知浏览器使用什么码表
resp.setHeader("content-type", "text/html;charset=UTF-8");
//告知客户端不缓存
resp.setHeader("pragma", "no-cache");
resp.setHeader("cache-control", "no-cache");
resp.setDateHeader("expires", 0);
//设置响应状态码
resp.setStatus(int sc) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值