<strong id="brzv6"><strike id="brzv6"><source id="brzv6"></source></strike></strong>

    1.  \r\n   \r\n       \r\n               \r\n  \r\n        <\/jsp:include> \r\n    <\/div> \r\n  \r\n    <\/body ><\/pre>

      8,引用的Page.jsp<\/p>

        <%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\"\r\n  pageEncoding=\"UTF-8\"%> \r\n<%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\"%> \r\n \r\n \r\n \r\n \r\n \r\n \r\n   \r\n  ${urlParams } \r\n    共${page.totalCount}條記錄 共${page.totalPage}頁(yè) 每頁(yè)顯示${page.everyPage}條 \r\n    當(dāng)前第${page.currentPage}頁(yè)  \r\n     \r\n       \r\n        <<首頁(yè) <上頁(yè)  \r\n      <\/c:when> \r\n       \r\n        <<首頁(yè) <\/a>  \r\n        <上一頁(yè)<\/a> \r\n      <\/c:otherwise> \r\n    <\/c:choose> \r\n     ||  \r\n     \r\n       \r\n         下頁(yè)> 尾頁(yè)>> \r\n      <\/c:when> \r\n       \r\n        下一頁(yè)> <\/a>  \r\n        末頁(yè)>><\/a> \r\n      <\/c:otherwise> \r\n    <\/c:choose> \r\n       \r\n     \r\n       \r\n         \r\n          第${index}頁(yè) \r\n        <\/option> \r\n      <\/c:forEach> \r\n    <\/SELECT> \r\n       \r\n    每頁(yè)顯示: \r\n                       \r\n             \r\n              ${pageCount}條 \r\n            <\/option> \r\n          <\/c:forEach> \r\n        <\/select> \r\n  <\/td> \r\n<\/tr> \r\n \r\n  <\/a> \r\n<\/div> \r\n
      	
      
      
      
      
      
      
      

      国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

      Rumah php教程 PHP開(kāi)發(fā) springmvc 分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)示例代碼

      springmvc 分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)示例代碼

      Jan 07, 2017 am 10:19 AM

      目前較常用的分頁(yè)實(shí)現(xiàn)辦法有兩種:

      1.每次翻頁(yè)都修改SQL,向SQL傳入相關(guān)參數(shù)去數(shù)據(jù)庫(kù)實(shí)時(shí)查出該頁(yè)的數(shù)據(jù)并顯示。

      2.查出數(shù)據(jù)庫(kù)某張表的全部數(shù)據(jù),再通過(guò)在業(yè)務(wù)邏輯里面進(jìn)行處理去取得某些數(shù)據(jù)并顯示。

      對(duì)于數(shù)據(jù)量并不大的簡(jiǎn)單的管理系統(tǒng)而言,第一種實(shí)現(xiàn)方法相對(duì)來(lái)說(shuō)容易使用較少的代碼實(shí)現(xiàn)分頁(yè)這一功能,本文也正是為大家介紹這種方法:

      代碼片段:

      1,Page.java

      package com.cm.contract.common; 
        
      import org.apache.commons.lang.StringUtils; 
      import org.apache.commons.lang.builder.ToStringBuilder; 
        
        
        
      /**分頁(yè)類 
       * @author FENGWEI 
       * @date 2016-5-23 
       */
      public class Page implements java.io.Serializable{ 
          
        private static final long serialVersionUID = 1L; 
        //前一頁(yè) 
        private Boolean hasPrePage; 
        //后一頁(yè) 
        private Boolean hasNextPage; 
        //每頁(yè)顯示多少條:默認(rèn)20條 
        private Long everyPage = 20L; 
        //總頁(yè)數(shù) 
        private Long totalPage; 
        //當(dāng)前第多少頁(yè):默認(rèn)第1頁(yè) 
        private Long currentPage = 1L; 
        //開(kāi)始下標(biāo) 
        private Long beginIndex; 
        //結(jié)束下標(biāo) 
        private Long endinIndex; 
        //總共多少條 
        private Long totalCount;   
        //排序列名 
        private String sortName;   
        //排序狀態(tài) 
        private String sortState;   
        //排序信息 
        private String sortInfo; 
        //是否排序 
        private Boolean sort = false; 
        private String defaultInfo = " "; 
          
          
          
        public String getDefaultInfo() { 
          return defaultInfo; 
        } 
        
        public void setDefaultInfo(String defaultInfo) { 
          this.defaultInfo = defaultInfo; 
        } 
        
        public String getSortInfo() { 
          return sortInfo; 
        } 
        
        public void setSortInfo(String sortInfo) { 
          this.sortInfo = sortInfo; 
        } 
        
        public String getSortName() { 
          return sortName; 
        } 
        
        public void setSortName(String sortName) { 
          setPageSortState(sortName);    
        } 
        
        public String getSortState() { 
          return sortState; 
        } 
        
        public void setSortState(String sortState) { 
          this.sortState = sortState; 
        } 
        
          
        public Page() { 
        } 
        
        /** 
         * 常用,用于計(jì)算分頁(yè) 
         * */
        public Page(Long totalRecords){    
          this.totalCount = totalRecords; 
          setTotalPage(getTotalPage(totalRecords));    
        } 
          
        /** 
         * 設(shè)置每頁(yè)顯示多少條時(shí)使用 
         * */
        public Page(Long everyPage,Long totalRecords){  
          this.everyPage = everyPage; 
          this.totalCount = totalRecords; 
          setTotalPage(getTotalPage(totalRecords));    
        } 
          
        /** 
         * @param state  狀態(tài)碼 
         * @param value  到第多少頁(yè)或者設(shè)置每頁(yè)顯示多少條或者為排序列名 
         */
        public void pageState(int index,String value) {         
          sort = false; 
          switch (index) { 
          case 0 :setEveryPage(Long.parseLong(value));break; 
          case 1 :first();break; 
          case 2: previous();break; 
          case 3: next();break; 
          case 4: last();break; 
          case 5: sort = true;sort(value);break; 
          case 6 ://到指定第多少頁(yè) 
            setCurrentPage(Long.parseLong(value)); 
            break;      
          } 
        } 
        
        /** 
         * 最前一頁(yè) 
         */
        private void first() { 
          currentPage = 1L; 
        } 
        
        private void previous() { 
          currentPage--; 
        } 
        
        private void next() { 
          currentPage++; 
        } 
        
        private void last() { 
          currentPage = totalPage; 
        } 
        
        private void sort(String sortName) {     
          //設(shè)置排序狀態(tài) 
          setPageSortState(sortName);    
        } 
            
          
          
        /** 
         * 計(jì)算總頁(yè)數(shù) 
         * */
        private Long getTotalPage(Long totalRecords) { 
           Long totalPage = 0L;   
           everyPage = everyPage == null ? 10L : everyPage; 
           if (totalRecords % everyPage == 0) 
            totalPage = totalRecords / everyPage; 
           else { 
            totalPage = totalRecords / everyPage + 1; 
           } 
           return totalPage; 
        }   
          
        
        public Long getBeginIndex() { 
          this.beginIndex = (currentPage - 1) * everyPage; 
          return this.beginIndex; 
        } 
        
        public void setBeginIndex(Long beginIndex) { 
          this.beginIndex = beginIndex; 
        } 
        
        public Long getCurrentPage() { 
          this.currentPage = currentPage == 0 ? 1 : currentPage; 
          return this.currentPage; 
        } 
        
        public void setCurrentPage(Long currentPage) { 
          if(0 == currentPage){ 
            currentPage = 1L; 
          } 
          this.currentPage = currentPage; 
        } 
        
        public Long getEveryPage() { 
          this.everyPage = everyPage == 0 ? 10 : everyPage; 
          return this.everyPage; 
        } 
        
        public void setEveryPage(Long everyPage) {    
          this.everyPage = everyPage; 
        } 
        
        public Boolean getHasNextPage() { 
          this.hasNextPage = (currentPage != totalPage) && (totalPage != 0); 
          return this.hasNextPage; 
        } 
        
        public void setHasNextPage(Boolean hasNextPage) { 
          this.hasNextPage = hasNextPage; 
        } 
        
        public Boolean getHasPrePage() { 
          this.hasPrePage = currentPage != 1; 
          return this.hasPrePage; 
        } 
        
        public void setHasPrePage(Boolean hasPrePage) { 
          this.hasPrePage = hasPrePage; 
        } 
        
        public Long getTotalPage() { 
          return this.totalPage; 
        } 
        
        public void setTotalPage(Long totalPage) { 
          if(this.currentPage > totalPage){ 
            this.currentPage = totalPage; 
          } 
          this.totalPage = totalPage; 
        } 
        
        public Long getTotalCount() { 
          return this.totalCount; 
        } 
        
        public void setTotalCount(Long totalCount) { 
          setTotalPage(getTotalPage(totalCount));  
          this.totalCount = totalCount; 
        } 
        
        @Override
        public String toString() { 
          return ToStringBuilder.reflectionToString(this); 
        } 
          
        /** 
         * 設(shè)置排序狀態(tài) 
         * */
        private void setPageSortState(String newPageSortName){    
          //判斷之前的排序字段是否為空 
          if(StringUtils.isEmpty(sortName)){ 
            //默認(rèn)排序?yàn)樯?
            this.sortState = PageUtil.ASC;    
            this.sortInfo = PageUtil.PAGE_ASC;            
          }else{ 
            if(StringUtils.equalsIgnoreCase(newPageSortName, sortName)){ 
              //判斷sortState排序狀態(tài)值 
              if(StringUtils.equalsIgnoreCase(sortState, PageUtil.ASC)){ 
                this.sortState = PageUtil.DESC; 
                this.sortInfo = PageUtil.PAGE_DESC;                
              }else{ 
                this.sortState = PageUtil.ASC; 
                this.sortInfo = PageUtil.PAGE_ASC;          
              }         
            }else{ 
              //默認(rèn) 
              this.sortState = PageUtil.ASC;    
              this.sortInfo = PageUtil.PAGE_ASC; 
            } 
          } 
          sortName = newPageSortName.toLowerCase();       
        } 
        
        public Boolean isSort() { 
          return sort; 
        } 
        
        public void setSort(Boolean sort) { 
          this.sort = sort; 
        } 
        
        
        public Long getEndinIndex() { 
          this.endinIndex = (currentPage) * everyPage; 
          return endinIndex; 
        } 
        
        public void setEndinIndex(Long endinIndex) { 
          this.endinIndex = endinIndex; 
        }   
      }

      2.PageState.java

      package com.cm.contract.common; 
        
      import org.apache.commons.lang.StringUtils; 
        
        
        
        
      /**分頁(yè)狀態(tài)類 
       * @author FENGWEI 
       * @date 2016-5-23 
       */
      public enum PageState { 
          
        /** 
         * 設(shè)置每頁(yè)顯示多少條 
         * */
        SETPAGE, 
        /** 
         * 首頁(yè) 
         * */
        FIRST,  
        /** 
         * 向前一頁(yè) 
         * */
        PREVIOUS,  
        /** 
         * 向后一頁(yè) 
         * */
        NEXT,  
        /** 
         * 末頁(yè) 
         * */
        LAST,  
        /** 
         * 排序 
         * */
        SORT, 
        /** 
         * 到第多少頁(yè) 
         * */
        GOPAGE; 
        
          
        /** 
         * @param value 索引名稱 
         * @return 返回索引下標(biāo) 
         */
        public static int getOrdinal(String value) { 
          int index = -1; 
          if (StringUtils.isEmpty(value)) { 
            return index; 
          } 
          String newValue = StringUtils.trim(value).toUpperCase(); 
          try { 
            index = valueOf(newValue).ordinal(); 
          } catch (IllegalArgumentException e) {} 
          return index; 
        } 
      }

      3.PageUtil.java

      /** 
       * 分頁(yè)工具類 
       * @author FENGWEI 
       * @date 2016-5-23 
       */
      public class PageUtil { 
          
        public static final String ASC = "asc"; 
        public static final String DESC = "desc"; 
        public static final String PAGE_DESC = "↓"; 
        public static final String PAGE_ASC = "↑"; 
        public static final String PAGE_NULL = " ";  
        public static final String SESSION_PAGE_KEY = "page";   
          
          
        /** 
         * 初始化分頁(yè)類 
         * @param initPageSql 未分頁(yè)的查詢SQL 
         * @param totalCount  總行數(shù) 
         * @param index    分頁(yè)狀態(tài) 
         * @param value    只有在設(shè)置每頁(yè)顯示多少條時(shí),值不會(huì)NULL,其它為NULL 
         */
        public static Page inintPage(Long totalCount,Integer index,String value,Page sessionPage){  
          Page page = null; 
          if(index < 0){ 
             page = new Page(totalCount); 
          }else{ 
             /**每頁(yè)顯示多少條*/
             Long everPage = null == value ? 10 : Long.parseLong(value); 
             /**獲取Session中的分頁(yè)類,方便保存頁(yè)面分頁(yè)狀態(tài)*/
             page = sessionPage;        
             page.setEveryPage(everPage); 
             page.setTotalCount(totalCount);       
          }   
          return page;     
        } 
          
          
        
          
        /** 
         * 當(dāng)頁(yè)點(diǎn)擊:首頁(yè),前一頁(yè),后一頁(yè),末頁(yè),排序,到第多少頁(yè)時(shí)進(jìn)行分頁(yè)操作 
         * @param index 分頁(yè)狀態(tài) 
         * @param value 排序字段名或者到第多少頁(yè) 
         */
        public static Page execPage(int index,String value,Page sessionPage){  
          Page page = sessionPage;       
          /**調(diào)用方法進(jìn)行分頁(yè)計(jì)算*/
          page.pageState(index,value);     
          return page;     
        } 
        
      }

      4.DefaultController.java 此部分可以靈活使用

      package com.cm.contract.common; 
        
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
      import javax.servlet.http.HttpSession; 
        
      import org.springframework.web.bind.annotation.ModelAttribute; 
        
      /** 
       * 提取公用的request和response Title:DefaultController Descrption: 
       * 
       * @author FENGWEI 
       * @date 2016-5-6下午3:30:32 
       */
      public class DefaultController { 
        
        /** 
         * oracel的三層分頁(yè)語(yǔ)句 子類在展現(xiàn)數(shù)據(jù)前,進(jìn)行分頁(yè)計(jì)算! 
         * 
         * @param querySql 
         *      查詢的SQL語(yǔ)句,未進(jìn)行分頁(yè) 
         * @param totalCount 
         *      根據(jù)查詢SQL獲取的總條數(shù) 
         * @param columnNameDescOrAsc 
         *      列名+排序方式 : ID DESC or ASC 
         */
        protected Page executePage(HttpServletRequest request, Long totalCount) { 
          if (null == totalCount) { 
            totalCount = 0L; 
          } 
          /** 頁(yè)面狀態(tài),這個(gè)狀態(tài)是分頁(yè)自帶的,與業(yè)務(wù)無(wú)關(guān) */
          String pageAction = request.getParameter("pageAction"); 
          String value = request.getParameter("pageKey"); 
        
          /** 獲取下標(biāo)判斷分頁(yè)狀態(tài) */
          int index = PageState.getOrdinal(pageAction); 
        
          Page page = null; 
          /** 
           * index < 1 只有二種狀態(tài) 1 當(dāng)首次調(diào)用時(shí),分頁(yè)狀態(tài)類中沒(méi)有值為 NULL 返回 -1 2 當(dāng)頁(yè)面設(shè)置每頁(yè)顯示多少條: 
           * index=0,當(dāng)每頁(yè)顯示多少條時(shí),分頁(yè)類要重新計(jì)算 
           * */
          Page sessionPage = getPage(request); 
        
          if (index < 1) { 
            page = PageUtil.inintPage(totalCount, index, value, sessionPage); 
          } else { 
            page = PageUtil.execPage(index, value, sessionPage); 
          } 
          setSession(request, page); 
          return page; 
        } 
        
        private Page getPage(HttpServletRequest request) { 
          Page page = (Page) request.getSession().getAttribute( 
              PageUtil.SESSION_PAGE_KEY); 
          if (page == null) { 
            page = new Page(); 
          } 
          return page; 
        } 
        
        private void setSession(HttpServletRequest request, Page page) { 
          request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY, page); 
        } 
      }

      使用方法:

      5,Controller.java

      /** 
         * model 添加的分頁(yè)條件 
         * executePage 方法寫在工具類中 
         * @param model 
         */
      @Controller
      public class CMLogController extends DefaultController { 
      @RequestMapping("index.do") 
        public ModelAndView userInto(ModelMap model, String username) { 
          nameStr = username; 
          model.addAttribute("username", nameStr); 
          // 分頁(yè)數(shù) 
          Long totalCount = logService.pageCounts(model); 
          // 分頁(yè)顯示 
          Page page = executePage(request, totalCount); 
          if (page.isSort()) { 
            model.put("orderName", page.getSortName()); 
            model.put("descAsc", page.getSortState()); 
          } else { 
            model.put("orderName", "logtime"); 
            model.put("descAsc", "desc"); 
          } 
          model.put("startIndex", page.getBeginIndex()); 
          model.put("endIndex", page.getEndinIndex()); 
          ModelAndView mv = new ModelAndView(); 
          // 分頁(yè)查詢 
          logList = logService.pageList(model); 
          mv.addObject("logList", logList); 
          mv.setViewName("/jsp/log"); 
          return mv; 
        }}

      6.maybatis中幾條查詢語(yǔ)句

      //分頁(yè)查詢 
      <select id="pageList" parameterType="map" resultMap="BaseResultMap">   
            
          select ttt.* from(select tt.*,rownum rn from(select * from CM_LOG 
          <where>      
            <if test="username != null and username != &#39;&#39;"> 
              <!--  
               特別提醒一下, $只是字符串拼接, 所以要特別小心sql注入問(wèn)題。 
               在開(kāi)發(fā)時(shí)使用: $,方便調(diào)試sql,發(fā)布時(shí)使用: # 
              -->
              and username like &#39;%${username}%&#39;           
            </if> 
             <if test="type != null and type != &#39;&#39;"> 
              <!--  
               特別提醒一下, $只是字符串拼接, 所以要特別小心sql注入問(wèn)題。 
               在開(kāi)發(fā)時(shí)使用: $,方便調(diào)試sql,發(fā)布時(shí)使用: # 
              -->
              AND TYPE = #{type,jdbcType=VARCHAR}    
            </if> 
           </where>  
           order by ${orderName} ${descAsc} )tt)ttt 
           <where>  
            <if test="startIndex != null and startIndex != &#39;&#39;"> 
              rn > ${startIndex}           
            </if>  
            <if test="endIndex != null and endIndex != &#39;&#39;">        
               <![CDATA[ and rn <= ${endIndex} ]]>               
            </if>   
           </where>      
      </select> 
      // 分頁(yè)數(shù) 
       <select id="pageCounts" parameterType="map" resultType="long">   
        select count(*) from CM_LOG  
        <where>  
        <if test="username != null and username != &#39;&#39;"> 
          and username like &#39;%${username}%&#39;          
        </if>  
        </where>  
      </select>

      7.前臺(tái)頁(yè)面index.jsp

      //只需在頁(yè)面布局添加該div 
        //username 為條件  
        // <jsp:param name="url" value="/log/index.do?"/>    不帶條件的方式 問(wèn)號(hào)必須存在 
      <body > 
        <div align="right" style="height: 20"> 
            <jsp:include page="/jsp/page.jsp"> 
                <jsp:param name="url" value="/log/index.do?username=${username }"/>     
        
              </jsp:include> 
          </div> 
        
          </body >

      8,引用的Page.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%> 
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
      <c:set var="page" value="${sessionScope.page}" /> 
      <c:set var="path" value="${pageContext.request.contextPath}" /> 
      <c:set var="url" value="${param.url}" /> 
      <c:set var="urlParams" value="${param.urlParams}" /> 
      <c:set var="pathurl" value="${path}/${url}" /> 
      <tr> 
        <td colspan="5"> 
        ${urlParams } 
          共${page.totalCount}條記錄 共${page.totalPage}頁(yè) 每頁(yè)顯示${page.everyPage}條 
          當(dāng)前第${page.currentPage}頁(yè)  
          <c:choose> 
            <c:when test="${page.hasPrePage eq false}"> 
              <<首頁(yè) <上頁(yè)  
            </c:when> 
            <c:otherwise> 
              <a href="${pathurl}&pageAction=first${urlParams}"><<首頁(yè) </a>  
              <a href="${pathurl}&pageAction=previous${urlParams}" /><上一頁(yè)</a> 
            </c:otherwise> 
          </c:choose> 
           ||  
          <c:choose> 
            <c:when test="${page.hasNextPage eq false}"> 
               下頁(yè)> 尾頁(yè)>> 
            </c:when> 
            <c:otherwise> 
              <a href="${pathurl}&pageAction=next${urlParams}">下一頁(yè)> </a>  
              <a href="${pathurl}&pageAction=last${urlParams}">末頁(yè)>></a> 
            </c:otherwise> 
          </c:choose> 
             
          <SELECT name="indexChange" id="indexChange"
            onchange="getCurrentPage(this.value);"> 
            <c:forEach var="index" begin="1" end="${page.totalPage}" step="1"> 
              <option value="${index}" ${page.currentPage eq index ? "selected" : ""}> 
                第${index}頁(yè) 
              </option> 
            </c:forEach> 
          </SELECT> 
             
          每頁(yè)顯示:<select name="everyPage" id="everyPage" onchange="setEveryPage(this.value);"> 
                <c:forEach var="pageCount" begin="5" end="${page.totalCount}" step="5">             
                  <option value="${pageCount}" ${page.everyPage eq pageCount ? "selected" : ""}> 
                    ${pageCount}條 
                  </option> 
                </c:forEach> 
              </select> 
        </td> 
      </tr> 
      <div style=&#39;display: none&#39;> 
        <a class=listlink id="indexPageHref" href=&#39;#&#39;></a> 
      </div> 
      <script> 
      function getCurrentPage(index){  
        var a = document.getElementById("indexPageHref");   
        a.href = &#39;${pathurl}&pageAction=gopage&pageKey=&#39;+index+&#39;${urlParams}&#39;;     
        a.setAttribute("onclick",&#39;&#39;);      
        a.click("return false");   
      } 
      function setEveryPage(everyPage){   
        var a = document.getElementById("indexPageHref"); 
        var currentPage = document.getElementById(&#39;indexChange&#39;).value; 
        a.href = &#39;${pathurl}&pageAction=setpage&pageKey=&#39;+everyPage+&#39;${urlParams}&#39;;     
        a.setAttribute("onclick",&#39;&#39;);      
        a.click("return false");   
      } 
      function sortPage(sortName){   
        var a = document.getElementById("indexPageHref");   
        a.href = &#39;${pathurl}&pageAction=sort&pageKey=&#39;+sortName+&#39;${urlParams}&#39;;    
        a.setAttribute("onclick",&#39;&#39;);    
        a.click("return false");   
      } 
      </script>

      以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持PHP中文網(wǎng)。

      更多springmvc 分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)示例代碼相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


      Kenyataan Laman Web ini
      Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

      Alat AI Hot

      Undress AI Tool

      Undress AI Tool

      Gambar buka pakaian secara percuma

      Undresser.AI Undress

      Undresser.AI Undress

      Apl berkuasa AI untuk mencipta foto bogel yang realistik

      AI Clothes Remover

      AI Clothes Remover

      Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

      Clothoff.io

      Clothoff.io

      Penyingkiran pakaian AI

      Video Face Swap

      Video Face Swap

      Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

      Alat panas

      Notepad++7.3.1

      Notepad++7.3.1

      Editor kod yang mudah digunakan dan percuma

      SublimeText3 versi Cina

      SublimeText3 versi Cina

      Versi Cina, sangat mudah digunakan

      Hantar Studio 13.0.1

      Hantar Studio 13.0.1

      Persekitaran pembangunan bersepadu PHP yang berkuasa

      Dreamweaver CS6

      Dreamweaver CS6

      Alat pembangunan web visual

      SublimeText3 versi Mac

      SublimeText3 versi Mac

      Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

      Topik panas

      Tutorial PHP
      1502
      276