在JSP中為了簡化使用者開發JSP內建
9種物件供開發者使用
pageContext 頁面內容容器
request 請求者資訊
response 用戶端回應資料
session 儲存使用者資訊
application 使用者共同資訊
config 初始化參數伺服器設定
out 輸出
page
exception
page → 跳躍無效,一個頁面
request → 一次請求,跳躍然有效
session → 一次階段範圍中儲存 新開browser無效
application →整個 伺服器上儲存 all user使用
/===============================================/
除錯
如果瀏覽器打開來是404 ---> 路徑
500 ---> 打錯字
/===============================================/
request物件
最常被使用到,主要是處理Client端發出的請求如參數或標頭資訊
等其為javax.servlent.http.HttpServletRequest介面的實體物件表示其
主要應用在http協定上
//處理亂號問題
request.html
<form action=”request.jsp” method=”get”>
請輸入資訊:<input type=”text” name=”info”>
<input type=”subimt” value=”傳送”>
</form>
getParameter → 單參數及字塊
getParameterValues → 一組參數(同名參數)
getParameterNames → 傳回所有參數,傳回值型態Enumerration要hasMoreElement()判斷
,nextElement()取出
/===============================================/
response物件
對用戶端請求進行回應,在伺服器處理後的結果
發回給用戶端,其為javax.servlet.http.HttpServletResponse介面的實例
/===============================================/
//page_scope_01.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% //產生屬性 pageContext.setAttribute("name","LCC"); pageContext.setAttribute("birthday",new Date()); %> <% // page屬性範圍使用,將一個屬性設定在本頁上,跳躍之作法取得伺服器跳躍想讓屬性繼續儲存下來,在使用request屬性範圍 String username=(String) pageContext.getAttribute("name"); Date userbirthday=(Date) pageContext.getAttribute("birthday"); %> <h2>姓名: <%=username %></h2> <h2>生日: <%=userbirthday%></h2> </body> </html>
/===============================================/
//page_scope_02 <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% //設定屬性 request.setAttribute("name","LCC"); request.setAttribute("birthday",new Date()); //pageContext.setAttribute("name","LCC"); //pageContext.setAttribute("birthday",new Date()); %> //forward 和 超連結 href 在這個範例的差異 //<jsp:forward page="page_scope_03.jsp> <a href="page_scope_03.jsp"></a> </body> </html>
/===============================================/
//request.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <form action="request.jsp" method="get"> 請輸入資訊:<input type="text" name="info"> <input type="submit" value="傳送"> </form> </body> </html>
//request.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% request.setCharacterEncoding("UTF-8"); String content=new String(request.getParameter("info").getBytes("ISO8859-1")); //String content=request.getParameter("info"); %> <h2>輸入的資訊 : <%=content %></h2> </body> </html>
/===============================================/
//request_01.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <form action="request_01.jsp" method="post"> 姓名:<input type="text" name="uname"><br> 性別:<input type="radio" name="sex" value="男" checked> 男 <input type="radio" name="sex" value="女" checked> 女<br> 城市:<select name="city"> <option value="台北">台北</option> <option value="台中">台中</option> <option value="高雄">高雄</option> </select><br> 興趣:<input type="checkbox" name=" **inst" value="旅遊">旅遊 <input type="checkbox" name=" **inst" value="聽音樂">聽音樂 <input type="checkbox" name=" **inst" value="睡覺">睡覺<br> 自我介紹:<textarea cols="30" rows="5" name="note"></textarea><br> <input type="hidden" name="uid" value="1"/> <input type="submit" value="傳送"/> <input type="reset" value="重設"/> </form> </body> </html>
//request_01.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% request.setCharacterEncoding("BIG5"); Enumeration enu=request.getParameterNames(); %> <table border="1"> <tr> <td>參數名稱</td> <td>參數內容</td> </tr> <% while(enu.hasMoreElements()){ String paramName= (String) enu.nextElement(); %> <tr> <td><%=paramName%></td> <td> <% if(paramName.startsWith("**")){ //以**開頭 String paramValue[]=request.getParameterValues(paramName); for(int x=0;x<paramValue.length;x++){ %> <%=paramValue[x]%>、 <% } }else{ String value=request.getParameter(paramName); %> <%=value%> <% } %> </td> </tr> <% } %> </table> </body> </html>/===============================================/
//response.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <%! int count=0; %> <% response.setHeader("refresh","2");//頁面2秒更新 %> <h3>已經存取了<%=count++%>次</h3> <% Cookie c1=new Cookie("name","LCC"); Cookie c2=new Cookie("URL","www.google.com"); c1.setMaxAge(100); c2.setMaxAge(100); response.addCookie(c1); response.addCookie(c2); %> </body> </html>
//response_01.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% Cookie c[]=request.getCookies();//取得客戶端cookie System.out.println(); for(int x=0; x<c.length;x++){ %> <h3><%=c[x].getName()%>--><%=c[x].getValue()%></h3> <% } %> <%//public String getName()//取得cookie名稱 //public String getValue()//取得cookie內容 //public void setMaxAge()//設定cookie儲存時間以合為單位 //public void addCookie()//向用戶端確定cookie %> </body> </html>/===============================================/
//ip.jsp <%@ page language="java" import="java.util.*" pageEncoding="BIG5"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% String method=request.getMethod();//請求方式 String ip=request.getRemoteAddr(); //取ip String path=request.getServletPath();//路徑 String contextPath=request.getContextPath(); %> <h3>請求方式: <%=method%><br></h3> <h3>IP:<%=ip%><br></h3> <h3>路徑:<%=path%><br></h3> <h3>上下文名稱:<%=contextPath%><br></h3> </body> </html>