HttpServletResponse(response和request)

客户端每一次请求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);

}







}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值