JSp的session內(nèi)置對象取值方法
//創(chuàng)建session對象
HttpSession session =requst.getSession();
//設(shè)置session 對象的屬性值
session.setAttribute("屬性名",值);
取值
Object object=session.getAttibute("屬性名")
設(shè)置方法
//設(shè)置響應(yīng)回去的類型
response.setContentType("text/html");
//設(shè)置響應(yīng)的字符編碼格式
response.setCharacterEncoding("UTF-8");
request(請求)
//獲取請求屬性的值
request.getParameter("屬性名");
多用于表單提交和URL參數(shù)的傳遞的取值
JSp內(nèi)置對象生命周期:
out 只在本jsp頁面使用 無生命周期
request 生命周期 一次請求
response 生命周期 一次響應(yīng)
session 生命周期 項(xiàng)目瀏覽器關(guān)閉時(shí),生全周期結(jié)束,默認(rèn)不操作項(xiàng)目超過30分鐘生命周期結(jié)束
application 生命周期 當(dāng)開啟Tomcat服務(wù)器時(shí)創(chuàng)建,關(guān)閉Tomcat服務(wù)器時(shí)結(jié)束生命周期 (作用:統(tǒng)計(jì)服務(wù)器訪問人數(shù)或流量)
頁面跳轉(zhuǎn):
response.sendRedirect("admin/one.jsp") 重定向
RequestDispatcher 請求跳轉(zhuǎn)
兩者實(shí)現(xiàn)的效果相同
二者的區(qū)別:
1、
URL 地址的變化用response.sendRedirect時(shí),RequestDi.spatcher不會(huì)使URL地址進(jìn)行變化。
RepuestDispatcher 是服務(wù)器端請求機(jī)制的跳轉(zhuǎn)
response.sendRedirect 是客戶端請求機(jī)制的重定向
2、
RequestDispatcher傳值通過JSP-Servlet-JSp形式直接傳入到下一個(gè)JSp頁面
response.sendRedirect 傳值通過JSP-Servlet-JSP形式,只能夠傳遞到請求機(jī)制重定向這之前
3、
如果項(xiàng)目要跳轉(zhuǎn)到另外一個(gè)服務(wù)器的頁面時(shí),用response.sendRedirect進(jìn)行重定向
4、
我們盡量使用RequestDispatcher方式,因?yàn)槭欠?wù)器響應(yīng),所以在web容器執(zhí)行效率較高
RequestDispatcher什么時(shí)候使用呢?
項(xiàng)目中不進(jìn)行頁面的交互跳轉(zhuǎn)的時(shí)候,例如一個(gè)界面的增、刪、改、查,或者相關(guān)聯(lián)同類型模塊之間的跳轉(zhuǎn)
response.sendRedirect重定向什么時(shí)候使用呢?
無關(guān)聯(lián)的不同模塊間跳轉(zhuǎn)使用,例如,用戶界面模塊跳轉(zhuǎn)到產(chǎn)品信息界面模塊
5、
RequestDispatcher基本上認(rèn)定使用在Servlet里面
response.sendRedirect 用在Servlet和JSP頁面較多
重定向傳值 只影響request,不影響session的傳值
session何時(shí)使用?
傳值時(shí)盡量不要使用session
購物車的實(shí)現(xiàn)必須使用session對象
session.removeAttribute("name") 全部刪除物品
如果選擇性刪除?
傳入要?jiǎng)h除的購物信息主鍵id值,根據(jù)id值支查找集合中的對應(yīng)信息,然后做集合中的刪除操作
for(Product product : list){
if(deleteid==product.getid()){
list.remove(product);
}
}
session.setAttribute("gouwu",list)
兩種提交方式的亂碼處理:
post提交方式亂碼處理
中文亂碼問題
request.setcharacterEncoding("UTF-8");
處理get方式提交的亂碼方式處理
String names=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")