JSP六大組成部分:
標(biāo)志 | 名稱 | 作用 |
---|---|---|
1辅辩、html | 靜態(tài)頁面 | 頁面顯示和展示數(shù)據(jù) |
2、<%%> | 小腳本 | 編輯Java代碼 |
3、<%@%> | 指令 | 指定JSP的內(nèi)容甸陌、格式峡碉、字符集編碼或者導(dǎo)包 |
4近哟、< %=%> | 表達(dá)式 | 展示數(shù)據(jù)/輸出數(shù)據(jù) |
5、< !-- --> | HTML注釋 | 注釋(后臺可見) |
< %-- --%> | JSP注釋 | 注釋 |
6鲫寄、< %!%> | 聲明 | 聲明僅能在當(dāng)前頁使用的數(shù)據(jù) |
九大內(nèi)置對象
- 請求對象:request
- 輸出對象:out
- 響應(yīng)對象:response
- 應(yīng)用程序?qū)ο螅篴pplication
- 會話對象:session
- 頁面上下文對象:pageContext
- 頁面對象:page
- 配置對象:config
- 異常對象:exception
請求對象:request
- public String getParameter(String name)
示例
- HTML代碼:
<input type ="text" name ="userName"> - JSP代碼:
String userName=request.getParameter("userName");
request常用方法
方法名稱 | 說名 |
---|---|
String getParameter(String name) | 根據(jù)表單組件名稱獲取提交數(shù)據(jù) |
String[] getParameterValues(String name) | 獲取表單組件對應(yīng)多個應(yīng)用值時的請求數(shù)據(jù) |
void serCharacterEncoding(String charset) | 指定每個請求的編碼 |
RequestDispatcher getRequestDispatcher(String path) | 返回一個RequestDispatcher對象吉执,該對象的forward()方法用于轉(zhuǎn)發(fā)請求 |
獲取同名的多個參數(shù)(復(fù)選框)
<h1>這是處理注冊的頁面,注冊提交的數(shù)據(jù)將發(fā)送至這里</h1>
<%
//亂碼處理(post)
request.setCharacterEncoding("utf-8");//post中文亂碼
response.setCharacterEncoding("utf-8");
//接收用戶
String userName = request.getParameter("userName");
//get亂碼處理
/* byte[] userNames = userName.getBytes("ISO-8859-1");
userName = new String(userNames,"utf-8"); */
// userName = new String(userName.getBytes("ISO-8859-1"),"utf-8");
//接收密碼
String userPass = request.getParameter("userPass");
//接收興趣愛好-----數(shù)組形式----多個值
String[] hobbys = request.getParameterValues("hobby");//復(fù)選框獲取值
//out.println("注冊成功地来!注冊的用戶名是:"+userName+"密碼是:"+userPass);
%>
用戶名:<%
if(userName != null && !userName.equals("")){
%>
<%=userName %>
<%
}else{
out.println("用戶未填寫戳玫!");
}
%>
密碼:<%=userPass %>
愛好:<br/>
<%
if(hobbys !=null){
for(String hobby : hobbys){
out.println(hobby+"<br/>");
}
}else{
out.println("你沒有任何選擇!");
}
%>
圖片.png
圖片.png
圖片.png
get與post區(qū)別:
圖片.png
中文亂碼處理
表單post方式提交未斑,中文亂碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");(可以不加)
表單get方式提交咕宿,中文亂碼
/* byte[] userNames = userName.getBytes("ISO-8859-1");
userName = new String(userNames,"utf-8"); */
userName = new String(userName.getBytes("ISO-8859-1"),"utf-8");(治標(biāo)不治本)
-
治本的方法:
配置Tomcat\conf\server.xml文件
圖片.png
在請求中保存屬性
- public void setAttribute(String name,Object o)
- request.setAttribute("mess","注冊失敗")(鍵值對的形式)
在請求中獲取屬性
- public Object getAttriebute(String name)
1、在使用屬性值的時候要做非空判斷,否則會出現(xiàn)空指針異常
2府阀、它的返回值類型是Object類型缆镣,需要最數(shù)據(jù)類型轉(zhuǎn)換
圖片.png
轉(zhuǎn)發(fā)與重定向
轉(zhuǎn)發(fā)
- RequestDispatcher
- forward()方法
1、request.getRequestDispatcher("url").forward(request,response)
2试浙、<jsp:forward page = "url"/>
重定向
- 將用戶請求重新定位到一個新的URL
response.sendRedirect("url")
用戶名:<%
if(userName != null && !userName.equals("")){
if(userName.equals("admin")){
//如果userName等于admin注冊失敗董瞻,返回注冊頁面
request.setAttribute("mess", "注冊失敗,用戶名已存在田巴!");
//轉(zhuǎn)發(fā)
request.getRequestDispatcher("register.jsp").forward(request, response);
}else{
//注冊成功跳轉(zhuǎn)到主頁面
request.setAttribute("mess", "注冊成功");
//重定向
response.sendRedirect(basePath+"/pages/newsDetail.jsp");
}
跳轉(zhuǎn)頁面代碼在請求中獲取屬性
- 它的返回值類型是Object類型钠糊,需要最數(shù)據(jù)類型轉(zhuǎn)換
<%
Object omess = request.getAttribute("mess");
if(omess != null){
out.println(omess.toString());
}
%>
轉(zhuǎn)發(fā):服務(wù)器內(nèi)部自動完成了跳轉(zhuǎn),服務(wù)器行為無形中延長了request作用域
圖片.png
session存取數(shù)據(jù)
page:作用域僅限于當(dāng)前頁面
session(服務(wù)器端使用的記錄同一客戶狀態(tài)的機(jī)制):setAttribute()作用域是一次會話
會話:一個會話就是瀏覽器和服務(wù)器之間的一次通話壹哺,會話可以在多次請求中保存和使用數(shù)據(jù)
session.getId()方法可以以獲得sessionId
session是單一用戶抄伍、多頁面可共享的。session保存在服務(wù)器端
會話的清除和過期時間
若沒有清理機(jī)制管宵,會導(dǎo)致性能問題或服務(wù)器崩潰
- 程序主動清除session數(shù)據(jù)
- 服務(wù)器主動清除長時間沒有再次發(fā)出請求的session
程序主動清除session數(shù)據(jù)
- 設(shè)置會話失效:session.invalidate();
- 一處會話的一個屬性
public void removeAttrilbute(String name);
用法:(跳轉(zhuǎn)后的頁面)
<a href="<%=basePath %>jsp/register.jsp">
注銷</a>
<%
//設(shè)置session過期方法一
session.setMaxInactiveInterval(10);
}
%>
<%
session.invalidate();//常用
//session.removeAttribute("userName");
response.sendRedirect(basePath+"/pages/loginOut.jsp");
%>
session.removeAttribute("userName");
圖片.png