关于jsp中response对象的一些认识

1、生成非字符的响应

在JSP中一般通过out对象向客户端输出信息,但是,out对象是字符流,对于一些非字符的信息就无能为力了,此时需要用到response对象。

示例:imageJsp.jsp

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.Image"%>
<%@page import="java.awt.Color"%>
<%@page import="javax.imageio.ImageIO"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<%
BufferedImage image = new BufferedImage(340,160,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.CYAN);
g.fillRect(0,0,400,400);
g.setColor(Color.blue);
g.drawString("我是图片上的文字",100,100);
g.dispose();
ImageIO.write(image,"jpg",response.getOutputStream());
//response.reset();
%>
</body>
</html>

 输出效果:

 

 

2、重定向

应注意区分重定向(redirect)与forward的区别:

forward redirect
执行forward后仍然是同一个请求 执行redirect,等价于重新发起一次请求
执行forward后,目标页面仍然可以拿到请求参数、和request范围的属性值。 执行redirect后,原请求参数、request范围的属性值全部丢失。
浏览器地址栏中的URL不发生变化 浏览器地址栏中的URL变为重定向的目标URL,等价于在浏览器地址栏输入新的URL,然后回车。

3、向客户端写cookie信息

最常用的功能:有些网站“记住我的用户名和密码”,“下次自动登录”。

使用示例:cookieJsp.jsp

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>


<%@page import="javax.servlet.http.Cookie"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<%

String username = "张三";
String password = "123456";

//一般情况下,cookie中的值不允许出现中文,故而通过URLEncoder对cookie值进行编码。
Cookie cookie1 = new Cookie("username",URLEncoder.encode(username,"gbk"));
Cookie cookie2 = new Cookie("password",URLEncoder.encode(password,"gbk"));

//设置cookie的有效期
cookie1.setMaxAge(24*3600);
cookie2.setMaxAge(24*3600);

//通过response对象将cookie信息写入客户端
response.addCookie(cookie1);
response.addCookie(cookie2);

//读取客户端的cookie信息
Cookie cookies[] = request.getCookies();
for(Cookie c:cookies){
	System.out.println("name="+URLDecoder.decode(c.getName(),"gbk")+",value="+URLDecoder.decode(c.getValue(),"gbk"));
}
%>
</body>
</html>

 客户端首次访问cookieJsp.jsp页面时,会向客户端写cookie信息,第二次访问cookieJsp.jsp页面时,就可以看到类似如下信息:

 

 

 

 

猜你喜欢

转载自huangqiqing123.iteye.com/blog/1435318
今日推荐