在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>
沒有留言:
張貼留言