美文网首页
九、EL表达式与JSTL表达式

九、EL表达式与JSTL表达式

作者: lifeline张 | 来源:发表于2018-07-26 15:36 被阅读0次

    1、EL表达式是为了简化jsp页面,只能写在js代码中,不能写在java程序中。在java程序总需要使用getParamter,getAttribute等。

    2、使用EL表达式要注意其不同的表达方式对应的不同作用域:{param.id }对应getParamter("id"),{requestScope.id }对应request.getAttribute("id")。

    3、EL表达式的存在就是为了替代一些在html中的java代码(<%%>),所以以后只要能用EL表达式的地方都不要用java代码。

    4、在使用EL表达式的时候,需要先将对应的对象或者参数放到相应的作用域中,在这一步的时候一定要先想好放进去的东西的作用域,选择page或者request等。

    5、EL使用前需要先在java程序中设置,JSTL使用前需要先导包。

    6、</c:forEach>

    <c:forEach var=”name” items=”Collection” varStatus=”StatusName” begin=”begin” end=”end” step=”step”>  
        所有内容  
    </c:forEach> 
    

    I、var设定变量名用于存储从集合中取出元素。
    I、items指定要遍历的集合。
    III、varStatus设定变量名,该变量用于存放集合中元素的信息。
    IV、begin、end用于指定遍历的起始位置和终止位置(可选)。
    V、step指定循环的步长。

    image.png
    image.png

    7、c:if


    image.png

    8、示例代码:

    <%@page import="cn.kgc.util.GetTotalPageCount"%>
    <%@page import="cn.kgc.entity.News"%>
    <%@page import="java.util.List"%>
    <%@page import="cn.kgc.Service.Impl.NewsDetailServiceImpl"%>
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%--动态包含无法使用,页面报错,newsService无法使用 <jsp:include page="../common/common.jsp" /> --%>
    <%@include file="../common/common.jsp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>无标题文档</title>
    <style type="text/css">
    <!--
    
    -->
    </style>
    <script>
        function addNews(){
            window.location="newsDetailCreateSimple.jsp";
        }
        
        function page_nav(form, currentPageNo) {
            form.currentPage.value = currentPageNo;
            form.submit();
        }
        
        function jump_to(form, currentPageNo) {
            var regexp=/^[1-9]\d*$/;
            var pageCount = document.getElementById("pageCount").value;
            if (!regexp.test(currentPageNo)) {
                alert("请输入正确的数字");
            } else if (currentPageNo - pageCount > 0) {
                alert("一共有" + pageCount + "页,请输入正确的数字。");
            } else {
                page_nav(form, currentPageNo);
            }
        }
        
        /* var categoryId = '${requestScope.flag}';
        alert(categoryId); */
    </script>
    </head>
    
    <body>
    
    <!--主体-->
        <div class="main-content-right">
            <!--即时新闻-->
            <div class="main-text-box">
                <div class="main-text-box-tbg">
                    <div class="main-text-box-bbg">
                        <form name ="searchForm" id="searchForm" action="/news/jsp/admin/newsDetailList.jsp" method="post">
                          <div>
                            新闻分类:
                                <select name="categoryId">
                                    <option value="0">全部</option>
                                    
                                        <option value='1' >国内</option>
                                    
                                        <option value='2' >国际</option>
                                    
                                        <option value='3' >娱乐</option>
                                    
                                        <option value='4' >军事</option>
                                    
                                        <option value='5' >财经</option>
                                    
                                        <option value='6' >天气</option>
                                    
                                </select>
                            新闻标题<input type="text" name="title" id="title" value=''/>
                                <button type="submit" class="page-btn">GO</button>
                                <button type="button" onclick="addNews();" class="page-btn">增加</button>
                                <input type="hidden" name=currentPage value=""/>
                                
                                <input type="hidden" name="totalPageCount" value="2"/>
                </div>
                </form>
                <table cellpadding="1" cellspacing="1" class="admin-list">
                    <thead >
                        <tr class="admin-list-head">
                            <th>新闻标题</th>
                            <th>作者</th>
                            <th>时间</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <%  
                            // 新闻总数
                            int totalCountOfNews = newsService.getTotalCountOfNews();
                            // 页面容量
                            int capacity = 3;
                            // 总页数
                            int pageCount = GetTotalPageCount.getTotalPageCount(totalCountOfNews, capacity);
                            // 当前页面
                            String a = request.getParameter("currentPage");
                            int currentPage;
                            if (a == null || a == "") {
                                currentPage = 1;
                            } else {
                                currentPage = Integer.parseInt(a);
                            }
                            // 获取相应页面的新闻
                            List<News> newsList = newsService.getNewsByPageNumAndCapacity(currentPage, capacity);
                            pageContext.setAttribute("list", newsList);
                            pageContext.setAttribute("totalCountOfNews", totalCountOfNews);
                            pageContext.setAttribute("capacity", capacity);
                            pageContext.setAttribute("pageCount", pageCount);
                            pageContext.setAttribute("currentPage", currentPage);
                         %>
                        <input type="hidden" id="pageCount" value="${pageCount }"/>
                        <c:forEach var="news" items="${list }" varStatus="status">
                        <tr <c:if test="${status.count%2==0 }"> class="admin-list-td-h2" </c:if>>
                            <td><a href='newsDetailView.jsp?id=${news.id }'>${news.title }</a></td>
                            <td>${news.author }</td>
                            <td>${news.createDate }</td>
                            <td><a href='adminNewsCreate.jsp?id=${news.id }'>修改</a>
                                <a href="javascript:if(confirm('确认是否删除此新闻?')) location='adminNewsDel.jsp?id=${news.id }'">删除</a>
                            </td>
                        </tr> 
                        </c:forEach>
                    </tbody>
                </table>
               <div class="page-bar">
                <ul class="page-num-ul clearfix">
                    <li>共${totalCountOfNews }条记录&nbsp;&nbsp; ${currentPage }/${pageCount }页</li>
                    <c:if test="${currentPage > 1 }">
                    <a href="javascript:page_nav(document.forms[0],1);">首页</a>
                    <a href="javascript:page_nav(document.forms[0],${currentPage - 1 });">上一页</a>
                    </c:if>
                    <c:if test="${currentPage < pageCount }">
                    <a href="javascript:page_nav(document.forms[0],${currentPage + 1 });">下一页</a>
                    <a href="javascript:page_nav(document.forms[0],${pageCount });">最后一页</a>&nbsp;&nbsp;
                    </c:if>
                </ul>
             <span class="page-go-form"><label>跳转至</label>
             <input type="text" name="inputPage" id="inputPage" class="page-key" />页
             <button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button>
            </span>
            </div> 
            </div>
           </div>
       </div>
       </div>
    </body></html>
    

    9、自此之后,java代码的归java代码,html的归html。两者之间的连接就是EL和JSTL。但是在一些不可以替代的地方还是不要进行替换。

    10、<c:import>与<jsp:include>指令作用类似,包含<jsp:include>所提供的所有功能,除此之外还可以访问其他Web资源或者网络资源。

    11、在使用c:import标签的时候,要设置url属性,这个url的值就是导入的jsp页面的路径。

    12、在c:import标签下面使用c:param标签传值的时候,在接受页面使用EL去接受的时候要用${param.参数名}。同时c:param标签里面的value的值得类型是String。

    相关文章

      网友评论

          本文标题:九、EL表达式与JSTL表达式

          本文链接:https://www.haomeiwen.com/subject/sfubmftx.html