1. 程式人生 > 其它 >java構建樹形結構

java構建樹形結構

整合一下

轉發和重定向

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指令

  • 配置錯誤頁面

    1. 直接指向錯誤頁
    <%@ 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>
    
  • 提取公共頁面

    1. <%@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>

過濾器

過濾網站資料

  • 處理中文亂碼
  • 登陸驗證

開發步驟

  1. 導包

  2. 編寫過濾器

    實現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("過濾器已銷燬");
    }
  1. web.xml配置過濾器

監聽器

實現一個監聽器

  1. 編寫監聽器

    實現介面

    //統計網站線上人數(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);
        }
    }
    
    1. 註冊監聽器
     <listener>
            <listener-class>com.nuc.listener.OnlineCountListener</listener-class>
        </listener>
    

JavaBean

  • 必須無參構造
  • 屬性必須私有化
  • 必須要有get/set方法

一般用來和資料庫欄位做對映 ORM

ORM 物件關係對映
表->類
欄位->屬性
行記錄->物件

Jabc事務

事務

ACID原則

開啟事務 start transaction
事務提交 commit()
事務回滾 rollback()
關閉事務