javaweb jsp整理

來源:互聯網
上載者:User

標籤:sqlserver   window   緩衝   字串   attribute   rac   引入   webapp   pos   

jsp, java server page
jsp頁面是在伺服器上啟動並執行一個頁面

動態網頁
與後台有資料互動的頁面

與其他語言的區別:
jsp 使用java語言進行開發, 安全性高, 適合大型項目, 企業級的文本應用
分布式項目, 伺服器叢集, hadoop
asp.net 使用c#, .Net平台, 簡單易用, 因為不開源, 所以安全性低, 並且不能跨平台
使用.Net開發項目, 最好使用windows系統和sqlserver資料庫
php 簡單 高效 成本低 開發週期短, 適合中小型企業的web應用開發
php的黃金搭檔---(LAMP: linux, Apache, Mysql, PHP)

Tomcat介紹
conf---Tomcat的所有配置
webapps---需要部署的項目
work---Tomcat運行之後編譯的檔案
lib運行Tomcat伺服器所需要的 jar 檔案

運行項目的虛擬路徑
右鍵點擊項目 --> properties --> web project settings --> context root 更改這個名字就可以修改項目的虛擬路徑
改完以後要重新部署項目並且重新啟動Tomcat

jsp的組成元素;
1, 指令
page指令
<%@ page ..........%>
language---當前頁面使用的語言:java
import---當前頁面引入的類庫, 預設是啥也不引入
contentType---text/html; charset=‘字元集‘
iso-8859-1是字元集的預設值, 純英文的字元集
include指令
taglib指令
2, 運算式
<%=變數名%>
3, 指令碼
<% 代碼內容 %>
4, 聲明
<%! 代碼聲明 %>
5, 注釋
可見<!-- -->
不可見<%-- --%>
指令碼中使用的注釋
/**/, //
?6, 一些靜態內容

jsp九大內建對象:
5, response 響應對象
6, page 當前頁面對象
7, out 輸出資料流對象
8, exception 異常
9, config ServletConfig/FilterConfig對象

範圍(每一種範圍的生命週期是不一樣的):
1, application 全域範圍
2, session 會話範圍
3, request 請求範圍
4, pageContext 頁面範圍

 

優先順序(按照生命週期的長短):
application > session > request > pageContext
ai pu ‘lei kei shen>sai‘shen>rui‘kuai ‘si‘t>pei‘zhi‘ kang‘tai‘si‘t

頁面中的form表單提交方式:
post:
提交內容不可見, 沒有長度限制
get:
有長度限制, 提交內容在地址欄可見

request對象:
request對象是HttpServletRequest這個類的執行個體
常用方法:
String getParameter(String name)---返回name指定的參數的值
String[] getParameterValues(String name)---返回一個數組, 是包含那個參數名的所有的人
void setAttribute(String, Object)---設定某個範圍中的屬性
Object getAttribute(String name)---擷取某個範圍中的屬性
String getServerName()---返回請求伺服器的主機名稱
String getContentType()---返回請求體的MIME類型
String getprotocol()---返回請求用的協議類型和版本號碼
int getServerPort()---擷取伺服器的連接埠號碼
int getContentLength()---返回請求體的長度(單位是位元組)
String getRemoteAddr()---返回傳送此請求的用戶端的IP地址
String getRealPath(String path)---返回傳入的這個路徑的實體路徑
String getContextPath()---返回上下文路徑

解決request中出現中文亂碼的問題
post方式:
通過使用request.setCharacterEncoding("utf-8")來設定
get方式:
通過修改Tomcat伺服器中的server.xml設定檔來設定

response對象
response對象是HttpServletResponse的執行個體
常用方法;
setCharacterEncoding(String name)---設定響應頁面使用的字元編碼
setContentType("text/html; charset=utf-8")---設定(MIME類型)要求標頭
response.getWriter().append(String content)---向頁面輸出一段字串
out對象的類型是JspWriter, 而response.getWriter()是一個PrintWriter, out對象也可以通過pageContext.getOut()獲得, 這兩個對象的類型不一樣

out.print(null);會拋出異常, PrintWriter.print(null)不會拋出異常

JspWriter是一個抽象類別, PrintWriter是一個繼承了Writer的普通類

getWriter()方法可以在頁面上輸出一串字元, out也是一個輸出對象, 兩者的區別在於, getWriter()方法的執行結果, 總是優先於out對象, 可以使用out.flush()方法, 強行屬性緩衝區的內容, 將out對象的輸出結果先輸出出來

造成這種現象的原因:
out對象實際上對PrintWriter是有依賴的, 他需要先將需要輸出的內容存到response的緩衝區裡面, 然後等待jsp頁面中的out滿足一定條件之後, 才會調用輸出的方法把內容直接輸出到頁面上

而PrintWriter是可以直接輸出出來的

轉寄和重新導向(面試98%會問)
response.sendRedirect(String location)---請求重新導向
用戶端行為, 從本質上講相當於兩次請求, 第一次請求的對象不會被儲存, 地址欄的Url地址會改變
request.getRequestDispatcher().forward(request, response)---請求轉寄
伺服器行為, 相當於一次請求, 轉寄後請求對象會被儲存, 地址欄url不會改變
舉例說明: 辦證
Session對象
session指的是使用者在進入一個網站開始到關閉瀏覽器的時間, Tomcai伺服器預設的session有效時間是30分鐘, 也就是說, 開啟一個網站30分鐘之內沒有動作, session對象同樣也會失效
session存在伺服器的記憶體中, 伺服器中不同的使用者對應的session也是不同的, 所以伺服器用來判斷當前登入的使用者是否是同一個的時候就需要session
session對象是HttpSession的執行個體
常用方法:
long getCreationTime()---返回session對象建立的時間
String getId()---返回一個sessionid, 是唯一的
void setAttribute()---設定一個屬性和一個屬性值
Object getAttribute()---擷取某個屬性的屬性值
String[] getValueNames()---以數組的形式擷取session對象中所有可用屬性的屬性名稱
setMaxInactiveInterval()---設定session經過多長時間之後失效(預設30分鐘)
getMaxInactiveInterval()---設定session的失效時間(單位是秒)

session的生命週期:
建立: 當使用者第一次訪問某個jsp或者servlet的時候, 伺服器就會為當前的訪問建立一個session, 並產生一個sessionId, 每次用戶端向伺服器發送請求的時候, 都會將這個sessionId帶過去進行驗證

活動: 在這個頁面的各種活動, 比如通過超級串連開啟另一個頁面, 或者進行各種增刪改查的操作, session失效除非要等到瀏覽器的相關頁面全部關閉, 或者session逾時, 當再次訪問的時候會建立一個新的session, 但是原來的session還會存在, 只不過沒有任何請求再帶著那箇舊的sessionId讓伺服器去驗證了

銷毀:
三種方法可以銷毀session
1, 調用session.invalidate()方法
2, session自己到期了
設定session到期時間也可以在web.xml中設定
<session-conf>
<session-timeout>
10<!-- 單位是分鐘 ! -->
</session-timeout>
</session-conf>
3, 伺服器重新啟動

javaweb jsp整理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.