Jsp簡單介紹

一、jsp第一行pageEncoding改爲utf-8

	<%      %>中間放置Java腳本
	jsp聲明<%! JAVA代碼 %>
	jsp表達式<%=表達式或變量%>
	jsp文件的頭部使用樣式爲
	<%@ page language="java" %>
	<%@ page contentType="text/html; charset=GB2312"%>
	JSP三種命令指令分別是page、include、taglib
	(1)page指令
	功能:設定整個JSP網頁的靜態屬性。
	(2)include指令
	功能:include指令用來向當前頁面插入一個靜態文件的內容。這個文件可以是JSP、HTML、文本或是Java程序。
	(3)taglib指令
	功能:使用標籤庫定義新的自定義標籤,在JSP頁面中啓用定製行爲。

	1.tomcat服務器的安裝及使用
	           http://127.0.0.1:8080/ssss/index.html
	           http://localhost:8080/ssss/index.html兩者等價
	           webapps 發佈路徑(tomcat7.0-conf-server.xml)
	           myeclipse設置
	                   1.tomcat屬性
	                   2.發佈路徑(一般情況下不用設置)
	                   3.servers窗口
	                   4.自定義運行參數 (在工程上右擊-run as-run configurations-myeclipse server application雙擊-選擇服務器等)
	
	2.jsp頁面/web.xml設置
	         @page   @include  @taglib
		 jsp:include 包含 jsp:forward 轉向
		 jsp內置對象(和servlet中對象的對應關係)                                      
		      1.request  瀏覽器請求(地址/參數/頭部/客戶機信息)(req)
	              2.response  迴應(指定編碼,內容類型,內容)到瀏覽器  (resp)
		      3.out 插入當前輸出 write("");(resp.getWriter)
		      4.congfig 獲取web.xml裏,當前頁的初始參數(getServletConfig().getInitParameter(name)//獲取當前的配置文件                                                                                       getServletContext().getInitParameter(name))//獲取全局的配置文件  
		      5.session  服務器會話變量map集合(request.getSession)
		      6.application 服務器全局變量map集合,獲取web.xml裏,當前程序的初始參數。而不是當前頁的初始參數(getServletContext().setAttribute)
		      7.pagecontext 頁上下文 包含和該頁相關所有內容(getServletContext())
		      8.page (this)
		      9.exception 編譯指令page 的isErrorPage 屬性爲true時,該對象纔可以使用
		 el表達式 不能放到動態腳本中使用
		      1.便捷取值(el對象的值/jsp對象的值)
		      2.不能執行方法
		      3.在jsp頁面都有效
		      4.${erer.er}
		 用戶值  (常用 request param session)  scope指的是範圍
		      1.頁變量pageScope  <%=val%>
		         jstl set標籤  ${pageScope.val}
		      2.請求參數  連接url參數/form標籤 錄入控件的name和value屬性
		                  兩種方式   1.request.getParameter(name)
				             2.${param.name}
		      3.request值棧   有效範圍:目標界面
		                  request.setAttribute("key","val") 值棧設置
				  request.getAttribute("key")  值棧獲取
		      4.session值棧    有效範圍:當前連接會話
		                      session.setAttribute(name,value);
		                  或HttpSession sessions=request.getSession();
				  sessions.setAttribute("key","val");
				  sessions.getAttribute("key");
	              5.application值棧  有效範圍:當前web應用/全局
	                          application.setAttribute(name,object);
	                          application.getAttribute(name,object);
	              6.cookit客戶端值   存放在客戶端
		                  Cookie[] cs= request.getCookies();//cookie的獲取
				  response.addCookie(cookie);//cookie的設置
	
	3.jsp標籤庫  jstl標籤庫/el表達式
		     JSTL標籤庫(java通用標籤庫  替換掉所有動態腳本) prefix(別名 隨便起)
	                  核心庫 邏輯語句/賦值/輸出
			  <c:if test="${name==null}"></c:if>
			  <c:set var="name" value="${param.name}"></c:set>
			  <c:out value='${name}'></c:out>
			  循環語句
	                     <c:forEach var="row" items="${sessionScope.rs.rows }" varStatus="s">
			     <c:out value="${s.count}"></c:out><c:out value="${row.name}"></c:out><br>
			     </c:forEach>
		     sql庫
		          sql:setDataSource
			  sql: query
	     
	          例子
		          index.jsp 文件中的問題
	                 1.jsp嵌入式 循環顯示前端腳本
			   <td><%=rs.getInt(1)%></td>
			   out.write("<td>"+rs.getInt(1)+"</td>");
			 2.url拼接
			   <a href="a.jsp?cmd=page&page=<%=pro%>">
	                 3.分頁顯示
			   定義頁號變量,在翻頁時都能訪問 通過頁號計算 first行 max行
	                     1.通過session
			     2.通過url param
			     3.sql limit 分頁查詢
			 4.使用sqlHelper類
	
			   edit.jsp
	                 1.新增修改使用同一個jsp頁(修改時有id)
			 2.使用<input type="hidden" name="cmd" value="add"> //cmd id
			 3.使用<from action="a.jsp" method="post">  //post/get區別
	                   a.jsp實際應寫成 room.jsp(表是room表)
	                 1.將單個表的數據管理放置在一起
			 2.加入cmd標識參數,區別各類操作
			 3.中文轉碼  name=new String(name.getBytes("ISO-8859-1"),"utf-8");
	                 4.重定向  response.sendRedirect("index.jsp");
	                 5.前端數據到後端只有提交服務器
			   後端數據到前端,動態腳本/el嵌入  (後端數據可以輕易插入到前端,而前端數據必須經過提交、換頁、回來才能把數據插入到後端)
	
	  4.servlet   (實質上和*.jsp文件是一樣的)
	              servlet
			   1. 創建  class 繼承 HttpServlet
	                   2. 實現 doget dopost 把super.doget() 移除
			   3. 註冊到 web.xml
	 
	              重定向
		            1.response.sendRedirect("index.jsp?name=11");//url重定向(地址欄中的路徑會改變) 不攜帶數據
			    2.攜帶全部數據轉發指定頁
			       RequestDispatcher  r=req.getRequestDispatcher("index.jsp");)//定義
			       r.include(req,resp);//轉向方法一 包含指定頁輸出  (地址欄中的路徑不會改變)
			       r.forward(req,resp);//    方法二 只顯示指定頁輸出
	             
		     session 存放在服務器
		             sessionID
			     session跟蹤
			         1.url跟蹤    index.jsp:jsessionid=1234
				 2.cookie跟蹤
		        屬性:    
	                     setMaxInactiveInterval   設置會話週期
	                     setAttribute
			     getAttribute
			     removeAttribute
	            
	             cookie 存放在客戶端瀏覽器緩存裏
	                    resp.addCookie(new Cookie("name",name));
		            1.可設置路徑範圍
			    2.Cookie c= new Cookie("name",name) //自創建開始計時秒數,自動刪除
			        c.setMaxAge(10);
			    3.獲取req.getCookies() 只能通過循環遍歷查詢
			    4.可在前端直接調用
	           
	         前端發向後端 提交
	                        1.url重定向  url拼裝 只支持get
	                              (1)<a href> html重定向
	                                     換頁,不需額外處理立即換頁
	                                     list,jsp?pageno=<%=page%>拼裝
	                               (2)location href="",reload() js重定向
	                                   經onclick事件,執行js方法,處理之後換頁
	                                   location.href="list.jsp?pageno="+page;
	                        2.form標籤提交  表單提交(新增/修改,對用戶錄入的數據提交)
	                                         支持post,支持文件,url安全,數據量大
	                                        hidden,可加入非顯示的父帶數據(id,cmd)
	                        3.ajax提交  json串提交/返回
	                              (1)提交校驗信息(密碼,用戶名存在)
	                              (2)非換頁的得到數據,使用js填充數據
	                              (3)js富客戶端框架(ext js/jQueryUI)   
	
	         後端發向前端
		             1.使用HttpServletResponse getWriter() 直接輸出html(不推薦)
			     2.將輸出數據的值加入值棧,重定向到jsp頁面作爲模板,使用el嵌入數據
			     3.ajax,json獲取,使用HttpServletResponse getWriter()直接輸出 json 字符串
	        
	           過程      
	                   1.前端腳本發出請求(url,form,ajax)發給web服務器
	                   2.web服務查詢web,xml,查找 class
	                                    沒找到:1.找jsp頁面,編譯成servlet 類
	                                            2.404錯誤
	                                    找到:執行servlet類 輸入請求信息
	                   3.類(class)解析獲取請求內的信息
	                   4.根據請求信息查詢數據庫/其他的處理
	                   5.返回查詢/處理的結果
	                                   1.數據集 將數據集轉爲list<對象>,放入值棧,採用req.getRequestDispatcher,指定模板頁轉向                                                 2.標誌   將數據直接放入值棧
	                                   3.圖像/文件  使用getoutputstream寫入流
	                                   4.json   使用getWriter寫入字符
	                                   5.html   使用getWriter寫入字符
	                                   6.後端數據的顯示
	                                          1.數據集    使用jstl,el嵌入html
	                                          2.標誌      使用el嵌入html標籤中
	                                          3.圖像       <img src="pic"/>
	                                          4.json      $.getJSON       $.ajax
	                                          5.html      什麼也不做
	                                   7.將執行的結果(是靜態頁面),發送到客戶端瀏覽器(瀏覽器不能執行動態腳本)
	                                   8.瀏覽器解析html,顯示頁面信息
	
	             jsp:1.jstl  邏輯語句
	                  2.el    取值
	                  3.servlet/jsp 後端頁面  servlet必須註冊到web.xml 
	                 4.filter   (攔截請求)引用接口  必須註冊到web.xml 
	                 5.listener (服務啓動狀態監聽)引用接口    必須註冊到web.xml 
	                  
	
	     mvc是開發模式 來完成 jsp頁面
	            m:model模型   v:view視圖  c:controller控制器
	     引申:mvp   p:presente 
	
	     數據管理3層  bll dao >>model
	                  model view controller(biz,service,bll)
	5.listener/filter		
	亂碼問題:1.當前頁面編碼方式
	          2.請求的編碼(1.url請求的編碼 2.tomcat內部接收數據的編碼 3.數據庫編碼(my.ini編碼、建表編碼))
	          3.返回請求時的restore編碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章