什麼是jsp?html
在html代碼中嵌入Java代碼片斷和jsp標籤,構成jsp網頁,在接收到用戶請求是,服務器會處理Java代碼片斷,而後將生成處理結果的HTML頁面返回給客戶端,客戶端的瀏覽器將呈現最終頁面效果,java
jsp技術特徵:1)跨平臺;2)業務代碼鋒利;3)組件重用;4)繼承Java servlet功能;5)預編譯。web
jsp基本構成:jsp頁面主要由指令標籤,HTML標記語言,註釋,嵌入Java代碼,jsp動做標籤等5個元素組成。數組
1)指令標籤:主要由3個:page、include,taglib。瀏覽器
格式:<%@ 命令 屬性名=屬性值,...>服務器
page指令包括屬性:language、extends、import、pageEncoding、contentType、session、buffer、autoFlush、info、isErrorPage、errorPage、isELIgnored。cookie
pageEncoding="utf-8"用來當前jsp頁面的編碼格式;session
contentType="y=text/html;charset=utf-8"用來設置jsp頁面的mime類型和字符編碼。瀏覽器會根據此來顯示網頁內容。併發
include指令:靜態包含。file屬性app
taglib指令:用於加載用戶自定義標籤。<%@ taglib prefix="c" uri="...">
2)嵌入Java代碼:代碼片斷<% %>,聲明<%! %> 表達式<%= %>
3)jsp動做標籤:<jsp:include page=""/><jsp:forward page=""/><jsp:param name="" value=""/>
jsp內置對象:共有九個request,response.session,apllication,page,pageContext,out,config,exception
1)request對象
HttpServletRequest對象,有如下幾個方法:
①獲取請求參數值:request.getParameter(name)
②解決中文亂碼
name=URLEncoder.encode(param); String param = new String(request.getParameter(param).getBytes("iso-8859-1"),"gbk");
③獲取Form表單的信息
對於文本元素,單選按鈕,下拉列表框均可以使用getParameter方法來獲取選定的內容,但對於複選框以及多選下拉框就要使用getParameterValues(name)方法來獲取,返回一個字符串數組
④獲取請求客戶端信息:getHeader(name), getMethod(), getContextPath(), ...
⑤在做用域中管理屬性:setAttribute()、getAttribute()、removeAttribute(),做用域爲一次請求。
⑥cookie管理
cookie是小段的文本信息,經過使用cookie能夠表示用戶身份,記錄用戶名及密碼,跟蹤重複用戶。cookie在服務器端生成併發送給瀏覽器。
Cookie myCook = new Cookie("key","value"); myCook.setMaxAge(60*60*24); response.addCookie(myCook); 客戶端: Cookie[] cook= request.getCookies(); if(cook!= null){ for(Cookie c:cook){ if(c.getName().equals("key")){ info= c.getValue(); } } }
2)response對象:
方法有:addHeader()、setHeader()、addCookie()、sendError()、sendRedirect()、getOutputStream()。
3)session對象
①在session中也能夠建立屬性,與request中相同,但做用域範圍是一次對話中有效
②銷燬session:session.invalidate();
③會話超時的管理:session.setMaxInactiveInterval(time)
4)application對象:ServletContext對象,可將信息保存在服務器中,知道服務器關閉
5)out:向瀏覽器輸出信息
6)pageContext對象:取得任何範圍的參數
7)config:讀取web.xml配置信息
8)page對象:表明jsp自己,在jsp頁面內是合法的。至關與this指針。
servlet
servlet是運行在web應用服務器上的Java程序,能夠對web瀏覽器發送的請求進行處理。servlet對象的運行須要servlet容器的支持
①servlet的生命週期,由容器進行管理:
在web容器啓動或客戶機第一次請求服務時,容器將加載servlet類,並將其放到servlet實例池;
當servlet實例化後,容器將調用init方法完成servlet的初始化操做;
容器經過servlet對象的service方法處理客戶端請求;
在web容器關閉時,容器調用destroy()對資源進行釋放。servlet對象將被垃圾回收器回收。
②servlet能夠在web.xml中配置name,class,url-pattern。而在servlet3.0中提供了註解來配置servlet,極大的簡化了servlet的配置。
@WebServlet("/TestServlet")
Filter:servlet過濾器是客戶端與目標資源間的中間層組件,用於攔截客戶端的請求與響應信息。當web容器接受到一個客戶端請求時,將判斷此請求是否與過濾器對象相關聯,若是相關聯,則將請求交給過濾器處理,過濾器能夠更改請求中的數據信息,處理完成後,再將這一請求交給其餘業務進行處理。在對客戶端響應時,容器又將請求交給過濾器進行處理,處理事後將響應發送到客戶端。
①Filter API:Filter接口有init、doFilter、destroy方法
FilterChain接口只有一個方法dofilter;
FilterConfig接口:獲取過濾器初始化期間的參數信息。
Filter的配置與servlet基本一致。dispatcher有4種選擇:request、forward、include、error。