摘要:的學(xué)習(xí)與內(nèi)置對(duì)象對(duì)象代表服務(wù)器對(duì)客戶端的響應(yīng)。在增加之前必須先創(chuàng)建對(duì)象。一次會(huì)話的含義是從客戶端瀏覽器連接服務(wù)器開始,到客戶端服務(wù)與斷開為止。范圍內(nèi)的屬性可以在多個(gè)頁(yè)面的跳轉(zhuǎn)之間共享。
Java Server Page的學(xué)習(xí)(resopnse與session)
response的三個(gè)作用:respone代表服務(wù)器對(duì)客戶端的響應(yīng)。如果要在JSP頁(yè)面中動(dòng)態(tài)生成一副位圖
或者輸出一個(gè)PDF文檔,要用response作為響應(yīng)輸出。
1、響應(yīng)生成非字符響應(yīng)
response是HttpServletResponse接口的實(shí)例,該接口提供了一個(gè)getOutputStream()方法,
該方法返回響應(yīng)輸出字節(jié)流
<%@page contentType="image/png" language="java"%> <%@page import="java.awt.image.*,javax.imageio.*,java.io.*,java.awt.*"%> <% //創(chuàng)建BufferedImage對(duì)象 BufferedImage image = new BufferedImage(340,160,BufferedImage.TYPE_INT_RGB); //以Image對(duì)象獲取Graphics對(duì)象 Graphics g = image.getGraphics(); //使用Graphics畫圖,所畫的圖像將會(huì)出現(xiàn)在image中 g.fillRect(0, 0, 400, 400); //設(shè)置顏色,畫弧 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); //設(shè)置顏色畫出三個(gè)字符串 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(); //將圖像輸出到頁(yè)面的響應(yīng) ImageIO.write(image, "png", response.getOutputStream()); %>
2、重定向
和forward不同的是,response重定向會(huì)丟失所有的請(qǐng)求參數(shù)和request范圍的屬性,因?yàn)橹囟ㄏ驅(qū)⑸傻诙握?qǐng)求。HttpServletResponse提供了一個(gè)sendRedirect(String path)方法,該方法用于重定向到path資源。
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""> <% //生成頁(yè)面響應(yīng) out.println("===="); //重定向到redirect-result.jsp頁(yè)面 response.setRedirect("redirect-result.jsp"); %>
3、向客戶端增加cookie
response提供方法void addCookie(Cookie cookie)來增加cookie。在增加cookie之前必須先創(chuàng)建Cookie對(duì)象。創(chuàng)建Cookie實(shí)例,Cookie的構(gòu)造器為Cookie(String name,String value)
設(shè)置Cookie的生命期限,即該Cookie在多長(zhǎng)時(shí)間內(nèi)有效
向客戶端寫Cookie
添加cookie:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">增加Cookie <% //獲取請(qǐng)求參數(shù) String name = request.getParameter("name"); //以獲取到的請(qǐng)求參數(shù)為值,創(chuàng)建一個(gè)Cookie對(duì)象 Cookie c = new Cookie("username",name); //設(shè)置Cookie對(duì)象的生存期限 c.setMaxAge(24*3600); //向客戶端增加Cookie對(duì)象 response.addCookie(c); %>
讀取cookie:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">讀取Cookie <% //獲取本站在客戶端上保留的所有cookie Cookie[] cookies = request.getCookies(); //遍歷客戶端上的每個(gè)Cookie for(Cookie c : cookies) { //如果Cookie的名為username,表明該Cookie是需要訪問的Cookie if(c.getName().equals("username")) { out.println(c.getValue()); } } %>
session的作用session對(duì)象代表一次用戶會(huì)話。一次會(huì)話的含義是從客戶端瀏覽器連接服務(wù)器開始,到客戶端服務(wù)與斷開為止。(session里的屬性必須是可序列化的)
通常用于跟蹤用戶的會(huì)話信息,如判斷用戶是否登錄系統(tǒng)。session范圍內(nèi)的屬性可以在多個(gè)頁(yè)面的跳轉(zhuǎn)之間共享。
session對(duì)象是HttpSession的實(shí)例,HttpSession常用的兩個(gè)方法:setAttribute(String attName,Object attValue):設(shè)置session范圍內(nèi)attName屬性的值為attValue
getAttribute(String attName):返回session范圍內(nèi)attName屬性的值
表單頁(yè)面:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%>表單頁(yè)面
處理頁(yè)面:
<%@ page contentType="text/html; charset=utf-8" language="java"%> <%@ page import="java.util.*" %> <% //取出session范圍的itemMap屬性 MapitemMap = (Map )session.getAttribute("itemMap"); //如果Map對(duì)象為空,則初始化Map對(duì)象 if(itemMap == null) { itemMap = new HashMap (); itemMap.put("書",0); itemMap.put("水",0); itemMap.put("人",0); } //獲取上一個(gè)頁(yè)面的請(qǐng)求參數(shù) String[] buys = request.getParameterValues("item"); //遍歷數(shù)組的各元素 for(String item:buys) { //如果item為book,表示書籍 if(item.equals("book")) { int num1 = itemMap.get("書").intValue(); //將書的數(shù)量加1 itemMap.put("書",num1+1); }else if(item.equals("water")) { int num2 = itemMap.get("水").intValue(); //將水的數(shù)量加1 itemMap.put("水",num2+1); }else if(item.equals("people")) { int num3 = itemMap.get("人").intValue(); //將人的數(shù)量加1 itemMap.put("人",num3+1); }else } //將itemMap對(duì)象放到設(shè)置成session范圍的itemMap屬性 session.setAttribute("itemMap",itemMap); %> new document 書:<%=itemMap.get("書")%>
水:<%=itemMap.get("水")%>
人:<%=itemMap.get("人")%>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67779.html
摘要:對(duì)象具有請(qǐng)求域,即完成客戶端的請(qǐng)求之前,該對(duì)象一直有效。提交的數(shù)據(jù)量最多不超過。安全性較低但效率比方式高。適合提交數(shù)據(jù)量大,安全性高的用戶信息。除非本次會(huì)話的所有頁(yè)面都關(guān)閉后再重新訪問某個(gè)或者,將會(huì)創(chuàng)建新的會(huì)話。 JSP 簡(jiǎn)介 全名為Java Server Pages,其根本是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),實(shí)現(xiàn)了在Java當(dāng)中使用HTML標(biāo)簽。JSP是一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),也是Java...
摘要:元素用于指定過濾器的完整的限定類名。除此之外,過濾器不會(huì)被調(diào)用。參數(shù)用于訪問后續(xù)過濾器。還可以為指定目標(biāo)資源為某個(gè),例如當(dāng)用戶訪問時(shí),會(huì)執(zhí)行名字為的,這時(shí)會(huì)執(zhí)行過濾器。防止中文亂碼過濾器項(xiàng)目使用框架時(shí)。 文章首發(fā)在CSDN博客,轉(zhuǎn)載請(qǐng)務(wù)必注明以下所有鏈接,否則考慮法律追究責(zé)任。 CSDN地址:http://blog.csdn.net/tzs_1041218129/article/det...
摘要:一基本語法聲明聲明語句成員變量或方法聲明語句聲明局部變量注意區(qū)分二者區(qū)別。局部變量在每次調(diào)用方法時(shí)都會(huì)重新初始化。注意此時(shí)代碼是被原封不動(dòng)地導(dǎo)入,所以變量的作用域仍然在這個(gè)中。動(dòng)作,運(yùn)行期間的命令廣義的擁有私有變量,和等方法的工具類。 JSP(JAVA Server Pages):一種特殊的Servlet,直接在HTML中內(nèi)嵌JSP代碼,由JSP Engine自動(dòng)轉(zhuǎn)為Servlet代碼...
摘要:方法的參數(shù)不但可以使相對(duì)于上下文根的路徑,而且可以是相對(duì)于當(dāng)前的路徑。如和都是合法的路徑。 轉(zhuǎn)發(fā)與重定向區(qū)別是什么 在調(diào)用方法上 轉(zhuǎn)發(fā) 調(diào)用 HttpServletRequest 對(duì)象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 調(diào)用 HttpServletResponse 對(duì)象的方法 res...
閱讀 3389·2021-11-18 10:02
閱讀 2804·2019-08-30 13:56
閱讀 489·2019-08-29 12:36
閱讀 572·2019-08-28 18:07
閱讀 779·2019-08-27 10:51
閱讀 3518·2019-08-26 12:13
閱讀 3385·2019-08-26 11:46
閱讀 3382·2019-08-23 12:00