Servlet/JSP/AJAX
阿新 • • 發佈:2020-12-06
實現方式
第一種實現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就能接收到