1. 程式人生 > >JSP的內建物件一

JSP的內建物件一

JSP的九大內建物件:

  1. page
  2. out
  3. request
  4. response
  5. session
  6. application
  7. page context
  8. config
  9. exception
一:out(輸出)        out.jsp
  <body>
    //reg.jsp裡面的連結
    <%String id=request.getParameter("id");
      String name=request.getParameter("name");
      out.print("id="+id+"<br>");
      out.print("name="+name+"<br>");
    %>
    <hr>
    <%
       int[] n={60,70,80};
       for(int i=0;i<n.length;i++){
         out.print(n[i]);
       }
     %> 
     <hr>
     <%
       int[] n1={60,70,80};
       for(int i=0;i<n1.length;i++){ 
         out.println(n1[i]);  
       }
     %>
     <hr>
     <%
       int[] n2={60,70,80};
       for(int i=0;i<n2.length;i++){
         out.print(n2[i]+"<br>");
       }
     %>
  </body>
id=null
name=null

607080 
60 70 80 
60
70
80

二:request(請求)

       request物件主要用於處理客戶端請求

        

reg.jsp

  <body>
    <form action="doreg.jsp" method="post">
    <a href="out.jsp?id=1&name=yl">我是連結</a><br>
           姓名:<input type="text" name="username"  /><br>
           密碼:<input type="password" name="password"  /><br>
           愛好:<input type="checkbox" name="aihao" value="籃球"  />籃球
           <input type="checkbox" name="aihao" value="攀巖"  />攀巖
           <input type="checkbox" name="aihao" value="游泳"  />游泳<br>
          <input type="submit"  value="提交"  />
    </form>
  </body>
doreg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
//設定請求的編碼格式,該方式只對post提交有效,防止中文亂碼
request.setCharacterEncoding("utf-8");
//獲取表單資料
String username = request.getParameter("username");//請求獲取引數
String password = request.getParameter("password");
String[] info = request.getParameterValues("aihao");//請求獲取多個值對應的資料
out.print("姓名:"+username+"<br>");
out.print("密碼:"+password+"<br>");
String str="";
for(int i = 0;i<info.length;i++){
   str += info[i]+" ";
}
out.print("愛好:"+str);
%>

亂碼的解決方法:





在方式3中,埠號也是在那修改(myeclipse內建Tomcat與Apache Tomcat 埠衝突時修改)

二:request與response中轉發與重定向

        response物件用於響應客戶請求並向客戶端輸出資訊 

        response 物件常用方法
            void sendRedirect (String location):將請求重新定位到一個不同的URL,即頁面重定向

Login.jsp
  <body>
    <form action="doLogin.jsp" method="post">
           姓名:<input type="text" name="name"  /><br>
           密碼:<input type="password" name="password"  /><br>
     <input type="submit" value="提交">  
    </form>
  </body>

doLogin.jsp
<%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
     String password = request.getParameter("password");
     //這是轉發的方式
    /*
    * if(name.equals("yl")&&password.equals("123456")){     //equals等於
       request.getRequestDispatcher("success.jsp").forward(request, response); 
       //getRequestDispatcher 獲取請求排程程式   forward 轉發  response 響應
}else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } */ //這是重定向的方式 /* * if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp");
       // sendRedirect 傳送重定向
}else{ response.sendRedirect("Login.jsp"); } */ //如果重定向要傳值,則 /** if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ //如果想要彈窗,則 /** *if(name.equals("yl")&&password.equals("123456")){ //彈窗不會出現,因為來不及彈窗,加上鍊接即可 // out.print("<script>alert('登陸成功');Location.href="success.jsp"</script>"); response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ %> </body>

轉發與重定向的區別:

 轉發:

  • 瀏覽器位址列不顯示跳轉後的路徑,更加安全
  • 轉發是伺服器內部的跳轉頁面,它不能訪問外部的資源
  • 轉發多個頁面認為是一次請求,可以獲得一次請求的所有引數的值
重定向:
  • 重定向位址列可以顯示跳轉的路徑
  • 重定向後可以訪問專案外的資源
  • 重定向相當於重新發送了一次新的請求,前面請求的資料全部丟失
三、session(會話)

       一個會話就是瀏覽器與伺服器之間的一次通話

       session的常用方法:

問題:一個session對應一個視窗,那麼通過超連結開啟的視窗是否也是新的session呢?

分析:

  • 每個session物件都與瀏覽器一一對應,重新開啟一個瀏覽器,相當於建立一個session物件
  • 通過超連結開啟的新視窗,新視窗的session與其父視窗的session相同

doLogin.jsp

  <body>
    <%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
     String password = request.getParameter("password");
    
       //這是轉發的方式
     if(name.equals("yl")&&password.equals("123456")){
     
       //在session中存放使用者資訊
       session.setAttribute("user", name);
       
       //設定session過期時間(這裡的時間單位是秒)
       //setMaxInactiveInterva 設定最大非活動間隔
session.setMaxInactiveInterval(20); request.getRequestDispatcher("success.jsp").forward(request, response); }else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } %> </body>  在web.xml中也可以設定session

</welcome-file-list>
  <!-- 這裡的時間單位是min  -->
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>


success.jsp

<body>
	<% 
  String name=(String)session.getAttribute("user");
  if(name==null){
     response.sendRedirect("Login.jsp");
  }
  
   %>
	歡迎<%=name %>登陸成功!
	<br>
	<a href="exit.jsp">安全退出</a>
</body>

exit.jsp
 <body> 
    <%
     session.removeAttribute("user");   
    // removeAttribute 刪除指定名稱所對應的物件
     response.sendRedirect("Login.jsp");
     %>
 </body>

在系統中增加登入驗證,如果session中不存在該使用者的登入資訊,轉入登入頁面

checkLogin.jsp

 <% if(session.getAttribute("user")==null){
  response.sendRedirect("Login.jsp");
  } %>


如果session中不存在該使用者的登入資訊,轉入登入頁面

如果session中不存在該使用者的登入資訊,轉入登入頁面