• JSP和El表达式和JSTL标签库使用


    JSP 指令是通知JSP引擎如何处理该JSP页面,不是针对程序员的。

    共有三种指令:

       1.page指令:

           1.1. language="java"  默认是java,只能写java

           1.2.import="package.class"  引入源码包

           1.3.session="true"   默认创建session,true表示自动创建,jsp和servlet能获取同样的HttpSession

           1.4.buffer="8kb"  JSP输出内容,不是一下到浏览器的,而是等缓存满了以后,才会输出到浏览器,该JSP缓存默认大小为8kb

           1.5.errorPage="url"   表示该页面出错后跳转到哪个页面

            isErrorPage="true"   显示出错信息页面必须声明为true,这样JSP就会创建exception对象。

                   以上2个属性都是处理局部异常处理的。

             全局异常:

             配置web.xml文件

        

    [html] view plain copy
     
    1. <error-page>  
    2.   
    3.        <error-code>500</error-code>  
    4.   
    5.        <location>/WEB-INF/sys500.jsp</location>  
    6.   
    7. </error-page>  



             也可以处理类型异常

         

    [html] view plain copy
     
    1. <error-page>  
    2.   
    3.        <error-type>java.lang.ArithmeticException</error-type>  
    4.   
    5.        <location>/WEB-INF/sys500.jsp</location>  
    6.   
    7.  </error-page>  



             类型异常优先级高。局部异常优先级最高。

              contentType="UTF-8"。对内:表示JSP保存的编码;对外:表示浏览器用什么方式解码

              pageEncoding="UTF=8";和contentType作用相同

              当两个属性同时存在的时候,对内有pageEncoding决定。

              isELIgored="false"

               是否忽略EL表达式,默认支持EL表达式

       2.include指令:

              <$@ include file="被包含的jsp页面"$>

                          在翻译成servlet是将被包含的jsp页面中的内容翻译成servlet中了,即多个jsp只会翻译成一个Servlet 我们通常将     

                  include指令包含的jsp页面叫静态包含,就是说编译时包含。

      3.taglib指令:

      

    [html] view plain copy
     
    1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>  

           可以将数据绑定到域对象中

          <c:set var="name" value="靠谱" scope="request"/>

                             将“靠谱”字符串绑定到request域中,名称为name。

          <c:out value="${NAME}" default="查无此人"/>   

                            用EL表达式调用名字为name的数据,如果查不到,返回空字符串。

            request.getAttribute("NAME");   该方法如果查不到数据,返回的是null

    JSP九大隐式对象:

         JSP中叫法             Servlet中叫法

        1.request                   HttpServletRequest

        2.response                HttpServletResponse    

        3.session                   HttpSession

        4.application             ServletContext

        5.config                     ServletConfig

        6.out                         JspWriter

        7.exception               特殊情况下使用

        8.page                      this 本jsp页面

        9.pageContext         无


    下面演示:request/session/application用法:

       

    [html] view plain copy
     
    1. <html>  
    2.   <body>   
    3.     参数值:<%=request.getParameter("name") %><br/>  
    4.     <%  
    5.         session.setAttribute("name", "哈哈");  
    6.         application.setAttribute("age", "20");  
    7.      %>  
    8.     姓名:<%=session.getAttribute("name") %><br/>  
    9.     年龄:<%=application.getAttribute("name") %>  
    10.   </body>  
    11. </html>  


    out对象和Servlet中PrintWriter的区别:


                 1,out内容先输入jspwriter缓存区,然后输给printwriter缓存区,然后在输给浏览器
                 2,pageContext是一个作用域,仅在当前jsp页面中有效,也能完成转发和包含功能。

                 3,pageContext也可以获取其他八个内置对象

                 4,pageContext能将值绑定到其他域对象中。

                 5,pageContext对象的findAttribute方法会依次从page->request -> session -> application域对象查找,找到即止。

    映射JSP

          web.xml文件:

    [java] view plain copy
     
    1. <servlet>  
    2.   
    3.     <servlet-name>SimpleJspServlet</servlet-name>  
    4.   
    5.     <jsp-file>/simple.jsp</jsp-file>  
    6.   
    7. </servlet>  
    8.   
    9. <servlet-mapping>  
    10.   
    11.     <servlet-name>SimpleJspServlet</servlet-name>  
    12.   
    13.     <url-pattern>index.html</url-pattern>  
    14.   
    15. </servlet-mapping>  



    El表达式:

             ${} :可以自动获取域中对象,request,session,application,pageContext,EL找不到返回空白字符串。

        EL表达式中11大内置对象

               1,pageContext        获取页面context的Map对象     

               2,pageScope        获取页面域的Map对象

               3,requestScope        获取request域的Map对象

               4,sessionScope        获取session域Map对象

               5,applicationScope      获取context的Map对象

               6,param                     获取一个请求参数

               7,paramValues        获取一个请求参数数组    

               8, header                  获取一个请求域对象

               9,headerValues

              10,cookies

              11,initParam               获取web.xml中的参数

    [html] view plain copy
     
    1. <context-param>  
    2.   
    3.         <param-name></param-name>  
    4.   
    5.           <param-value></param-value>  
    6.   
    7. </context-param>   


      

    <init-param>只有在本servlet中有效

    El表达式中可以直接获取域中的数据:


     

    [html] view plain copy
     
    1. <%  
    2.      pageContext.setAttribute("NAME","哈哈");  
    3.  %>              
    4.  姓名:${NAME}<br/>  
    5.  <hr/>  
    6.  <%  
    7.      User user = new User(2015,"呵呵",10000D);  
    8.      request.setAttribute("USER",user);  
    9.  %>  
    10.  编号:${USER.id}<br/>  
    11.  姓名:${USER.name}<br/><!--自动调用getter方法-->  
    12.  薪水:${USER.sal}<br/>  
    13.  <hr/>  
    14.  <%  
    15.      List<StringnameList = new ArrayList<String>();  
    16.      nameList.add("A");  
    17.      nameList.add("B");  
    18.      nameList.add("C");  
    19.      session.setAttribute("NAMELIST",nameList);      
    20.  %>  
    21.  第二个元素是:${NAMELIST[1]}<br/>  
    22.  <hr/>  
    23.  <%  
    24.      Map<String,Integermap = new LinkedHashMap<String,Integer>();  
    25.      map.put("jack",10000);  
    26.      map.put("marry",12000);  
    27.      map.put("sisi",14000);  
    28.      application.setAttribute("MAP",map);      
    29.  %>  
    30.  SISI的工资是:${MAP['sisi']}<br/>  
    31.  <hr/>  
    32.  <%  
    33.      String[] strArray = {"北京","上海","广州","深圳"};  
    34.      pageContext.setAttribute("STRARRAY",strArray);  
    35.  %>  
    36.  你目前所在的城市是:${STRARRAY[2]}<br/>      
    37.  <hr/>  
    38.  姓名:${NAMEE}<br/>  



        
        
    EL表达式中的运算符:

    [html] view plain copy
     
    1. <%@ page language="java" pageEncoding="UTF-8"%>  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    3. <html>  
    4.   <body>  
    5.       
    6.     10+3=${10+3}<br/>  
    7.     10-3=${10-3}<br/>  
    8.     10*3=${10*3}<br/>  
    9.     10/3=${10/3}<br/>  
    10.     10%3=${10%3}<br/>  
    11.     <hr/>  
    12.     true && false = ${true && false}<br/>  
    13.     true || false = ${true || false}<br/>  
    14.     ! false = ${! false}<br/>  
    15.     <hr/>  
    16.     10>3=${10>3}<br/>  
    17.     10!=3=${10 ne 3}<br/>  
    18.     10==3=${10 eq 3}<br/>  
    19.       
    20.   </body>  
    21. </html>  





    EL表达式中的三木运算符:

    [html] view plain copy
     
    1. <%@ page language="java" pageEncoding="UTF-8"%>  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    3. <html>  
    4.   <body>  
    5.     <%  
    6.           
    7.         pageContext.setAttribute("city","深圳");  
    8.     %>  
    9.     城市:  
    10.     <select name="city">  
    11.         <option>选择城市</option>  
    12.         <option ${city=='北京'?'selected':''}>北京</option>  
    13.         <option ${city=='上海'?'selected':''}>上海</option>  
    14.         <option ${city=='深圳'?'selected':''}>深圳</option>  
    15.         <option ${city=='广州'?'selected':''}>广州</option>  
    16.     </select>              
    17.   </body>  
    18. </html>  



    [objc] view plain copy
     
    1. <%@ page language="java" pageEncoding="UTF-8"%>  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    3. <html>  
    4.   <body>  
    5.     当前web应用的根目录名:${pageContext.request.contextPath}<br/>  
    6.     <a href="${pageContext.request.contextPath}/el/03_el.jsp">点点</a><br/>  
    7.     <%  
    8.         session.setAttribute("NAME","哈哈");  
    9.     %>      
    10.     姓名:${sessionScope.NAME}<br/>  
    11.     参数值:${param.name}<br/>  
    12.     第三个爱好是:${paramValues.like[2]}<br/>  
    13.     请求头1:${header.host}<br/>  
    14.     请求头2:${headerValues["Accept-Encoding"][0]}<br/>  
    15.     cookie的名:${cookie.PASS.name}<br/>  
    16.     cookie的值:${cookie.PASS.value}<br/>  
    17.     <hr/>  
    18.     web初始化参数之driver为:${initParam.driver}<br/>  
    19.     web初始化参数之url为:${initParam.url}<br/>  
    20.       
    21.   </body>  
    22. </html>  

    JSP-JSTL标签库----函数fn

        1,导入相关的jstl包

        2,要在使用jstl的页面中用taglib指令引入相关包

    [html] view plain copy
     
    1. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  



           fn:toLowerCase("str")       字符串变成小写

           fn:toUpperCase("str")       字符串变成大写

           fn:trim("str")                       去掉字符串两端空白

           fn:split("String","regex")     切割字符串

           fn:join("array","#")              用#把array中每个元素连接

           fn:indexOf("str","s")           返回第二个参数在第一个参数首次出现的位置    

           fn:contains("s1","s2")         返回第二个参数是否包含在第一个参数

           fn:startsWith("s1","s2")      第一个参数是否以第二个参数开头        

           fn:endsWith("s1","s2")       第一个参数是否以第二个参数结尾    

           fn:replace("s1","s2","s3")   把s1中的所有s2用s3替换

           fn:substring("s1",a,b)         把s1中的第a个字符到b-1个字符截取出来

           fn:substringAfter()              ${fn:substringAfter("www@163@com","@")}

           fn:substringBefore()           ${fn:substringBefore("www@163@com","@")}

    JSP-JSTL标签库---核心core

        <c:out>标签 -----把内容输出到浏览器

    [html] view plain copy
     
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    4. <html>  
    5.   <head>  
    6.    <%  
    7.        pageContext.setAttribute("script", "<script>alert('哈哈');</script>");  
    8.     %>  
    9.   </head>  
    10.    
    11.   <body>  
    12.   <!-- 
    13.       escapeXml="false" 表示不转义js代码 
    14.    -->  
    15.      <c:out value="${script} }" escapeXml="false"/>  
    16.   </body>  
    17. </html>  




      <c:set>标签 ---- 把数据绑定到域中

    [html] view plain copy
     
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2. <%@ page import="itcast.util.User" %>  
    3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    5. <html>  
    6.   <head>  
    7.     <title>My JSP '02_c_set.jsp' starting page</title>  
    8.     <meta http-equiv="pragma" content="no-cache">  
    9.     <meta http-equiv="cache-control" content="no-cache">  
    10.     <meta http-equiv="expires" content="0">      
    11.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    12.     <meta http-equiv="description" content="This is my page">  
    13.   
    14.   </head>  
    15.    
    16.   <body>  
    17.       <!--  
    18.           class User{  
    19.               private String id;  
    20.               private String name;  
    21.               public void setId(String id){  
    22.                   this.id = id;  
    23.               }  
    24.               public void setName(String name){  
    25.                   this.name = name;  
    26.               }  
    27.               public String getId(){  
    28.                   return this.id;  
    29.               }  
    30.               public String getName(){  
    31.                   return this.name;  
    32.               }  
    33.           }  
    34.        -->  
    35.     <%  
    36.      User user = new User();  
    37.      pageContext.setAttribute("USER", user);  
    38.     %>  
    39.     <c:set target="${pageScope.USER}" property="id" value="2015"/>  
    40.     <c:set target="${pageScope.USER}" property="name" value="笨笨"/>  
    41.       
    42.     编号:${pageScope.USER.id}<br/>  
    43.     姓名:${pageScope.USER.name}  
    44.       
    45.   </body>  
    46. </html>  







    <c:remove>标签

            <c:remove var="NAME" scope="page"/>  移除pageContext域中的名为NAME的数据




    <c:catch>标签

        <c:catch var="myError">   

               <%

                     int i = 10/0;

               %>

        </c:catch>

        原因为:${myError.message}<br/>






    <c:if>标签

        <c:if test="判断条件">
            
        </c:if>


    <c:choose>和<c:when><c:otherwise>标签


        
        <c:choose>
              <c:when test="">
                
              </c:when>
              <c:when test="">
                
              </c:when>
              <c:when test="">
                
              </c:when>
              <c:otherwise>
                
              </c:otherwise>
        </c:choose>    




    <c:forEach var items/>标签

    [html] view plain copy
     
    1. <%@ page language="java" pageEncoding="UTF-8"%>  
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    3. <%@ page import="java.util.*" %>  
    4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    5. <html>  
    6.   <body>  
    7.       
    8.     <%  
    9.         List<StringnameList = new ArrayList<String>();  
    10.         nameList.add("小德子");  
    11.         nameList.add("小格子");  
    12.         nameList.add("小桌子");  
    13.         nameList.add("小羊子");  
    14.         nameList.add("小凳子");  
    15.         pageContext.setAttribute("NAMELIST",nameList);      
    16.     %>          
    17.     <table border="2" align="center">          
    18.         <tr>  
    19.             <th>索引</th>  
    20.             <th>编号</th>  
    21.             <th>姓名</th>  
    22.             <th>是第一个元素吗</th>  
    23.             <th>是最后个元素吗</th>  
    24.         </tr>          
    25.         <c:forEach var="xxx" items="${NAMELIST}" varStatus="stat" begin="0" end="2">  
    26.             <tr>  
    27.                 <td>  
    28.                     ${stat.index}  
    29.                 </td>  
    30.                 <td>  
    31.                     ${stat.count}  
    32.                 </td>  
    33.                 <td>  
    34.                     ${xxx}  
    35.                 </td>  
    36.                 <td>  
    37.                     ${stat.first}  
    38.                 </td>  
    39.                 <td>  
    40.                     ${stat.last}  
    41.                 </td>  
    42.             </tr>  
    43.         </c:forEach>  
    44.     </table>                  
    45.   </body>  
    46. </html>  

    <c:url>和<c:param>标签

        <!-- /表示当前web应用的根目录 -->
          <c:url var="downURL" value="/DownloadServlet">
              <!-- c:param负责编码 -->
              <c:param name="filename" value="三国123abc"/>
          </c:url>
        <a href="${downURL}" style="text-decoration:none">
            下载三图[GET]
        </a>


    <c:redirect>标签

               <c:redirect url="/core/07_c_forEach.jsp"/>


    <jsp:forward>标签

               <jsp:forward page="/core/07_c_forEach.jsp"/>    
        

  • 相关阅读:
    Gitlab的安装汉化及问题解决
    Python-Day15 JavaScript/DOM
    Python-Day12 Python mysql and ORM
    Python-Day11 RabbitMQ/redis
    Python-Day9 Paramiko模块/进程/线程/RabbitMQ队列
    Python-Day7 面向对象进阶/异常处理/Socket
    使用CryptoJS解决微信小程序用户信息解密
    How to: Configure an Azure SQL Database firewall using the Azure Portal
    iOS 开发: 自定义相册, 保存多张图片到自定义相册中
    解决iOS8.0以上系统下无法通过代码创建被删除过的同名相册 ( iOS 8 Photos framework: Create a albums with iOS8 )
  • 原文地址:https://www.cnblogs.com/nextgg/p/7673889.html
Copyright © 2020-2023  润新知