1. 程式人生 > 實用技巧 >Servlet/JSP/AJAX

Servlet/JSP/AJAX

實現方式

第一種實現Servlet介面

第二種繼承HttpServlet(可以用註解哦)

四種作用域?

  • application:this.getServletContext()
  • session:request.getSession()
  • request
  • page?

response.getWriter()

轉發和重定向

  • request.getRequestDispatcher("").forward(request,response)
  • response.sendRedirect("...")
  • 轉發url並不會改變,並且可以傳遞request的值
  • 重定向url會改變,不能傳遞request(可以放在url上傳遞)
  • 轉發可以訪問WEB-INF目錄下的內容

路徑

  • "/"開頭為絕對路徑
  • 伺服器解析:代表當前專案路徑(http://localhost:8080/demo)
    • web.xml中的url
    • 轉發
  • 瀏覽器解析:代表伺服器路徑(http://localhost:8080)
    • html中的路徑,如src、href、action
    • 重定向

JSP

  • 指令:<%@ %>
  • 指令碼片段:<% %>
  • 表示式:<%= %>
  • 全域性變數:<%! %>
  • 註釋:<%-- --%>

常用指令

  • page(language/contentType/import/pageEncoding/...)
  • include:靜態包含,被包含的檔案不會被翻譯和編譯
  • taglib:匯入jstl

動作標籤<jsp:... />

<jsp:forward page="xxx.jsp">
  <jsp:param value="18" name="xxx" />
</jsp:forward>

9大隱含物件


為什麼關閉瀏覽器sessionID就會失效呢?

因為sessionID是儲存在cookie裡的,瀏覽器關閉後cookie就失效了


EL

  • 如果資料為null,jsp顯示null,el什麼都不顯示
  • el顯示的資料,必須存放在域物件或上下文物件中
  • el可以自帶資料型別轉換的功能
  • el僅僅用來讀取資料,不能對資料進行更改
jsp:<%=((Student)request.getAttribute("stu")).getName()%>
el:${requestScope.stu.name }//預設從小到大域進行查詢
  • empty
  • !empty
  • not empty

11大隱含物件


JSTL

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  • <c:set>
  • <c:out>
  • <c:remove>
  • <c:if>
  • <c:chooose>
  • <c:forEach>
    (和Oracle的函式有點像)
    (和MyBatis的動態SQL有點像)

Cookie/Session


AJAX

不寫原生js的AJAX,用JQuery

$.ajax({
  type: get,
  url: "demo.html",
  data: {username:lw},
  dataType: ...,
  success: function(msg){
    alert(msg);
  },
  error:function(){
    alert("xx");
  }
})

如果傳到servlet,最終返回的結果要out.write("xx")回去,AJAX就能接收到