JSP之路

使用post提交的時候參數有中文時,在接收頁面接收前必須對參數進行編碼
request.setCharacterEncoding("UTF-8");


解決獲取中文亂碼問題
使用URLEncoder解決無法在Cookie當中保存中文字符串問題
request.setCharacterEncoding("utf-8");
String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
URLEncoder就是將URL中特殊部分進行編碼。URLDecoder就是對特殊部分進行解碼
將要顯示的文字進行URLDecoder解碼
JSP全程Java Server Pages,是一種動態網頁開發技術

  • 性能更加優越,因爲JSP可以直接在HTML網頁中動態嵌入元素而不需要單獨引用CGI文件
  • 服務器調用的是已經編譯好的JSP文件,而不像CGI/Perl那樣必須先載入解釋器和目標腳本
  • JSP基於Java Servlets API,因此,JSP擁有各種強大的企業級Java API,包括JDBC,JNDI,EJB,JAXP等等
  • JSP頁面可以與處理業務邏輯的servlets一起使用,這種模式被Java servlet 模板引擎所支持
         JSP是Java EE不可或缺的一部分,是一個完整的企業級應用平臺。這意味着JSP可以用最簡單的方式來實現最複雜的應用


  • 與ASP相比:JSP有兩大優勢。首先,動態部分用Java編寫,而不是VB或其他MS專用語言,所以更加強大與易用。第二點就是JSP易於移植到非MS平臺上。
  • 與純 Servlets相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println語句。
  • 與SSI相比:SSI無法使用表單數據、無法進行數據庫鏈接。
  • 與JavaScript相比:雖然JavaScript可以在客戶端動態生成HTML,但是很難與服務器交互,因此不能提供複雜的服務,比如訪問數據庫和圖像處理等等。
  • 與靜態HTML相比:靜態HTML不包含動態信息
  • JSP結構

JSP常用的三個page指令:language表示編程語言、import表示導入的java包、contentType表示文件格式和字符編碼

JSP三大指令元素:include、page、taglib

JSP註釋:
               1、HTML的註釋:     <!--html註釋-->  //客戶端可見
               2、JSP的註釋:          <%--html註釋--%>  //客戶端不可見
               3、JSP腳本註釋:       //單行註釋          /**/多行註釋

JSP聲明:
                    <%! Java代碼%>

JSP表達式:
                    <%=表達式%>      //注意:表達式不以分號結束


以返回值的方式打印內容
                                    <%=printMultiTable2(out) %>
以腳本的方式輸出內容
                    <%printMultiTable2(out); %>


JSP內置對象
1、內置對象簡介
     jsp內置對象是Web容器創建的一組對象,不使用new關鍵就可以使用的內置對象
內置對象                                                                      描述
     pageContext                                                       JSP的頁面容器
     request                                                               得到用戶的請求信息
     response                                                             服務器想用戶端的迴應信息
     session                                                                用來保存每一個用戶的信息
     application                                                          表示所有用戶的共享信息
     config                                                                 服務器配置,可以取得初始化參數
     out                                                                     頁面輸出(向瀏覽器輸出)
     page                                                                   表示從頁面中顯示出來一個Servlet實例
     exception                                                            表示JSP頁面所發生的異常,在錯誤頁中才起作用

2、四種作用域範圍
      page:只在一個頁面中保存屬性,跳轉之後無效
      request:只在一次請求中保存屬性,服務器跳轉後依然有效
      session:在一次會話範圍中保存,無論何種跳轉都可以使用,但是新開瀏覽器無法使用
      application:在整個服務器上保存,所有用戶都可以使用
3、out
out對象常用方法如下:
                                   1、void println()向客戶端打印字符串
                                   2、void clear()清除緩衝區的內容,如果在flush之後調用會拋出異常
                                   3、void clearBuffer();清除緩衝區的內容,如果在flush之後調用不會拋出異常
                                   4、void flush()將緩衝區內容輸出到客戶端
                                   5、int getBufferSize()返回緩衝區以字節數的大小,如不設緩衝區則爲0
                                   6、int getRemaining()返回緩衝區還剩餘多少可用
                                   7、boolean isAutoFlush()返回緩衝區滿時,是自動清空還是拋出異常
                                   8、void close()關閉輸出流
4、request/response


獲取單個數據:<%=request.getParameter("username") %><br>
獲取多個數據:<%String [] favorites = request.getParameterValues("favorite");
      for(int i=0 ; i<favorites.length;i++){
      out.println(favorites[i]+"&nbsp;&nbsp;");
        }
        %>

存儲請求中的屬性和返回指定屬性的屬性值:
<%request.setAttribute("password","123456");%>
 密碼:<%=request.getAttribute("password") %>

       請求體的MIME類型:<%=request.getContentType() %><br>
       協議類型及版本號:<%=request.getProtocol() %><br>
       服務器主機名:<%=request.getServerName() %><br>
       服務器端口號:<%=request.getServerPort() %><br>
       請求文件的長度:<%=request.getContentLength() %><br>
       請求客戶端的IP地址:<%=request.getRemoteAddr() %><br>
       請求的真實路徑:<%=request.getRealPath("dologin.jsp") %><br>
       請求的上下文路徑:<%=request.getContextPath() %> <br>

       重定向:     response.sendRedirect("dologin.jsp");
      請求轉發:        request.getRequestDispatcher("request.jsp").forward(request,response);

5、session
     當把所有和對應網站的頁面都關了,那麼,該網站分配給該用戶的session結束

getCreationTime()會返回session創建時間,但是是一個數字串,要通過SimpleDateFormat該格式
<%     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
       Date d = new Date(session.getCreationTime());
     %>
    session創建時間:<%=sdf.format(d) %>

    session的ID編號:<%=session.getId() %><br>
     定義屬性,即使頁面調轉也可以獲取

    session.setAttribute("username","admin");
    session中獲取用戶名:<%=session.getAttribute("username") %><br>
     獲取所有定義好的session屬性的名稱:
               String [] names = session.getValueNames();
               for(int i = 0 ; i<names.length;i++)
               {
                    out.println(names[i]+"&nbsp;&nbsp;");
                }

      設置當前session最大生成期限  單位是秒

               session.setMaxInactiveInterval(10);
1
setProperty動作會自動將表單提交的內容自動匹配到javaBean中(實例化並且賦值)
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
       <h1>setProperty動作元素</h1>
       <hr>
       <!-- 根據表單自動匹配所有的屬性 -->
       <jsp:setProperty property="*" name="myUsers"/>

2
根據自己設定固定的幾個屬性匹配
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
       <h1>setProperty動作元素</h1>
       <hr>
       <!-- 根據表單自動匹配所有的屬性 -->
       <jsp:setProperty property="username" name="myUsers"/>

3
和表單無關,自己設置值給javabean
<jsp:setProperty property="username" name="myUsers" value="冰玉"/>
<jsp:setProperty property="password" name="myUsers" value="88888"/>

4
跟request參數關聯
通過URL傳參數給屬性賦值
<jsp:setProperty property="password" name="myUsers" param="mypass"/>
根據地址欄的參數名獲取參數值賦值給property

getProperty
<!-- 使用傳統的表達式獲取用戶名和密碼 -->
       用戶名:<%=myUsers.getUsername() %><br>
       密碼:<%=myUsers.getPassword() %><br>
<!-- 使用getProperty方式獲取用戶名和密碼 -->
        用戶名:<jsp:getProperty property="username" name="myUsers"/><br>
       密碼: <jsp:getProperty property="password" name="myUsers"/><br>
forward動作
語法:
<jsp:forward page="URL"/>
等同於: request.getRequestDispatcher("/url").forward(request,response);
<jsp:forward page="user.jsp"/>     相當於服務器內部跳轉
等價於:    <% request.getRequestDispatcher("user.jsp").forward(request,response);  %>

Param動作
語法:     <jsp:param  name="參數名"  value="參數值">
          常常與<jsp:forward>一起使用,作爲其的子標籤
          在使用forward跳轉之前可通過Param動作傳遞一些參數
          在跳轉後的頁面使用     request.getParameter("name");來獲取
          
實現DBHelper類型
String driver = "com.mysql.jdbc.Driver";  //數據庫驅動
//鏈接數據庫的URL地址
String url  =  "jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8
String username="root";  //數據庫的用戶名
String password="";  //數據庫的密碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章