java構建樹形結構
阿新 • • 發佈:2021-12-14
整合一下
轉發和重定向
- 轉發時"/"代表的是本應用程式的根目錄
- 重定向時"/"代表的是webapps目錄
//重定向
//resp.sendRedirect("/request_war/success.jsp");
//容器轉發(使用少)
//this.getServletContext().getRequestDispatcher("/success.jsp").forward(req,resp);
//請求轉發
//req.getRequestDispatcher("/success.jsp").forward(req, resp);
Jsp內建物件和作用域
九大物件
- PageContent 可存值
- Requst 可存值
- Response
- Session 可存值
- Application(ServletContext) 可存值
- Config (ServletConfig)
- out
- page
- exception
四大作用域
pageContext.setAttribute("name1", "1");
當前頁面有效
request.setAttribute("name2", "2");
轉發有效,重定向失效
session.setAttribute("name3", "3");
關閉瀏覽器前有效
application.setAttribute("name4", "4");
伺服器共享
可通過setAttribute的第三個引數設定Attribute的作用域
拓展-雙親委派機制
jsp語法
jsp語法
-
jsp表示式
-
程式輸出到客戶端
<%= new java.util.Date() %>
-
jsp指令碼片段
<% int sum=0; for (int i=0; i < 100; i++) { sum +=i; } System.out.println(sum); out.println("<h1>Sum" + sum + "</h1>"); %>
-
jsp宣告
會被編譯到jsp生成的java類中,其他會被放置到jspservlet方法<%! static { System.out .println("loading!!!"); } private int globalVar=0; public void han() { System.out.println("進入函式"); } %>
-
註釋
<%-- Jsp註釋在客戶端會被直接刪除,安全性高--%> <!-- HTML註釋會被儲存下來-->
-
擴充套件el表示式
Jsp指令
-
配置錯誤頁面
- 直接指向錯誤頁
<%@ page errorPage="error/500.jsp" %>
2.web.xml配置錯誤頁
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/error/500.jsp</location> </error-page>
-
提取公共頁面
- <%@include file=“”%>將頁面組合起來
<%@include file="common/header.jsp" %> <h1>主題</h1> <%@include file="common/footer.jsp" %>
2. <-jsp:include page=“”->拼接頁面,還是三個頁面,常用(變數互不影響)
<jsp:include page="/common/header.jsp"/> <h1>主題</h1> <jsp:include page="/common/footer.jsp"/>
Jsp標籤&JSTL標籤&EL表示式
EL表示式:${ }
- 獲取資料
- 執行運算
- 獲取web開發常用物件
Jsp標籤
<jsp:include page="Jsp02.jsp"></jsp:include>
<%--包含--%>
<jsp:forward page="/Jsptag02.jsp">
<%--轉發--%>
<jsp:param name="value1" value="1"/>
<%--傳參--%>
<jsp:param name="value2" value="2"/>
</jsp:forward>
JSTL標籤
為了彌補html標籤的不足,jstl標籤庫
核心標籤
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
引用核心標籤庫的語法
<form action="coreif.jsp" method="get">
<input type="text" name="username" value="${param.username}">
<input type="submit" value="login">
</form>
<%--<%--%>
<%-- if (request.getParameter("username").equals("admin"))--%>
<%-- out.println("登陸成功");--%>
<%--%>--%>
<c:if test="${param.username=='admin'}" var="isAdmin" scope="request">
<c:out value="管理員歡迎您"></c:out>
</c:if>
<c:out value="${isAdmin}"></c:out>
<c:set var="score" value="100"></c:set>
<c:choose>
<c:when test="${score>=90}">
優秀
</c:when>
<c:when test="${score<60}">
不及格
</c:when>
</c:choose>
<%--var是每次變數--%>
<%--items是被遍歷的物件--%>
<%--begin是起點--%>
<%--end是終點--%>
<%--step是步長--%>
<%--遍歷常用--%>
<c:forEach begin="1" end="2" step="1" var="people" items="${list}">
<c:out value="${people}"></c:out>
<br>
</c:forEach>
過濾器
過濾網站資料
- 處理中文亂碼
- 登陸驗證
開發步驟
-
導包
-
編寫過濾器
實現Filter介面,重寫方法
@Override
//初始化
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化完成");
}
@Override
// chain:鏈
// 過濾中所有程式碼,在特定請求時執行
// 必須要過濾器執行
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
System.out.println("正在過濾");
filterChain.doFilter(servletRequest, servletResponse);//請求繼續執行
System.out.println("過濾完成");
}
@Override
// 銷燬
public void destroy() {
System.out.println("過濾器已銷燬");
}
- web.xml配置過濾器
監聽器
實現一個監聽器
-
編寫監聽器
實現介面
//統計網站線上人數(session) public class OnlineCountListener implements HttpSessionListener { @Override // 建立session監聽 public void sessionCreated(HttpSessionEvent se) { //獲取session並提權 ServletContext ctx = se.getSession().getServletContext(); System.out.println(se.getSession().getId()); // 獲取session值 Integer onlinecount = (Integer) ctx.getAttribute("OnlineCount"); //處理加一 if (onlinecount == null) onlinecount = new Integer(1); else { int count = onlinecount.intValue(); onlinecount = new Integer(count + 1); } ctx.setAttribute("OnlineCount", onlinecount); } @Override // 銷燬session監聽 public void sessionDestroyed(HttpSessionEvent se) { //獲取session並提權 ServletContext ctx = se.getSession().getServletContext(); se.getSession().invalidate(); // 獲取session值 Integer onlinecount = (Integer) ctx.getAttribute("OnlineCount"); //處理減一 if (onlinecount == null) onlinecount = new Integer(0); else { int count = onlinecount.intValue(); onlinecount = new Integer(count - 1); } ctx.setAttribute("OnlineCount", onlinecount); } }
- 註冊監聽器
<listener> <listener-class>com.nuc.listener.OnlineCountListener</listener-class> </listener>
JavaBean
- 必須無參構造
- 屬性必須私有化
- 必須要有get/set方法
一般用來和資料庫欄位做對映 ORM
ORM 物件關係對映
表->類
欄位->屬性
行記錄->物件
Jabc事務
事務
ACID原則
開啟事務 start transaction
事務提交 commit()
事務回滾 rollback()
關閉事務