JSP

                               JSP

JSP:九大對象、七大動作、三大指令。

 

BIN目錄裏面啓動服務器(startup),然後在瀏覽器裏面輸入http://localhost(服務器IP):端口號(8080/就可以看到自己的服務端.

如果要運行程序:

例如:http://192.168.1.77:8080/mywork/table.jsp

192.168.1.77是服務器IP

8080是端口號。

mywork是項目名。

table.jsp是文件名。

解決亂碼:

一定要把這一行放到jsp文件的第一行:

<%@ page language="java" contentType="text/html; charset=GBK"

pageEncoding="GBK"%>

 

九大對象:

第一大對象:Out

 

Out.print();輸出數據到瀏覽器,<%=  %>一樣的效果.

<%   %>括號中間寫JAVA代碼。

<%=變量%>輸出到瀏覽器

 

1.       網頁跳轉.

form表單的跳轉,form裏面輸入action=”*.jsp”;

例如:

<form name="enter" action="文件名.jsp" οnsubmit="return 函數名()">

<input type="submit" value="提交" name="refer">,點擊提交後就可以就可以跳轉到*.jsp頁面.

如果輸入爲空的話,不想讓頁面跳轉,可以在函數裏面加入return false;不滿足條件就不往下執行.全部滿足條件的時候就跳轉到另一個頁面.

2.       javascript跳轉:

例如:

 function test(){

        //window.location.href="*.jsp";   這個就像超鏈接,可以返回

        window.location.replace("*.jsp");  這個就是把以前的給替代了,所以不能返回.

}

在按鈕上面調用這個函數方法就可以執行跳轉了.

Button類型按鈕:

function xxx(){

        document.form.submit();        

}

//調用這個方法的按鈕會自動執行form裏面的action,跳轉到另一個頁面.

 

動態修改action

function xxx(){

        document.enter.action="color.jsp";  //更改action裏面的頁面,下面的語句不能註釋,要靠它提交,不然會沒反映.

        document.enter.submit();             //調用這個方法的按鈕會自動執行form裏面的action,跳轉到另一個頁面.

}

 

function text(){

        document.enter.action=document.enter.name.value;  //在文本框上面輸入什麼頁面就進入什麼頁面.

        document.enter.submit();   //上面改值後用這個提交.

}

 

 

****(第二大對象)request對象:獲取客戶端提交的數據。

  out  向客戶端輸出數據

  request 向客戶端請求數據

客戶端的跳轉方式:

function zhuce(){

        document.enter.action="requestTest.jsp";

        document.enter.submit();

}

<%

out.print("<table border=1>");

out.print("<tr>");

out.print("<td>"+"姓名:"+request.getParameter("name")+"</td>");

out.print("</tr>");

%>

執行上面這段代碼將會在另外一個頁面輸出你輸入的姓名.

 

l         表單的兩種提交方式getpost

<form name="enter" action="array.jsp" οnsubmit="return login()" method="post">

 

解決亂碼的三種方式:

<%@ page language="java" contentType="text/html; charset=GBK"

    pageEncoding="GBK"%>

<%      request.setCharacterEncoding("GBK") ;  

            response.setCharacterEncoding("GBK")

%>

 

Get和post提交的區別:

1.Get不安全,Post安全(因爲get把裏面的信息全部顯示在了地址欄上面,而post沒有)

2.get有長度限制,post沒有長度限制.

下面是get提交後產生的地址欄的地址:

http://192.168.1.77:8080/mywork/requestTest.jsp?name=%CD%F5%BA%A3&age=22&sex=%C4%D0&native=%C0%E4%CB%AE%CC%B2&like=%BF%B4%CA%E9&like=%CC%B8%C7%E9&like=%CB%AF%BE%F5&intro=%09%0D%0A%09tell+me+why+%0D%0A%09%D7

下面是post提交後產生的地址欄的地址:

http://192.168.1.77:8080/mywork/requestTest.jsp

 

服務端的跳轉方式:

第三大內置對象:response (重定向)

只發生在請求的範圍之內(只能從上一個頁面傳到另一個頁面).

Response.sendRedirect(“http://www.baidu.com”);

 

response 封裝了jsp產生的響應,然後被髮送到客戶端以響應客戶的請求

 

hidden:隱藏表單域.

就是把一個框架給隱藏起來,但是它的值還在這裏,只是不顯示出來而已,也可以用它來傳值,並且在另一個頁面顯示出來.

例如:

<input type="hidden" name="userName" value=<%=request.getParameter("userName")%>>

 

第四大內置對象session

在當前打開的瀏覽器內,多個頁面的數據共享.

       session.setAttribute("name",request.getParameter("userName"));

       session.setAttribute("pass",request.getParameter("password"));

       session.getAttribute("name");

session.getAttribute("pass");                                                                           

 

第一大指令:page

用指令導入一個包:

<%@ import=”包名”%>

 

2010-4-19

在一個項目中不能用過多的session,因爲它會導致系統的性能下降,所以我們要慎用session

一般是用在保存用戶的登錄信息(用戶信息、權限、資源)、頻繁使用的信息。

 

第五大內置對象(application):可以在多個瀏覽器內共享數據

application>session>request

session保存的數據只在當前瀏覽器有效,只要不關閉瀏覽器,就能實現多個瀏覽器之間的共享。

Application保存的數據在當前服務器裏有效,只要不關閉服務器,也能實現多個瀏覽器之間的共享。

 application對象 application對象實現了用戶間數據的共享,可存放全局變量.它開始於服務器的啓動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前後連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問.服務器的啓動和關閉決定了application對象的生命.它是ServletContext類的實例.

session對象 session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接爲止.它是HttpSession類的實例.

 

第一大指令:page

導入自己的類:

<%@ page import=包名.類名%>

 

2010-4-22

l         JSP中的靜態包含與動態包含

第二大指令include

重複的代碼就抽取出來,如:一個表的歡迎語句就可以抽取出來,因爲每個表都要有歡迎語句:

1靜態包含<%@ include file=”*.jsp”%>

第一大動作<jsp:include >

2動態包含<jsp:include page=”*.jsp” flush=”true”> </jsp:include>

 

這段代碼放在哪裏就顯示在哪裏!!

靜態包含和動態包含的區別:

1.       單獨編譯(動態包含)與統一編譯(靜態包含)→變量共享。

2.檢查包含文件變化(動態包含刷新的時候總是會去檢查文件,而靜態包含卻不一定會去檢查文件)

3.動態包含可以帶參數,靜態包含不可以帶參數。

 

第二大動作:<jsp:useBean>

語法:

       <jsp:useBean class=”包名.類名” id=”aa” />

<jsp:useBean class=”包名.類名” id=”aa” scope=”session” />

<%

//scope=”session” 這是設置它的有效範圍 就相當於session.setAttribute();

//id="person"就相當於 PersonDB person=new PersonDB();生成person對象

%>

 

  動態包含與靜態包含  

<jsp:include>動態包含與靜態包含

it  分類jsp

 

動態INCLUDE

jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數。

 

(這裏你必須使用flush="true",你不能使用false值.缺省值爲false )

靜態INCLUDE

用include僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>

===================================================================

1. 靜態include的結果是把其他jsp引入當前jsp,兩者合爲一體

動態include的結構是兩者獨立,直到輸出時才合併( 看看jsp生成的java文件就可以知道了)

2.正是因爲這樣,動態include的jsp文件獨立性很強,是一個單獨的jsp文件,需要使用的對象,頁面設置,都必須有自己創建,當然, 還好它和include它的頁面的request範圍是一致的.

而靜態include純粹是把代碼寫在外面的一種共享方法,所有的變量都是可以和include它的主文件共享,兩者高度緊密結合,不能有變量同名的衝突.而頁面設置也可以借用主文件的.

 

  flush屬性: 用true ,表示頁面可刷新。

 

第六大內置對象:page

<jsp:useBean class=”包名.類名” id=”生成的對象的名字scope=”session” />

如果不寫scope=”session” 就默認爲第六大內置對象。

它的數據只作用於當前頁面

第三大動作:<jsp:getProperty  name=生成對象的名字 property=對象的屬性(age)>

從對象中取出屬性值<jsp:getProperty name="bean對象" property="bean對象屬性" >

例如:<jsp:getProperty property="age" name="person"/>

 

第四大動作<jsp:getProperty name=bean對象實例 property=age value=12/>

 

例如: <jsp:setProperty property="age" name="person" value="12"/>

 

參數賦值法:<jsp:setProperty name=bean對象實例 property=age param=參數屬性/>

就是說你用?號傳值法把你輸入的值給傳到param裏面。

 

1.創建bean對象

<jsp:useBean id="bean對象引用名" class="." scope="對象作用域(page(默認)/request/session/application)" />

 

2.爲對象設置屬性值

   <jsp:setProperty   name="bean對象" property="bean對象屬性" param="請求參數名(表單元素名)">

   <jsp:setProperty   name="bean對象" property="bean對象屬性" value="變量的值">    

注意屬性名區別大小寫param value只能單獨用不能合用

 

2.     從對象中取出屬性值:<jsp:getProperty name="bean對象" property="bean對象屬" >

 

 

 

 

 

 

                               set

                        

                 form提交

                               post  

1.客戶端跳轉                      href

               修改地址提交法    

                                  replace

 

 


                重定向:response.sendRedirect(“http://www.baidu.com”);

2.服務端跳轉

                <jsp:forward page=網址/>

 

 

<jsp:forward page="header.jsp"></jsp:forward>

第五大動作:<Jsp:forward page=”*.*”></jsp:forward>

只能跳到當前文件裏面的文件,不能跳到www.baidu.com.

response.sendRedirect(“http://www.baidu.com”);可以跳轉到所有的網站和jsp文件.

<jsp:forward page=”網址”>response.sendRedirect(“網址”);的區別:

1.       地址欄的區別:跳轉的時候, response.sendRedirect(“”);的地址欄改變了,<jsp:forward>的地址欄沒有改變

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章