摘要:的學習與內置對象對象代表服務器對客戶端的響應。在增加之前必須先創建對象。一次會話的含義是從客戶端瀏覽器連接服務器開始,到客戶端服務與斷開為止。范圍內的屬性可以在多個頁面的跳轉之間共享。
Java Server Page的學習(resopnse與session)
response的三個作用:respone代表服務器對客戶端的響應。如果要在JSP頁面中動態生成一副位圖
或者輸出一個PDF文檔,要用response作為響應輸出。
1、響應生成非字符響應
response是HttpServletResponse接口的實例,該接口提供了一個getOutputStream()方法,
該方法返回響應輸出字節流
<%@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()); %>
2、重定向
和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"); %>
3、向客戶端增加cookie
response提供方法void addCookie(Cookie cookie)來增加cookie。在增加cookie之前必須先創建Cookie對象。創建Cookie實例,Cookie的構造器為Cookie(String name,String value)
設置Cookie的生命期限,即該Cookie在多長時間內有效
向客戶端寫Cookie
添加cookie:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">增加Cookie <% //獲取請求參數 String name = request.getParameter("name"); //以獲取到的請求參數為值,創建一個Cookie對象 Cookie c = new Cookie("username",name); //設置Cookie對象的生存期限 c.setMaxAge(24*3600); //向客戶端增加Cookie對象 response.addCookie(c); %>
讀取cookie:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">讀取Cookie <% //獲取本站在客戶端上保留的所有cookie Cookie[] cookies = request.getCookies(); //遍歷客戶端上的每個Cookie for(Cookie c : cookies) { //如果Cookie的名為username,表明該Cookie是需要訪問的Cookie if(c.getName().equals("username")) { out.println(c.getValue()); } } %>
session的作用session對象代表一次用戶會話。一次會話的含義是從客戶端瀏覽器連接服務器開始,到客戶端服務與斷開為止。(session里的屬性必須是可序列化的)
通常用于跟蹤用戶的會話信息,如判斷用戶是否登錄系統。session范圍內的屬性可以在多個頁面的跳轉之間共享。
session對象是HttpSession的實例,HttpSession常用的兩個方法:setAttribute(String attName,Object attValue):設置session范圍內attName屬性的值為attValue
getAttribute(String attName):返回session范圍內attName屬性的值
表單頁面:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%>表單頁面
處理頁面:
<%@ page contentType="text/html; charset=utf-8" language="java"%> <%@ page import="java.util.*" %> <% //取出session范圍的itemMap屬性 MapitemMap = (Map )session.getAttribute("itemMap"); //如果Map對象為空,則初始化Map對象 if(itemMap == null) { itemMap = new HashMap (); 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); %> new document 書:<%=itemMap.get("書")%>
水:<%=itemMap.get("水")%>
人:<%=itemMap.get("人")%>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67779.html
摘要:元素用于指定過濾器的完整的限定類名。除此之外,過濾器不會被調用。參數用于訪問后續過濾器。還可以為指定目標資源為某個,例如當用戶訪問時,會執行名字為的,這時會執行過濾器。防止中文亂碼過濾器項目使用框架時。 文章首發在CSDN博客,轉載請務必注明以下所有鏈接,否則考慮法律追究責任。 CSDN地址:http://blog.csdn.net/tzs_1041218129/article/det...
摘要:一基本語法聲明聲明語句成員變量或方法聲明語句聲明局部變量注意區分二者區別。局部變量在每次調用方法時都會重新初始化。注意此時代碼是被原封不動地導入,所以變量的作用域仍然在這個中。動作,運行期間的命令廣義的擁有私有變量,和等方法的工具類。 JSP(JAVA Server Pages):一種特殊的Servlet,直接在HTML中內嵌JSP代碼,由JSP Engine自動轉為Servlet代碼...
摘要:方法的參數不但可以使相對于上下文根的路徑,而且可以是相對于當前的路徑。如和都是合法的路徑。 轉發與重定向區別是什么 在調用方法上 轉發 調用 HttpServletRequest 對象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 調用 HttpServletResponse 對象的方法 res...
閱讀 3304·2021-11-18 10:02
閱讀 2751·2019-08-30 13:56
閱讀 407·2019-08-29 12:36
閱讀 521·2019-08-28 18:07
閱讀 712·2019-08-27 10:51
閱讀 3449·2019-08-26 12:13
閱讀 3286·2019-08-26 11:46
閱讀 3315·2019-08-23 12:00