JSP-頁面跳轉相關(轉發、重定,會話以及cookie、application)
阿新 • • 發佈:2019-02-11
一.頁面跳轉的資料傳輸
示例程式碼
<form action="welcome.jsp" method="post">
使用者名稱:<input type="text" name="username"></input>
密碼:<input type="text" name="password"></input>
<input type="checkbox" name="hobby" value="lanqiu"></input>籃球的
<input type ="checkbox" name="hobby" value="zuqiu"></input>足球的
<input type="checkbox" name="hobby" value="paiqiu"></input>排球的
<input type="checkbox" name="hobby" value="ymaoqiu"></input>羽毛球的
<input type="submit" name="" value="提交"></input>
</form>
welcome.jsp
<%
String uname=request.getParameter("username");
String upwd=request.getParameter("password");
String[] zu=request.getParameterValues("hobby");
out.print(uname+"<br/>");
out.print(upwd+"<br/>");
for(String s:zu){
out .print(s+"<br/>");
}
%>
1.request(轉發)
轉發是伺服器行為 多用於查詢 是一次性請求 可以攜帶引數 URL不會改變
//轉發的引數傳遞
request.setAttribute("keyname", uname);
request.setAttribute("keypwd", upwd);
//轉發的跳轉語句
request.getRequestDispatcher("login.jsp").forward(request, response);
//在轉發跳轉後頁面獲取變數
//通過html定義的id或name獲取
String n1=request.getParameter("username");
String p1=request.getParameter("password");
//通過設定屬性值獲取
String n2=(String)request.getAttribute("keyname");
String p2=(String)request.getAttribute("keypwd");
2.resonse(重定向)
重定向是客戶端行為 多用於增刪改操作後的重新整理 是兩次請求 一般不用帶引數除非使用?拼接 跳轉後URL會改變
重定向拿不到一次請求的東西
//重定向的跳轉語句
response.sendRedirect("loginOk.jsp");
3.中文亂碼解決
方法一 在jsp檔案的body位置設定字元編碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
方法二 將文字內容打散成位元組資料 再按照編碼格式進行拼接
String n2=(String)request.getAttribute("keyname").getByte[].setCharacterEncoding("utf-8")
方法三 注意是URI不是URL 這個治本 apache-tomcat-7.0.47\conf下server.xml
> <Connector port="8080" protocol="HTTP/1.1"
> connectionTimeout="20000"
> redirectPort="8443" URIEncoding="UTF-8"/>
二.session(會話)
只要是一個頁面跳轉就是一次回話
如果兩個視窗就是兩個回話了
session.setAttribute(“key”,值);
session.getAttribute(“key”);只要在一個回話內就可以拿到
三.cookie(快取)
Cookie,有時也用其複數形式 Cookies,指某些網站為了辨別使用者身份、進行 session 跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。
//建立cookie物件
Cookie cookie = new Cookie(column_name,column);
respond.addCookie(cookie);
//獲取cookie物件
<%
Cookie[] cookie = request.getCookies();
if(cookie != null && cookies.length>0){
for(int i=0;i<cookies.length;i++);{
if(cookies[i].getName().equals("column_name")){
column_name = URLDecoder.decode(cookies[i].getValue,"UTF-8");
}
}
}
%>
四.application
Application 物件用於儲存和訪問來自任何頁面的變數,類似於 session 物件。不同之處在於,所有的使用者分享一個 Application 物件,而 session 物件和使用者的關係是一一對應的。application物件儲存於專案之中,是伺服器i內建屬性,生命週期與伺服器一樣長。
<%
Interger count = 0;
Object object = application.getAttribute("count");
if(object==null){
count=1;
}else{
count = (Interger)object;
count++;
}
application.setAttribute("count",count);
out.print(count);
%>