您的位置:首页 > 理论基础 > 计算机网络

HttpServletResponse(response和request)

2013-11-06 15:33 309 查看
客户端每一次请求Web服务器,分别创建一个request对象和response对象,要获取提交的数据找request,向客户机输出数据找response

WEB服务器回送给WEB客户端的HTTP响应分三个部分:

1、状态行(HTTP响应的响应状态行包活HTTP版本、状态代码和提示信息) 2、响应消息头 3、消息正文

addHeader与setHeader方法

addIntHeader与setIntHeader方法

addDateHeader与setDateHeader方法

setContentLength方法

setContentType方法:用于设置Servlet输出内容的MIME类型,对于HTTP协议来说,就是设置Content-Type响应头字段的值。如“text/html;charset=UTF-8”

setCharacterEncoding方法:用于设置输出内容的MIME声明中的字符集编码,对HTTP协议来说,就是设置Content-Type头字段中的字符编码部分。

package www.csdn.net.daya35.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 DemoServlet1 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置响应的状态码

response.setStatus(response.SC_FOUND);

//重定向

response.sendRedirect("./index.jsp");*/

try {

int i=1/0;

} catch (Exception e) {

e.printStackTrace();

//设置错误

response.sendError(response.SC_NOT_FOUND,e.getMessage());

}

//设置头信息

response.setIntHeader("status", 500);//

response.setHeader("content-length", "10");//内容长度

response.setHeader("date", "2010-10-10");//响应日期

response.setContentType("text/html;charset=UTF-8");

response.setHeader("content-type", "texy/html;charset=UTF-8");

response.setContentLength(20);

response.setCharacterEncoding("UTF-8");

response.getWriter().print("中国,我爱你!!");

//以下载出出现

response.setContentType("text/htmlxx;charset=UTF-8");

response.getOutputStream().write(97);

//response.getWriter().write(98+"");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

}
response常见应用

向客户端输出中文数据 (分别以OutPutStream和printWriter输出)

package www.csdn.net.daya35.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 DemoServlet2 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//头响应

response.setContentType("text/html");

response.getOutputStream().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());

//"军哥".getBytes() 以gb2312编码打开会乱码

response.getOutputStream().write("军哥".getBytes("UTF-8"));

}

public void test3(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//头响应

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

//"军哥".getBytes() 以gb2312编码打开会乱码

response.getWriter().print("军哥x");

}

public void test2(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//头响应

response.setContentType("text/html;charset=UTF-8");

//"军哥".getBytes() 以gb2312编码打开不会乱码

response.getOutputStream().write("军哥xxx".getBytes("UTF-8"));

}

public void test1(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

//"军哥".getBytes() 以gb2312编码打开会乱码

response.getOutputStream().write("军哥xxxx".getBytes("UTF-8"));

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

}

文件下载(先在WEB-INF建一个res文件夹拷贝一张图片)

package www.csdn.net.daya35.servlet;

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.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class DemoServlet3 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置编码

response.setCharacterEncoding("UTF-8");

//1.设置响应类型

response.setContentType("image/jpeg");

//2.获取下载的资源

//获取路径

String path = this.getServletConfig().getServletContext().getRealPath("/res/h.jpg");

System.out.println(path);

//获取文件名称

String fileName=path.substring(path.lastIndexOf("\\")+1);

//设置浏览器以下载的方式打开数据

response.setHeader("content-disposition", "attachment;fileName="+URLEncoder.encode(fileName, "UTF-8"));

//URLEncoder.encode 经过URL编码(UTF-8)

//转换成文件对象

File file = new File(path);

//创建流对象

InputStream is = new FileInputStream(file);

//3.写出

//输出流对象

OutputStream os = response.getOutputStream();

//定义读取的长度

int len=0;

//定义缓冲区

byte buffer[]= new byte[1024];

//循环读取

while((len=is.read(buffer))!=-1){

//写入

os.write(buffer, 0, len);

}

//立即写入

os.flush();

//关闭操作

os.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

}

输出随机图片

package www.csdn.net.day36.servlet;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ImgServlet extends HttpServlet {

private static final int WIDTH = 0;

private static final int HEIGHT = 0;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//禁止浏览器缓存

response.setHeader("expires","0" );

response.setHeader("Cache-control", "no-cache");

response.setHeader("Pragma", "no-cache");

//1通知浏览器以图片的方式打开数据

response.setContentType("image/jpeg");

final int WIDTH=40;

final int HEIGHT=20;

//2创建图片

BufferedImage image=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);

//3.得到图形绘制的对象

Graphics g=image.getGraphics();

//设置背景颜色

setBackGroud(g);

//设置边框

setBorder(g);

//绘制内容

drawContent(g);

//绘制干扰线

drawDistbLine(g);

//把图片显示绘制浏览器

ImageIO.write(image, "jpeg", response.getOutputStream());

String resourse="\u7684\u4e00\u4e86\u6211\u4e0d\u5728\u4eec\u6765";

//获取字符的长度

int length=resourse.length();

//随机操作对象

Random r=new Random();

//存储字符的对象

StringBuffer sb=new StringBuffer();

for(int i=0;i<4;i++){

//随机产生数字

int index=r.nextInt(length);

//获取字符

char c=resourse.charAt(index);

//拼接字符

sb.append(c);

}

g.setColor(Color.DARK_GRAY);

g.drawString(sb.toString(), 20, 20);

}

/***

* 绘制内容

* @param g

*/

private void drawContent(Graphics g) {

}

/***

* 绘制干扰线

* @param g

*/

private void drawDistbLine(Graphics g) {

g.setColor(Color.BLACK);

Random r=new Random();

for(int i=0;i<4;i++){

int x1=r.nextInt(WIDTH);

int y1=r.nextInt(HEIGHT);

int x2=r.nextInt(WIDTH);

int y2=r.nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);

}

}

private void setBorder(Graphics g) {

g.setColor(Color.black);

g.fillRect(0, 0, WIDTH-2,HEIGHT-2 );

}

private void setBackGroud(Graphics g) {

//绘制矩形

g.setColor(Color.BLUE);

g.fillRect(0, 0, WIDTH, HEIGHT);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐