發送數據到瀏覽器的方法
設定回應標頭的方法
設定HTTP Status Code的方法
HTTP Status Code
HTTPServletResponse 定義了很多狀態碼
HttpServletResponse常見的應用
1.使用PrintWriter將資料回傳給瀏覽器
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demo")
public class Demo extends HttpServlet {
private static final long serialVersionUID = -7819316605366593662L;
public Demo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定UTF-8編碼
response.setCharacterEncoding("UTF-8");
//設定header告訴瀏覽器要以UTF-8的编码显示資料,如果沒有設定,瀏覽器顯示中文字將會出現亂碼
response.setHeader("content-type", "text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.println("你好");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
運行結果如下:
2.檔案下載
在網頁開發中下載檔案大家經常使用到的功能,使用HttpServletResponse就可以實現這個功能。話不多說直接上code.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demo")
public class Demo extends HttpServlet {
private static final long serialVersionUID = -7819316605366593662L;
public Demo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//1.讀取檔案
File downloadFile = new File("D:\\測試.jpg");
//2.下載文件的名稱
String fileName = downloadFile.getName();
//3.設定content-disposition標頭讓瀏覽器以下载的形式打開文件
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
int len;
InputStream in = new FileInputStream(downloadFile);
//3.設定緩衝區
byte[] buffer = new byte[1024];
//4. 透過response物件獲取OutputStream
OutputStream os = response.getOutputStream();
//5.將FileInputStream寫入到buffer緩衝區;
while ((len = in.read(buffer)) > 0) {
//6.使用OutputStream将緩衝區的資料输出到瀏覽器
os.write(buffer, 0, len);
}
os.close();
in.close();
}
P.S: 檔案是中文名稱要使用URLEncoder.encode方法進行編碼,否則會出現檔案名亂會是亂碼。
運行結果如下:
3. 產生驗證碼.
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demo")
public class Demo extends HttpServlet {
private static final long serialVersionUID = -7819316605366593662L;
public Demo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置refresh標頭讓瀏覽器每3秒钟刷新一次
response.setHeader("refresh", "3");
//在記憶體產生一張寬60高20的圖片
BufferedImage image = new BufferedImage(60, 20, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)image.getGraphics();//得到圖片
g.setColor(Color.WHITE);//设置图片
g.fillRect(0, 0, 60, 20);//背景顏色填滿
//3.將一個亂數寫在圖片上
g.setColor(Color.RED);//設定图片上字體的顏色
g.setFont(new Font(null, Font.BOLD, 20));
g.drawString(randomNum(), 0, 20);
//4.設定標頭头控制瀏覽器以图片的方式打開
response.setContentType("image/jpeg");
//5.設定响应头控制浏览器不缓存图片数据
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
//6.將图片送出給瀏覽器
ImageIO.write(image, "jpg", response.getOutputStream());
}
private String randomNum()
{
Random random = new Random();
String num = random.nextInt(99999)+"";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 5-num.length(); i++)
sb.append("0");
num = sb.toString()+num;
return num;
}
運行結果如下:







沒有留言:
張貼留言