respone表明服務器對客戶端的響應。若是要在JSP頁面中動態生成一副位圖<br/>
或者輸出一個PDF文檔,要用response做爲響應輸出。html
一、響應生成非字符響應<br/>
response是HttpServletResponse接口的實例,該接口提供了一個getOutputStream()方法,<br/>該方法返回響應輸出字節流<br/>java
<%@page contentType="image/png" language="java"%> <%@page import="java.awt.image.*,javax.imageio.*,java.io.*,java.awt.*"%> <% //建立BufferedImage對象 BufferedImage image = new BufferedImage(340,160,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)); g.setFont(new Font("Arial Black",Font.PLAIN,16)); g.drawString("red:climb", 200,60); g.drawString("green:swim", 200,100); g.drawString("blu:jump",200,140); g.dispose(); //將圖像輸出到頁面的響應 ImageIO.write(image, "png", response.getOutputStream()); %>
二、重定向<br/>
和forward不一樣的是,response重定向會丟失全部的請求參數和request範圍的屬性,由於重定向將生成第二次請求。HttpServletResponse提供了一個sendRedirect(String path)方法,該方法用於重定向到path資源。數組
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""> <% //生成頁面響應 out.println("===="); //重定向到redirect-result.jsp頁面 response.setRedirect("redirect-result.jsp"); %>
三、向客戶端增長cookie<br/>
response提供方法void addCookie(Cookie cookie)來增長cookie。在增長cookie以前必須先建立Cookie對象。<br/>瀏覽器
- 建立Cookie實例,Cookie的構造器爲Cookie(String name,String value)
- 設置Cookie的生命期限,即該Cookie在多長時間內有效
- 向客戶端寫Cookie
添加cookie:服務器
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""> <!DOCTYPE html> <html> <head> <title>增長Cookie</title> </head> <body> <% //獲取請求參數 String name = request.getParameter("name"); //以獲取到的請求參數爲值,建立一個Cookie對象 Cookie c = new Cookie("username",name); //設置Cookie對象的生存期限 c.setMaxAge(24*3600); //向客戶端增長Cookie對象 response.addCookie(c); %> </body> </html>
讀取cookie:cookie
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""> <!DOCTYPE html> <html> <head> <title>讀取Cookie</title> </head> <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>
session對象表明一次用戶會話。一次會話的含義是從客戶端瀏覽器鏈接服務器開始,到客戶端服務與斷開爲止。(session裏的屬性必須是可序列化的)session
一般用於跟蹤用戶的會話信息,如判斷用戶是否登陸系統。session範圍內的屬性能夠在多個頁面的跳轉之間共享。
session對象是HttpSession的實例,HttpSession經常使用的兩個方法:jsp
- setAttribute(String attName,Object attValue):設置session範圍內attName屬性的值爲attValue
- getAttribute(String attName):返回session範圍內attName屬性的值
表單頁面:post
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%> <!DOCTYPE html> <html> <head> <title>表單頁面</title> </head> <body> <form method="post" action="processBuy.jsp"> 書:<input type="checkbox" name="item" value="book"/><br/> 水:<input type="checkbox" name="item" value="water"/><br/> 人:<input type="checkbox" name="item" value="people"/><br/> </form> </body> </html>
處理頁面:學習
<%@ page contentType="text/html; charset=utf-8" language="java"%> <%@ page import="java.util.*" %> <% //取出session範圍的itemMap屬性 Map<String,Integer> itemMap = (Map<String,Integer>)session.getAttribute("itemMap"); //若是Map對象爲空,則初始化Map對象 if(itemMap == null) { itemMap = new HashMap<String,Integer>(); itemMap.put("書",0); itemMap.put("水",0); itemMap.put("人",0); } //獲取上一個頁面的請求參數 String[] buys = request.getParameterValues("item"); //遍歷數組的各元素 for(String item:buys) { //若是item爲book,表示書籍 if(item.equals("book")) { int num1 = itemMap.get("書").intValue(); //將書的數量加1 itemMap.put("書",num1+1); }else if(item.equals("water")) { int num2 = itemMap.get("水").intValue(); //將水的數量加1 itemMap.put("水",num2+1); }else if(item.equals("people")) { int num3 = itemMap.get("人").intValue(); //將人的數量加1 itemMap.put("人",num3+1); }else } //將itemMap對象放到設置成session範圍的itemMap屬性 session.setAttribute("itemMap",itemMap); %> <!DOCTYPE html> <html> <head> <title>new document</title> </head> <body> 書:<%=itemMap.get("書")%><br/> 水:<%=itemMap.get("水")%><br/> 人:<%=itemMap.get("人")%><br/> <input type="submit" value="提交"/> </body> </html>