1. 程式人生 > >Servlet+JSP知識總結和梳理

Servlet+JSP知識總結和梳理

Servlet部分

一、servlet是什麼?

1.Servlet是JavaEE  Web元件,必須執行在Web容器中,如Tomcat,需要容器為其提供執行的環境。

2.本質上,Servlet就是一個java,不過這個java類要遵守一定的規範,即繼承HttpServlet

3.HttpServlet類中定義了很多方法,自定義的Servlet類需要覆蓋其中的方法,一般情況下,只覆蓋doGet和doPost方法。使用Get方式訪問時,容器自動呼叫doGet方法,使用post方式訪問時,自動呼叫doPost方法

二、如何配置servlet?

在訪問Servlet前要告訴容器一些資訊,容器才能執行它,這就是配置。配置servlet要在web.xml中進行。配置資訊如下:

訪問Servlet前,必須配置Servlet,在配置檔案web.xml中配置Servlet,配置主要使用兩個標籤<Servlet>和<Servlet-mapping>

  其中<url-pattern>是訪問Servlet使用的地址

  <Servlet>

      <Servlet-name>自定義的名字(一個web.xml中不可重複)</Servlet-name>

     <Servlet-class>Servlet類的完整名字(含包名)</Servlet-class>

  </Servlet>

  <Servlet-mapping>

      <Servlet-name>與之前的名字必須保持一致</Servlet-name>

      <url-pattern>自定義的邏輯地址(必須以/開頭,/表示webroot)</url-pattern>

   </Servlet-mapping>


另外該檔案中<web-app>是所有web.xml檔案的根標籤,所有的Servlet配置資訊都在該標籤內。

伺服器會到web.xml中找到配置在<url-pattern>路徑下的配置的<servlet-name>,映射出相關的servlet類,並對這個Servlet類進行例項化、初始化、提供服務等。

三、Servlet生命週期各階段

生命週期:web容器載入servlet,生命週期開始。通過呼叫servlet的init()方法進行servlet的初始化。使用者請求時通過呼叫service()方法實現,根據請求的不同調用不同的do***()方法。結束服務,web容器呼叫servlet的destroy()方法。

Init()方法://servlet第一次被呼叫時執行,有且僅執行一次,完成初始化動作

Service()方法://servlet每次被請求時呼叫

Destroy()方法://servlet被回收時(伺服器關閉或者被重啟),被呼叫,有且僅執行一次

servlet的生命週期測試原始碼:LifeCycleServlet.java

//init()方法servlet第一次被呼叫時執行,有且僅執行一次,完成初始化動作
@Override
public void init() throws ServletException {
	count=1;
	System.out.println("該servlet已經完成初始化.....");
}
	
//doGet和doPost方法servlet每次被請求時呼叫
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
	throwsServletException, IOException {
	//設定返回頁面的型別
	resp.setContentType(CONTENT_TYPE);
	PrintWriterout=resp.getWriter();
	count++;
	out.print("該servlet已被呼叫了"+count+"次");
	System.out.println("該servlet執行了service方法");
}
	
//destroy()方法servlet被回收時(伺服器關閉或者被重啟),被呼叫,有且僅執行一次
@Override
public void destroy() {
	System.out.println("該servlet已被銷燬....");
}

四、手動建立Servlet步驟

A: 建立類HelloServlet.java

B: 繼承HttpServlet.java

C: 覆寫doGet/doPost方法

D: 配置web.xml

五、訪問Servlet的幾種方式

訪問前首先將專案部署到Tomcat上,啟動伺服器(Tomcat)。

1.通過位址列訪問Servlet在位址列輸入Servlet的URL直接訪問,該方式是get方式,呼叫doGet方法。在瀏覽器中訪問路徑:http://機器ip地址:8080/部署的專案名稱/servlet路徑(url-pattern裡的路徑)

2.通過超連結訪問Servlet

在超連結的href屬性中寫入url-pattern路徑。(推薦使用絕對路徑:工程名+/url-pattern路徑)

3.通過表單提交訪問Servlet,使用submit按鈕提交



如:http://localhost:8080/servlet1/servlet/FirstServlet

六、總結關於servlet中的路徑使用

 A:servlet中url-pattern中配置的路徑必須以"/"開頭,是webRoot(專案名)後的路徑

 B:掌握獲取4個路徑的方法

  //設定返回頁面的型別(html文字型別,使用utf-8編碼)

    resp.setContentType("text/html;charset=UTF-8");

  //建立輸出物件,伺服器響應產生輸出流

    PrintWriterout=resp.getWriter();//得到輸出流

    out.print("hello<br/>");

    out.print("world<br/>");

  //servlet常見的四種路徑獲取

  //1.http://localhost:8080/servlet_1/helloServlet?

    out.print(req.getRequestURL()+"<br/>");

  //2.部署的工程名/訪問路徑(/servlet_1/helloServlet)

    out.print(req.getRequestURI()+"<br/>");

  //3.helloServlet(被請求的servlet名稱)

     out.print(req.getServletPath()+"<br/>");

  //4.servlet_1(動態獲取工程名)

     out.print(req.getContextPath()+"<br/>");

 C:在頁面的表單的action屬性中建議使用絕對路徑:/部署專案名+servlet路徑,此時這裡的servlet路徑就是url-pattern中配置的路徑

 D:使用者提交表單後,執行action所指定的servlet路徑所對應的serlvet,呼叫servcie方法,service方法會根據get/post請求,再去呼叫doGet/doPost方法。

public void servcie(HttpServletRequestreq,HttpServletResponse resp){
        String method = req.getMethod();
        if("get".equals(method)){
           doGet(req,resp);
        }
        elseif("post".equals(method)){
           doPost(req,resp);
        }
        else ...
}

 E:修改java程式碼,tomcat伺服器不自動重啟問題:

   修改tomcat配置檔案context.xml,在context標籤上增加屬性:reloadable="true"

JSP部分

一、JSP是執行在伺服器端的元件,在html頁面中嵌入了java程式碼用來生成動態頁面(html實現靜態部分,java程式碼實現動態部分),JSP也必須使用容器執行(元件均需使用容器),其仍是Servlet。JSP檔案必須先放到伺服器中,然後通過HTTP的方式訪問。因為檔案內所有<%%>內程式碼是被web伺服器解釋執行的。


二、在一個JSP頁面中,主要分為三種元素:編譯指令、操作指令、JSP程式碼。

Ø  編譯指令告訴JSP的解釋引擎(如Tomcat),需要在編譯時做什麼動作,比如引入一個其他類,設定JSP頁面使用什麼語言、編碼等。作用是從JSP傳送到JSP包容器上的一個資訊.用來設定全域性變數,如宣告類,要實現的方法和輸出內容的型別等.他們並不向客戶產生任何輸出.所有指令都在整個JSP檔案的範圍內有效.在標籤 中指令都是用@字元在標籤內標註的.

Ø  操作指令則是在JSP頁面被請求時,動態執行的,比如可以根據某條件動態跳轉到另外一個頁面。

Ø  JSP程式碼(即JSP的指令碼元素)指的就是我們自己嵌入在JSP 頁面中java程式碼。主要分為以下幾種:

1. 使用<%!.......%>標記:用來宣告JSP頁面中的變數和方法。例<%! int i=0; %>

2. 使用<%.........%>標記:表示是一段。

3. <%=………………..%>之間插入一個表示式,表示式的值由伺服器負責計算,表示式的結果用字串形式傳送到客戶端顯示。注意:期內語句不可加分號。

·        編譯指令標籤:

        1.語法規則:<%@指令名attribute=”value”....%>

        2.三類指令:頁面(page)指令,include指令,taglib指令

page指令:用來定義整個JSP頁面的一些屬性和這些屬性的值.<%@屬性1=”1”屬性2=”2”%>

       注意:

              1.page指令的作用對整個頁面有效,與位置無關,習慣寫在最前面;

              2.一個屬性可以指定幾個屬性值,屬性值之間用逗號分隔;

              3.可以使用多個page指令給屬性import指定幾個值,但其他屬性只能使用一次page指            令給屬性值指定的一個值.

       page指令幾個常用的屬性:

              language屬性:規定JSP頁面使用的指令碼語言,該屬性的值目前只能取java.

                     格式:<%@ pagelanguage=”java”%>

              import屬性:為JSP頁面引入java核心包中的類,就可以在JSP頁面的程式段中使用該類.

                     格式:<%@ pageimport=”java包中的類”%>(import可重複,其他不可)

              contentType屬性:定義JSP頁面響應型別和JSP頁面字元的編碼

                     格式:<%@ pagecontentType=”text/html;charset=uhf-8”%>

              session屬性:用於設定是否要使用內建的session物件,該屬性值預設為true

include指令:JSP頁面內某處插入一個檔案,被插入的檔案必須是可使用可訪問的,即該檔案必須和當前JSP頁面在同一個Web專案中.

       語法:<%@include file=”檔名稱”%>

taglib指令:定義一個標籤庫以及其自定義標籤的字首.<%@ taglib %>宣告此JSP檔案使用了自定義的標籤,同時引用標籤庫.

       語法:<%@ tagliburi=”URIToTagLibrary” prefix=”tagPrefix”%>

三、JSP內建物件



1.輸入輸出內建物件(3)

request物件表示客戶端請求的內容;response物件表示響應客戶端的結果;out物件負責把   資料的結果顯示到客戶端的瀏覽器上.

       request物件:包含所有請求的資訊.常用方法如下

              StringgetParameter(String name)  根據頁面表單元件名稱獲取請求頁面提交資料

              String[ ] getParameterValues(String name)獲取頁面請求中一個表單元件對應多個值時的使用者的請求資料

               voidsetCharacterEncoding(java.lang.String env)設定請求內容的字元編碼

               String getMethod()獲取請求方式(取得HTTP的方法get,post)

             其他方法:

                Cookie[] getCookies()取得與請求有關的cookies

                String getHeader(String name)取得name的標頭

                Enumeration getHeaderNames()取得所有的標頭名稱

                String getRequestURI()取得工程名/訪問路徑

                HttpSession getSession()

                String getRemoteAddr()取得使用者的IP地址

                String getRemoteHost()取得使用者的主機名稱

                String getRemoteUser()取得使用者的名稱

                int getRemotePort()取得使用者的主機埠

        response物件:主要用來處理JSP生成的響應,將JSP處理資料後的結果傳回到客戶端,該物件實現了javax.servlet.http.HttpServletResponse介面.常用方法如下:

             void setContentType (String name)設定作為響應生成的內容的型別和字元編碼

             void sendRedirect (Stringname)傳送一個響應給瀏覽器,指示其應請求另一個URL

             StringencodeURL(java.lang.String url)構建一個包含會話資訊的URL地址

             void sendError(int sc)傳送一個錯誤狀態資訊

             void addCookie(Cookie cookie)新增cookie

        out物件:輸出流(JSPWriter)物件,使用write(),print(),println()方法。呼叫out.println()可以直接把字串列印到瀏覽器上

 2.作用域內建物件(3)

pageContext物件:頁面的上下文,是PageContext的一個物件,可以從該物件中獲取到其他8個隱式物件,也可以從中獲取到當前頁面的其他資訊。

        seesion物件:代表瀏覽器和伺服器的一次會話,是HttpSession的一個物件。

        application物件:代表當前WEB應用,是ServletContext物件

        Exception物件:在聲明瞭page指令的isErrorPage=”true”時,才可以使用。

四、JSP標準動作

         JSP編譯指令是讓JSP容器自動採取的動作,但對於web開發人員,有時想自己控制JSP頁面的執行,這時可以採用JSP中的操作指令,這些指令就是指JSP標準動作.

       主要有以下標準動作:

<jsp:useBean>標記    <jsp:getProperty>標記            <jsp:setProperty>標記

              <jsp:forward>標記      <jsp:include>標記

       JSP標準動作的作用:

例項化物件;       

      與伺服器端資源進行通訊;

              提高元件的可重用性,增強應用的可維護性;

              使JSP頁面可與JavaBean物件進行互動;

       JSP標準動作的語法:             

              JSP動作標記遵循XML語言的語法;

              具有一個名稱;   具有一個字首jsp;

              用一對尖括號<>括起來; 在尖括號<>內定義標記.

       (1)JavaBean互動的三個標記:

              <jsp:useBean>     <jsp:getProperty>      <jsp:setProperty>

建立一個Bean例項並指定它的名字和作用範圍.語法格式如下:

<jsp:useBeanid=”bean name” scope=”page|request|session|application” class=”class name”/>

//設定Bean的屬性值語法格式如下:

<jsp:setPropertyname=”beanInstanceName”

{

       property=”*”?|

       property=”propertyName”  [param=”parameterName”]?|

       property=”propertyName”  value=”{string|<%=expression%>}”

} />

name=”beanInstanceName”表示已經在<jsp:useBean>中建立的bean例項的名字.

Property=”*” 儲存使用者在jsp輸入的所有值,用於匹配Bean中的屬性.

property=”propertyName”  [param=”parameterName”]  用一個引數值來指定Bean中的一個屬性值,一般情況下是從request物件中獲得的,其中property指定Bean的屬性名,patam指定request中的引數名.

       (2)jsp:include指令

       jsp:include標準動作用於在當前的JSP頁面中加入靜態和動態的資源.

       語法格式:<jsp:includepage=”test.html”/>功能和include指令大致相同,區別如下:

       include操作指令:編譯時包括,形成一個整體.

       include動作:執行時包括.

       (3)jsp:forward動作指令

       jsp:forward動作指令用於把當前的JSP頁面轉發到另一頁面上.

       基本語法:<jsp:forward page=”test2.html”/>使用該功能時,瀏覽器位址列中的地址不發生變化

       (4)jsp:param動作指令

       使用jsp:param操作指令可以在執行jsp動作指令forward操作動作時追加引數.

       語法:<jsp:param name=”oper”value=”add”>,通常 jsp:forward和jsp:param結合使用.

       (5)jsp:plugin動作指令

       <jsp:plugin/>元素用於在瀏覽器中播放或顯示一個物件(典型的就是applet和Bean),而這種顯示需要在瀏覽器的Java外掛.

       當JSP檔案被編譯,送往瀏覽器時<jsp:plugin>元素將會根據瀏覽器的版本替換成<Object>(HTML4.0)或<embed>(HTML3.2)元素.另外<jsp:plugin>元素會指定物件是Applet還是Bean同樣也會指定class的名字,還有位置,及從哪裡下載這個Java外掛.

       屬性:

              1: type=”bean|applet”將被執行的外掛物件的型別,因其無預設值使用時必須指定.

              2: code=”classFileName”將會被java外掛執行java class的名字,必須以.class結尾

              3:codebase=”classFileDtirectotyName”將會被執行的java class檔案的路徑,如果沒有     提供該屬性,那麼使用<jsp:plugin>的JSP檔案的目錄將會被使用.

              4:name=”instanceName”這個Bean或Applet例項的名字,它將會在JSP其他地方呼叫.

              5:<jsp:fallback>text message foruser</jsp:fallback>一段文字用於java,外掛不能啟動      時顯示給使用者的,如果外掛能夠啟動而Bean不能,那麼瀏覽器會有一個出錯資訊彈出.

五、JSP中的註釋:

1. HTML註釋:在標記符號<!--和-->之間加入註釋內容。

2. JSP註釋:在標記符號<%--和--%>之間加入註釋內容。

注:<%--註釋--%>JSP引擎忽略JSP註釋。又被成為隱藏註釋,JSP編譯器不會對其內的語句進行編譯,它不會顯示在客戶的瀏覽器中,也不會再原始碼中看到

六、字元亂碼問題

    當利用request.getParameter得到form表單中元素值得時候,預設的情況下其字元編碼格式為ISO-8859-1,該編碼不能正確顯示漢字。

     幾種編碼格式:

     英文編碼:iso8859-1

     中文編碼:gb2312--->gbk---->gb18030(一個漢字兩個位元組)

     國際編碼:utf-8(unicode編碼,一個漢字三個位元組)

Ø  如果是get請求,有兩種解決方法:

    1:修改tomcat的配置資訊:在server.xml檔案中加一個屬性:URIEncoding="utf-8"

    2:將獲得的字串通過newString進行包裝。如下:

    <%String username=newString(request.getParameter(“username”).getBytes(“iso8859-1”),”utf-8”);%>

Ø  如果請求方式為post,兩種解決方法:

    1:在執行操作之前,設定request的編碼格式,request.setCharacterEncoding("utf-8");僅對post有效

    2:將獲得的字串通過new String進行包裝。如下:

    <%String username=newString(request.getParameter(“username”).getBytes(“iso8859-1”),”utf-8”);%>

七、get/post請求方式的聯絡和區別

   post(推薦):用於傳送敏感資訊(如信用卡號)或要儲存到資料庫中的資訊;傳送的資料沒有大小限制

     1:不通過url傳值

     2:理論上所傳值的大小沒有限制

     3:能夠傳遞敏感資訊

   get:用於檢索資訊(如文件、圖表或資料庫請求結果);請求資訊作為查詢字串傳送;傳送的資料有大小限制,0-255位元組之間

     1:通過url傳值

     2:值的大小是有限制的,0-255個位元組之間

     3:不能夠傳遞賬號、敏感等資訊

        總結:如果是表單提交,建議使用post,非表單提交,都是get

八、四個作用域物件的區別:scope.jsp(重點)

   pageContext作用域:表示存放在該作用域下的值只在當前頁面有效,即使重新整理頁面,該值無效

   request作用域:表示存放在該作用域下的值在一個請求響應範圍內有效

 (JSP頁面傳送請求到收到伺服器響應成為一個請求響應範圍)

   Session(會話)作用域:表示存放在該作用域下的值在一個會話範圍內有效,一個會話可以有多個請求和響應,當瀏覽器關閉,會話終止。

   application作用域:表示存放在該作用域下的值在整個應用程式範圍(伺服器關閉或重啟)內有效。

   四個作用域的範圍由小到大依次為:

    pageContext<request<session<application

        建議:儘量使用request作用域,不行,才考慮使用session及以上作用域

作用域物件儲存和取得屬性的方法,(以上四種均可使用,注:pageContext無getAttribute()方法)

void setAttribute(String name,Object value) 設定name屬性的值為value

並存放到作用域中.

Enumeration getAttributeNamesInScope(int scope)取得所有作用域內的屬性

Object getAttribute(String name)從作用域中取出name屬性的值

void removeAttribute(String name)從作用域中移除name屬性的值

九、jsp的兩大功能

   jsp就是servlet,它們都能完成業務邏輯和顯示

   A:邏輯:相當於一個servlet

   B:顯示:相當於一個html

   testInput.jsp--->testInput1.jsp,display.jsp

十、響應重定向和請求轉發的聯絡和區別(重點)

   本質區別:請求的轉發只發出了一次請求,而重定向則發出了兩次請求。

   A:請求轉發

    request.getRequestDispatcher(url).forward(request,response);  在一個request作用域範圍內有效

在請求物件的轉發器物件中寫入要轉發的url地址,呼叫氣forward方法(帶請求和響應引數)

      特點:

      1:可以儲存request作用域內的值

      2:瀏覽器的url地址未發生任何改變

      3:請求轉發url路徑只能是webRoot下的路徑

   B:響應重定向

    response.sendRedirect(url); 在session及以上作用域範圍內有效。

      特點:

      1:只能儲存session,application作用域內的值

      2:瀏覽器的url地址發生了改變

      3:響應重定向url路徑可以是任意路徑


十一、JSP會話跟蹤機制和Cookie

會話概念:會話就是瀏覽器與伺服器之間的一次通話,它包含瀏覽器與伺服器之間的多次請求、響應過程


HTTP是無狀態協議,伺服器將唯一的會話 ID 分配給客戶端以跟蹤使用者。Web Server對每一個客戶端請求都沒有歷史記憶,seesion用來儲存客戶端狀態資訊,由Web Server寫入,存於客戶端,客戶端每次訪問都把上次的session記錄傳遞給Web Server,Web Server讀取客戶端提交的session來獲取客戶端的狀態資訊。

l  理解session物件的方法:

l  獲取屬性的值:getAttribute(String name)

l  設定session的屬性值:setAttribute(Stringname,Objectvalue)

l  設定session的建立時間:long getCreationTime()

l  獲取最大活動時間:int getMaxInactiveInterval()

l  獲取最後的訪問時間:long getLastAccessedTime()

l  登出session:invalidate()

l  移除session中的屬性值:removeAttribute(Stringname)

例項:看當前的登陸名和密碼是否跟session中儲存的登入名和密碼相同,如果相同則返回成功頁面,否則返回失敗頁面。

十二、網頁間傳遞資料的三種方式

(傳值的三種方式url傳值、表單傳值、setAttribute()和getAttribute()方法)

Login.jsp:

<form action="<%=request.getContextPath()%>/testLogin.jsp">

   username:<input name="username"/><br/>

   password:<input type="password" name="pass"/><br/>

   <input type="submit" value="登陸"/>

</form>

testLogin.jsp:

<%

//獲取表單中提交過來的使用者名稱和密碼

      Stringusername = request.getParameter("username");

      Stringpass = request.getParameter("pass");

   //比較提交的使用者名稱和密碼是否是Mike 123

      if ("mike".equals(username)&& "123".equals(pass)) {

   //如果一致,將使用者名稱儲存起來,在成功頁面呼叫getAttribute()方法,獲取該值

        request.setAttribute("username", username);

        //返回成功頁面(請求轉發到登陸成功頁面)

request.getRequestDispatcher("/success.jsp").forward(request,response);

      }else {

        //否則返回登陸頁面(請求轉發到登陸頁面)

   request.getRequestDispatcher("/login.jsp").forward(request,response);

      }

%>

請求引數與請求屬性:


十三、Cookie

Cookie是伺服器上根據使用者瀏覽器識別使用者並記錄一些相關資訊的元件。通過Cookie,網站可以識別你是第一次訪問還是又一次訪問它,在你瀏覽網站的時候,網站的程式會在你不知不覺中將一個小的Cookie(作為一個文字檔案)儲存在你的硬碟中。

1.指網站為了辨別使用者身份、進行會話跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。

2.Cookie 用於儲存Web 伺服器傳送給客戶端的資訊。伺服器通過設定響應標題中的 Set-Cookie 方法來發送 cookie。

使用Cookie首先要建立一個Cookie,然後設定其屬性,再通過response物件的addCookie()方法將其放入客戶端,獲取Cookie物件可用request物件的getCookies()方法。


建立cookie物件:Cookiecookie=new Cookie(String cookiename,String cookievalue)

儲存cookie(存入客戶端):response.addCookie(cookie);

設定cookie有效期(單位秒),超過設定時間,該Cookie自動銷燬:cookie.setMaxAge(3600);



十四、過濾器

過濾器是向 Web 應用程式的請求和響應處理新增功能的Web服務元件(即在資料互動之間過      濾資料的中間元件).用來處理同一類問題.

過濾器基本原理:


過濾器的建立步驟:

      1.定義一個類並實現Filter介面;

      2.實現doFilter()方法;

      3.在web.xml中進行配置

javax.servlet.Filter介面定義了過濾器的生命週期其實現類物件按照生命週期,對使用者的請求和資源的響應進行過濾.

     Filter 介面包含以下方法:

     public voidinit(FilterConfig filterConfig)  throws ServletException//初次請求時呼叫,僅一次

     public void doFilter(ServletRequestreq,   ServletResponse resp, FilterChain chain) throws java.io.IOException,ServletException//每次請求均呼叫

     public voiddestroy()       //過濾器不使用時銷燬,有且僅執行一次

     配置web.xml(配置資訊如下:)

     A.過濾器定義用於將過濾器名稱與部署描述符web.xml中的特定類關聯

     <filter>

<filter-name>adminFilter</filter-name>  //指定過濾器的名稱

<filter-class>com.itany.filter.AdminFilter</filter-class>  //指定類的全名稱

       //<filter>標籤配置在web伺服器上註冊一個過濾器,其子標籤<init-param>表示配置的初始化資訊,可使用FilterConfiggetInitParameter(String name)方法獲取對應的值.

       <!--  <init-param>

<param-name>charset</param-name>

<param-value>utf-8</param-value>

</init-param>  -->

</filter>

B.使用 <filter-mapping> 元素可將過濾器對映至 Web資源,如Servlet、JSP頁面等

<filter-mapping>

<filter-name>adminFilter</filter-name>  //指定過濾器的名稱

<url-pattern>/*</url-pattern>  //指定servlet的名稱(/*表示所有servlet)

</filter-mapping>

注意:過濾器配置資訊應剛在所有servlet配置資訊之前

FilterChain介面用於呼叫過濾器鏈中的一系列過濾器,呼叫其doFilter()方法可出過濾器.

過濾器應用示例:

publicclassSetCharacterEncodingFilter implements Filter{//實現Filter介面

       private Stringcharset="";

       @Override

//初始化方法init(),在第一次請求時呼叫該方法,有且僅執行一次

       publicvoid init(FilterConfig filterConfig) throws ServletException {

              //從配置資訊<init-param>中獲取配置的引數

              charset=filterConfig.getInitParameter("charset");

       }

       @Override

       publicvoid doFilter(ServletRequest request, ServletResponse response,

                     FilterChain chain) throws IOException, ServletException {

              request.setCharacterEncoding(charset);

              //出過濾器

              chain.doFilter(request, response);

       }

       @Override

       publicvoid destroy() {    

       }    

}

十五、EL表示式

·EL全名為Expression Language,由兩個組開發:

      JSP 標準標籤庫專家組 

      JSP 2.0 專家組

·重要作用:

      1.提供複雜表示式(涉及Java物件)的值(替換<%= %>表示式)

      2.訪問一個任意Java物件的性質

      3.呼叫JavaBean或其它Java物件的方法

·語法:

以“${”開始,以“}”結尾,如:${EL Expression}

例如:從Seesion的作用域範圍內取的使用者的性別.

EL表示式寫法:  ${sessionScope.user.sex}

相關推薦

Servlet+JSP知識總結梳理

Servlet部分 一、servlet是什麼? 1.Servlet是JavaEE  Web元件,必須執行在Web容器中,如Tomcat,需要容器為其提供執行的環境。 2.本質上,Servlet就是一

【Java】日誌知識總結經常使用組合配置(commons-logging,log4j,slf4j,logback)

ng- binder mono leading black auto erb param 1.2 Log4j Apache的一個開放源碼項目,通過使用Log4j,我們能夠控制日誌信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器

JSP知識總結

arm sessions htm class文件 iter() 打印 action 業務邏輯 簡寫 JSP的引入 Servlet的作用: 用java語言開發動態資源的技術!!! Jsp的作用:用java語言(+html語言)開發動態資源的技術!!! Jsp就是ser

交換網絡知識總結案例

路由;交換;網絡;安全;冗余交換網絡思維導圖 三層架構實驗配置 R1:interface Loopback0ip address 1.1.1.1 255.255.255.255interface Ethernet0/0ip address 172.168.1.1 255.255.255.0interface

實訓階段知識總結歸納(一)

開篇感言: 寫一篇文章之前首先去反省自己一天的收穫,去到這裡最大的感悟就是和社會開始接觸,從生活和觀念都在轉變,所以我需要找到一條屬於自己的學習之路。 開始寫部落格總結之前,首先問自己學習java的價值在哪裡,為何要 不斷學習,充電才能繼續前進,在學習過程

知識總結記錄——裝飾器函數

clas 允許 一個 修改 das 完美 為什麽 調用 alt 裝飾器的本質:一個閉包函數 裝飾器的功能:在不修改原函數及其調用方式的情況下對原函數功能進行擴展 開放封閉原則   1.對擴展是開放的     為什麽要對擴展開放呢?     我們說,任何一個程

知識總結記錄——遞歸

span pan 尾遞歸 python解釋器 場景 非遞歸 分享 dash 小問題 遞歸定義 在一個函數裏邊調用這個函數本身 python解釋器不支持尾遞歸優化 構成遞歸需具備的條件: 1. 子問題須與原始問題為同樣的事,且更為簡單(問題相同,但規模在變小);

知識總結記錄——模塊

lai 開頭 mpi 名稱 -s status 大寫字母 getc 系統交互 常用模塊一   collections模塊   時間模塊   random模塊   os模塊   sys模塊   序列化模塊   re模塊 常用模塊二   hashlib模

知識總結記錄——叠代器生成器

lap 開發 遍歷 而不是 分享 數據 統一 alt 內置 叠代 可以被for循環的都是可叠代的(字符串、列表、元祖、字典、集合),就是將某個數據集內的數據“一個挨著一個的取出來”,就叫做叠代。 可叠代協議 可以被叠代要滿足的要求就叫做可

servletJSP中轉發重定向知識複習

1:servlet中轉發 、包含、和重定向 請求轉發:(源元件留頭不留體,目標元件留體不留頭) Servlet(源元件)先對客戶請求做一些預處理操作(一般是對響應頭進行處理),然後把請求轉發給其他Servlet(目標元件)來完成包括生成響應結果在內的後續操作。    實現方法:re

Java之JSPServlet基礎知識

JSP基礎 JSP起源 JSP,Java Server Pager的簡稱。由SUN倡導並聯合其它公司建立。 JSP是一門指令碼語言 JSP可以嵌入到HTML中 JSP擁有Java語言的所有特性 面向物件、健壯、多執行緒、安全、可移植、高效

http,servlet,jsp-java web後臺知識簡單總結

http,servlet,jsp 總結,包括 servletConfig,servletContext,servletRequest,servletResponse,session,cookie,EL 表示式,jstl 標籤庫,servletFilter等知識點

WinForm開發,窗體顯示窗體傳值相關知識總結

ica 簡單的 winform 隨著 open sender mes accep 構造函數 以前對WinForm窗體顯示和窗體間傳值了解不是很清楚最近做了一些WinForm開發,把用到的相關知識整理如下 A.WinForm中窗體顯示顯示窗體可以有以下2種方法:Form.Sh

構造方法一般方法的區別(面試)-----java基礎知識總結

col 進行 span round 構造方法 基礎知識 fff font size 構造方法:對象創建時,就會調用與之對應的構造方法,對對象進行初始化; 一般方法:對象創建後,需要方法功能時才會調用。 構造方法,在對象創建時,會調用且只調用一次。

JSP Web第七章整理復習 Servlet基礎知識

pattern scrip 目的 方法 內置 文件中 javax bubuko 項目 P206-208 Servlet項目的創建,web.xml的配置及標簽含義,相關程序   創建:new 一個Servlet類,繼承自javax.servlet.http.HttpServl

2018/04/21 PHP 中的SessionCookie知識總結

結束 方式 全局變量 過期 ESS 簡單 star 如何 lencod 在之後的工作和學習中,更是發現了自己對於基礎知識的不紮實,於是又返回頭來學習,確實很多東西是之前沒註意或是沒掌握的。 著重講一下這幾個問題 -- 什麽是 Cookie ? 簡單來說:   因為 HTTP

抽象方法抽象類知識總結

重寫 所有 抽象方法 知識 實例 可見 實現 virt 需要 抽象方法:沒有定義方法體的方法,抽象方法必須在子類中重寫。 抽象類:含有抽象方法的類為抽象類,抽象類中可以有普通方法,抽象類不能實例化,可以被繼承。 抽象方法也是虛方法,但不需要關鍵字virtual。 抽象類中

sessioncookie的知識總結

ssi -a 問題 機制 隨著 自己的 unix 關閉 相關 1、HTTP協議 由HTTP客戶端發起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監聽客戶端發送過來的請求。一旦收到請求,服務器(向客戶端)發回一個狀態行,比如"H

計算機網路知識總結一計算機網路協議(一)

計算機網路知識總結一計算機網路和協議(一) 網際網路概述 網際網路組成 計算機網路的效能指標 OSI參考模型以及TCP/IP四層模型、五層協議 通訊過程、資料傳輸、網路裝置 小結 網際網路概述 計算機網路: 由若干節點

servlet研究學習總結--OutputStreamPrintWriter的區別

當用戶和瀏覽器其進行互動時,會給伺服器傳送http請求,Web伺服器收到客戶端的http請求,會針對每一次請求,分別建立一個用於代表請求的request物件、和代表響應的response物件。request和response物件即然代表請求和響應,那我們要獲取客戶機提交過來的資料,只需要找req