A:request
客戶端向服務器端請求
Java講究封裝,因此Request也是某個東西的封裝,究竟是什麼東西呢?
按字面意思:請求!
從Http協議提及,當你發一個請求到服務端的時候,你會把一些信息交給服務器,好比你的語言,session-id等基本信息,而後再加上好比你提交表單時填上的數據。。。。。
全部全部這些數據,進入服務端後全被封裝在Request裏了,因此你能夠在Request裏很方便地獲取到各類信息了
B:response
服務端響應請求,返回給用戶(客服端,瀏覽器)
1解決中文亂碼
request.setCharacterEncoding("");-----解決中文亂碼
---------從a頁面向b頁面傳遞數據時,防止傳遞的數據是亂碼
response.setContentType();------解決中文亂碼
---------從a頁面向b頁面跳轉,防止b頁面中文亂碼
2 轉向頁面
response.sendRedirect();------重定向
request.getRequestDispactcher().forword();---轉發
轉向區別:
1.前面慢,後者快
2.前面沒法讀取request.setAttribute()所保存的數值,然後者(request)能夠讀取
3.前者地址欄顯示真正轉向後的地址,然後者顯示的是轉向前的地址
4.前者,轉向地址開始的"/",表示的是本機的根目錄;然後者,"/"表示的是應用的根目錄
3.獲取值
request.getparameter("title") ;是拿表單的值 (上個頁面)
和request.getAttribute("name") ; (後者獲取request.setAttribute()的值)不同的 要注意區分
客戶端(A)--(request)-》》服務端(B)(跳轉)---(request)-》》另外一個頁面(C){這兩個request不同,c不能request.getAttribute(a裏的值)}
除非,在服務端(b中)reques.getRequestDispatcher(「指定頁面c」).forward(request,response);
c才能request.getAttrebute(a裏的值);
{解釋:把a向b的request打包,做爲一個總的參數傳遞給c頁面,即:a向b的請求,b給a的響應,定向給c頁面}
jsp內置對象,是servlet中的類,而後實例化。因此你能夠直接(在jsp和servlet中)拿來用
在Struts中:
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
Map<String, Object> session=ActionContext.getContext().getSession();
一:會話session
存在服務器端,關閉瀏覽器就消失。
session.setAttribute("名",對象)
getAttribute("對象名")
可用來登陸時顯示用戶名
在servlet中不能直接拿來用
HttpSession session = request.getSession();
session.setAttribute("User", us);
二:持久化(硬盤中)cookie
存在客戶端
A:
Cookie cook=new Cookie("名字",值(字符串,不是對象))
{
User us=new User();
us.setPassword(strpwd);
us.setUsername(strna);
Cookie cook=new Cookie("loginuser",URLEncoder.encode( us.getUsername()));
}
cook.setMaxAge(365*24*60*60);過時時間
response.addCookie(cook);
B:
String uid="";
Cookie[] cooks=request.getCookies();
if(cooks!=null){
for(int i=0;i<cooks.length;i++){
if(cooks[i].getName().equals("loginuser")){
uid=URLDecoder.decode(cooks[i].getValue());
}
}
}
println(「uid」);顯示用戶名
在servlet中(不能)直接用,要引入包import javax.servlet.http.Cookie;
三:全局application
在servlet中不能直接用
ServletContext application = this.getServletContext();
存在服務器端(服務器通常不中止,若是要中止就存在數據庫,啓動後在從數據庫取出)
計算訪問數,在線人數
它存在於服務器的內存空間中,服務器一旦啓動,就會自動產生一個application對象,除非服務器被關閉,不然這個application對象將一直保持下去。在application對象的生命週期中,在當前服務器上運行的每個JSP程序均可以任意存取和這個application對象綁定的參數(或者Java對象)的值。
在JSP服務器的運行過程當中,僅有一個application對象,application對象是由服務器建立的,由服務器自動清除它,不能被用戶建立,用戶也不能清除application對象,咱們只能建立這個application對象的同步副本。application就是由JSP引擎自動建立的第一個application對象的同步副本(默認)。特別須要注意的是這些副本是同步的,任何一個副本上發生的變化都會影響到其餘的副本(用session限制)。
1.setAttribute(String name, Object object)
2.getAttribute(String name)
{ //不用先setAttribute()再get後使用,若是沒有(count這個屬性名),則ocount主動判爲空
Object ocount= application.getAttribute("count");
if(ocount==null){
application.setAttribute("count",1);
}
else{
application.setAttribute("count",1+(Integer)ocount);
}
。。。。。。。。。。。。。。。。。。。。。。。。。
int ocount=(Integer)application.getAttribute("count");
print(ocount);第幾回訪問
}
3.removeAttribute()
getAttributeNames()返回全部與當前application對象綁定在一塊兒的參數或者Java對象的名字;這個方法的返回值是一個枚舉對象(Enumeration)。
getServerInfo()該方法能夠得到當前服務器的詳細信息
log(String msg)該方法用於往服務器的log文件中寫入信息;咱們能夠在log文件中記錄訪問者的信息,這對於統計訪問流量來源方面十分有用,同時也便於管理員監控網站的運行狀況,還能夠將JSP程序執行過程當中所發生的錯誤事件都記入log文件中java