2015年12月19日 星期六

JAVA SL-314_11/29

Date: 11/29

在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>