最近在複習Servlet,發現其中有很多細節方面的東西都沒有接觸到,只是學了大概 1.請求轉發和請求重定向的區別 2.輸入參數為中文時候的亂碼問題 3.Web工程中的目錄寫法 下麵分別闡述 1.請求轉發和請求重定向的區別 請求轉發: 請求重定向: 請求轉發是伺服器行為,本質上是一次請求,所以參數可以 ...
最近在複習Servlet,發現其中有很多細節方面的東西都沒有接觸到,只是學了大概
1.請求轉發和請求重定向的區別
2.輸入參數為中文時候的亂碼問題
3.Web工程中的目錄寫法
下麵分別闡述
****
1.請求轉發和請求重定向的區別
請求轉發:
request.getRequestDispatcher("/test.jsp").forward(request, response);
請求重定向:
response.sendRedirect("/test.jsp");
請求轉發是伺服器行為,本質上是一次請求,所以參數可以傳遞
請求重定向是瀏覽器行為,本質上是倆次請求,由瀏覽器重新發出的請求去訪問頁面。因為是新的請求,所以參數不能夠傳遞。
2.輸入參數為中文時候的亂碼問題
最新版本的tomcat的編碼預設為utf-8,所以get處理中文和post一樣處理
- 在瀏覽器端發送請求,調
用request.setCharacterEncoding("UTF-8");
來設置伺服器接受信息的編碼 response.setContentType("text/html;charset=UTF-8");
指定HTTP響應的編碼,同時指定了瀏覽器顯示的編碼response.setCharacterEncoding("UTF-8");
來設置HTTP響應的編碼,如果之前通過response.setContentType("text/html;charset=UTF-8");
設置了,則會覆蓋之前的設置,所以開發時候只使用上面的方法即可
Web工程中的目錄寫法
如果"/"是給伺服器使用,則代表當前的Web工程
如果"/"是給瀏覽器使用,則代表Webapps目錄
"/"代表的是當前Web工程
this.getServletContext().getRealPath(/index.jsp)
2.在伺服器端forward到其他頁面
this.getServletContext().getRequestDispatcher("/index.jsp");
3.使用include
指令或<jsp:include>
引入頁面
<%@include file = "/index.jsp"%>
<jsp:include page = "/index.jsp"%>
"/"代表的是當前webapps目錄
1.請求重定向
response.sendRedirect("/blockDemo01/index.jsp");
2.使用超鏈接跳轉
3.form表單提交
4.js腳本和css引用
在JSP頁面中獲得項目名稱(blockDemo01)有倆種方式${pageContext.request.contextPath}
,<%=request.getContextPath() %>