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页面时,就可以看到类似如下信息: