JSP的9个内置对象-response

response代表服务器对客户端的响应。大部分时候,程序无须使用response来响应客户端请求,因为有个更简单的响应对象-out。它是页面输出流,是JstWriter的实例。JspWriter是Writer的子类,Writer是字符流,无法输出非字符内容-即无法输出字节流。

假如需要在JSP页面中动态生成一幅位图,使用out作为响应将无法完成,此时必须使用response作为响应输出。

1.response响应生成图片

image.jsp在客户端生成一张图片。其源代码如下:

<%@ page import="java.awt.image.*, javax.imageio.*, java.io.*, java.awt.*"  %>
<%
//创建BufferedImage对象
BufferedImage image=new BufferedImage(400,400,BufferedImage.TYPE_INT_RGB);
//以Image对象获取Graphics对象
Graphics g=image.getGraphics();
//使用Graphics画图,所画的图像将会出现在image对象中
g.fillRect(0,0,400,400);
//设置颜色:红
g.setColor(new Color(255,0,0));
//画出一段弧
g.fillArc(20,20,100,100,30,120);
//设置颜色绿
g.setColor(new Color(0,255,0));
g.fillArc(20,20,100,100,150,120);
//设置颜色蓝
g.setColor(new Color(0,0,255));
g.fillArc(20,20,100,100,270,120);
//设置颜色黑
g.setColor(new Color(0,0,0));
//画出3个字符串
g.drawString("red:climb",300,80);
g.drawString("green:swim",300,120);
g.drawString("blue:jump",300,160);
g.dispose();
//将图像输出到页面响应
ImageIO.write(image,"bmp",response.getOutputStream());
%>
在页面image2.jsp中显示image.jsp生成的图片。image2.jsp的源代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java"  %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<img src="image.jsp">
<BODY>
<HTML>
其运行结果截图如下:



2.重定向

重定向是response的另外一个用处,与forward不同的是,重定向会丢失所有的请求参数及请求属性。


3.增加cookie

Cookie通常用于网站记录客户的某些信息,比如客户的用户名及客户的喜好等。
Cookie与session的不同之处在于:session关闭浏览器后就失效,但Cookie会一直存放在客户端机器上,直到超出Cookie的生命期限。
response提供了一个方法增加cookie:
void addCookie(Cookie cookie)
增加cookie的步骤如下:
(1)创建cookie实例;
(2)设置cookie的生命期限;
(3)向客户端写cookie。
页面AddCookie.jsp向客户端写一个username的cookie。其代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java"  %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%
//获取请求参数
String name=request.getParameter("name");
//以获取到的请求参数为值,创建一个cookie对象
Cookie c=new Cookie("username",name);
//设置cookie对象的生存期限为60s
c.setMaxAge(60);
//向客户端增加cookie对象
response.addCookie(c);
%>
<BODY>
<HTML>
如果浏览器没有阻止cookie,在地址栏输入http://localhost:8080/Me/AddCookie.jsp?name=christy ,执行该页面后,网站已经将客户端的username的cookie写入客户端机器。

通过request对象的getCookies()方法来访问Cookie,该方法将返回Cookie的数组,遍历数组的每个元素,找出希望访问的Cookie即可。页面GetCookie.jsp负责访问Cookie,其源代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java"  %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%
//获取本站在客户端上保留的所有Cookie
Cookie[] cookies=request.getCookies();
//遍历客户端上的每个Cookie
for(Cookie c:cookies)
{
	//如果Cookie的名为username,表明该Cookie是我们需要访问的Cookie
	if(c.getName().equals("username"))
		out.println(c.getValue());
}
%>
<BODY>
<HTML>

运行页面AddCookie.jsp之后60s内运行GetCookie.jsp,可以得到刚才在客户端写入的cookie。结果如下:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值