zoukankan      html  css  js  c++  java
  • jsp笔记

    1、java脚本

    <%=...%>: java表达式,用于输出一条表达式(或变量)的结果

    <%--...--%>: 注释,不会发送到客户端

    <%!...%>: 声明,用来创建类的成员变量和成员方法

    <%...%>: java代码片段,用于输出java语句

    九个内置对象

    • out: jsp的输出流,用来向客户端响应(等同于response.getWriter())
    • page: 当前jsp对象! 它的引用类型是Object,即真身中有如下代码:Object page = this;
    • config: ServletConfig对象!
    • pageContext: 一个顶9个!域对象
    • request: HttpServletEequest对象
    • response: HttpServletResponse对象
    • exception: Throwable对象
    • session: HttpSession对象
    • application: ServletContext对象
    • pageContext
      • Servlet中有三大域,而JSP中有四大域,它就是最后一个域对象!  
        • ServletContext:整个应用程序    
        • session:整个会话(一个会话中只有一个用户)    
        • request:一个请求链!    
      • pageContext:一个jsp页面!(通常在使用el的时候使用此对象)这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据!  
      • 域对象  
        • 代理其他域:pageContext.setAttribute("xxx", "XXX", PageContext.SESSION_SCOPE);    
        • 全域查找:pageContext.findAttribute("xxx");从小到大,依赖查找!    
        • 获取其他8个内置对象:    

    2、jsp三指令

    • page: 比较复杂:<%@page language="java" info="xxx"...%>
      • pageEncoding和contentType:(不设置,默认编码为iso)  
        • pageEncoding:设置响应头,(直接指定编码,默认MIME类型)等同与response.setContentType("text/html;charset=utf-8");    
        • contentType:添加一个响应头:Content-Type!(可以指定其他文本编码)等同与response.setContentType("text/html;charset=utf-8");    
      • import:导包!可以出现多次  
      • errorPage和isErrorPage  
        • errorPage:当前页面如果抛出异常,那么要转发到哪一个页面,由errorPage来指定    
        • isErrorPage:它指定当前页面是否为处理错误的页面!当该属性为true时,这个页面会设置状态码为500!而且这个页面可以使用9大内置对象中的exception!    
      • autoFlush和buffer  
        • autoFlush:指定jsp的输出流缓冲区满时,是否自动刷新!默认为true,如果为false,那么在缓冲区满时抛出异常!    
        • buffer:指定缓冲区大小,默认为8kb,通常不需要修改!    
      • isELIgnored:是否忽略el表达式,默认值为false,不忽略,即支持!  
    • include:静态包含
      • 将另一个jsp文件搬过来  
      • <%@include%> 它是在jsp编译成java文件时完成的!他们共同生成一个java(就是一个servlet)文件,然后再生成一个class!  
      • 作用:把页面分解了,使用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立jsp,而我们只需要处理变化的页面。  
    • taglib:
      • 两个属性:  
        • prefix:指定标签库在本页面中的前缀!由我们自己来起名称!    
        • uri: 指定标签库的位置!    
        • <%@taglib prefix="s" uri="/struts-tags"%> 前缀的用法<s:text>    

    3、JSP动作标签
    这些jsp的动作标签,与html提供的标签有本质的区别。
    动作标签是由tomcat(服务器)来解释执行!它与java代码一样,都是在服务器端执行的!
    html由浏览器来执行!

    • <jsp:forward>:转发!它与RequestDispatcher的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用!
    • <jsp:include>:包含:它与RequestDispatcher的include方法是一样的,一个是在Servlet中使用,一个是在jsp中使用!
    • <jsp:param>:它用来作为forward和include的子标签!用来给转发或包含的页面传递参数!

    4、EL表达式(在页面中使用)
    EL替代的是<%= ... %>,也就是说,EL只能做输出!
    EL表达式读取数据

    • EL表达式只能读取四大域的对象(pageContext,request,sission,application)
    • 若对象为空,不显示也不报错
    • ${xxx},全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null。
    • ${pageScope.xxx}、${requestScope.xxx}、${sessionScope.xxx}、${applicationScope.xxx},指定域获取属性!
    • ${xxx.name}、${xxx['name'} 调用xxx对象的getname()方法
    • ${xxx[0]} 访问数组或List(不能访问Set,因为Set无序,没有索引)
    • ${xxx.student.name} 访问Map,student为键,访问Map中的student的name
    • ${empty name}: name为未定义变量、null、空字符串、没有元素的数组后List,返回true

    EL可以输出的东西都在11个内置对象中

    • 11个内置对象,其中10个是Map! pageContext 不是map,它就是 PageContext 类型
    • pageScope
    • requestScope
    • sessionScope
    • applicationScope
    • param: 对应参数,它是一个Map,其中key参数名,value是参数值,适用于单值的参数。底层调用request.getParameter();
    • paramValues: 对应参数,它是一个Map,其中key参数名,value是多个参数值,适用于多值的参数。返回的是数组。底层调用request.getParameterValues();
    • initParam: 获取<context-param>内的参数!底层调用servletContext.getInitParameter();
    • header: 对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值请求头
    • headerValues: 对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值请求头
    • cookie
    • pageContext: 它是PageContext类型!项目名: ${pageContext.request.contextPath}

    EL函数库(由JSTL提供的)

    • 导入函数库:<%@ tablib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    • String toUpperCase(String input):把参数转换成大写
    • String toLowerCase(String input):把参数转换成小写
    • int indexOf(String input, String substring):从大串,输出小串的位置!
    • boolean contains(String input, String substring):查看大串中是否包含小串
    • boolean containsIgnoreCase(String input, String substring):忽略大小写的,是否包含
    • boolean startsWith(String input, String substring):是否以小串为前缀
    • boolean endsWith(String input, String substring):是否以小串为后缀
    • String substring(String input, int beginIndex, int endIndex):截取子串(前闭后开)
    • String substringAfter(String input, String substring):获取大串中,小串所在位置后面的字符串
    • substringBefore(String input, String substring):获取大串中,小串所在位置前面的字符串
    • String escapeXml(String input):把input中“<”、">"、"&"、"'"、""",进行转义
    • String trim(String input):去除前后空格
    • String replace(String input, String substringBefore, String substringAfter):替换
    • String[] split(String input, String delimiters):分割字符串,得到字符串数组
    • int length(Object obj):可以获取字符串、数组、各种集合的长度!
    • String join(String array[], String separator):联合字符串数组!

    自定义函数库

    • 写一个java类,类中可以定义0~N个方法,但必须是static,而且有返回值的!
    • 在WEB-INF目录下创建一个tld文件
      • 文件约束可以参考 jsp2-example-taglib.tld 文件  
      • 也可以参考 jsp2.tld笔记.txt  
    • 在jsp页面中导入函数库
    • <%@ taglib uri="<uri>" prefix="<tlib-version>" %>
    • 在jsp页面中使用自定义的函数:${<short-name>:<name>() }

    5、自定义标签
    自定义标签:

    • 自定义java类,继承SimpleTag接口,或继承其实现类SimpleTagSupport,重写doTag()方法,需要在tld文件中声明
      • SimpleTagSupport  
        • public void doTag(): 子类重写该方法,实现对标签的操作    
        • protected JspContext getJspContext(): 获取PageContext对象    
        • protected JspFragment getJspBody(): 获取标签体    
          • JspFragment:      
            • public abstract void invoke(java.io.Writer out): 输出到指定输出流(如果给的是null,则默认PageContext.getOut()流)        
            • 可以将其输出到StringWriter流中,然后调用StringWriter.toString()方法得到字符串        
      • 标签的属性反映到标签处理器中就是一个变量,为变量添加setxxx()方法即可得到属性值    

    核心标签库(由JSTL提供的)

    • 导入标签库: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    • <c:set>: 存储变量
      • 属性:  
        • var: 变量名    
        • property:要修改的变量名    
        • value: 变量值    
        • target:修改的属性所属的对象    
        • scope: 指定存放的域(默认pageContext)    
    • <c:out>:输出
      • 属性:  
        • value:要输出的内容    
        • default:输出的默认值    
        • escapeXml:是否忽略XML特殊字符(默认true)    
    • <c:remove>:删除变量
      • 属性:  
        • var: 变量名    
        • scope: 变量所属的域(默认所有域)    
        • scope: 指定域(默认删除所有域)    
    • <c:url>:将URL格式化为一个字符串,然后存储在一个变量中
      • 属性:  
        • value:指定路径(以'/'开头会自动添加项目名)    
        • var:变量名(指定后就不会输出到页面,而是保存到变量中)    
      • 子标签  
        • <c:param>:给url添加参数    
          • 属性:      
            • name:参数名        
            • value:参数值        
    • <c:catch>:标签体中若发生异常,则将错误信息保存到标签属性var中
    • <c:if>:判断表达式的值,如果表达式的值为真则执行
      • 属性:  
        • test:条件    
        • var:用于存储条件结果的变量    
        • scope:var属性的作用域    
    • <c:choose>:与if()else if()else语句的功能一样(无属性)
      • 子标签:  
        • <c:when>:与else if语句一样(属性:test 条件)    
        • <c:otherwise>:与else语句一样(无属性)    
    • <c:forEach>:迭代一个集合、数组中的对象。
      • 在标签体中对var对象进行操作,var要用el表达式取出  
      • 属性:  
        • items:要被循环的信息    
        • begin:开始的元素    
        • end:最后一个元素    
        • step:每一次迭代的步长    
        • var:代表当前条目的变量名称    
        • varStatus:代表循环状态的变量名称    
          • 属性:      
            • count: 当前已遍历元素个数        
            • index: 当前元素下标        
            • first: 是否为第一个元素        
            • last:是否为最后一个元素        
            • current: Object,表示循环的变量        
    • <c:forEach var="i" begin="1" end="10"></c:forEach>其等同于for(int i = 1; i <= 10; i++);
    • <c:forEach items="${strs }" var="str"></c:forEach>等同于for(Object str : strs){}

    格式化标签库:(由JSTL提供的)

    • 导入标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    • <fmt:formatDate>:使用不同的方式格式化日期
      • 属性:  
        • value: 要显示的日期    
        • pattern: 自定义格式模式(yyy-MMM-dd)    
        • var: 存储格式化日期的变量名(默认显示在页面)    
        • scope: 存储变量的域    
    • <fmt:parseDate>:将字符串解析成日期
      • 属性:  
        • value:要显示的日期    
        • pattern:自定义格式模式    
        • var: 存储格式化日期的变量名(默认显示在页面)    
        • scope: 存储变量的域    
    • <fmt:formatNumber>:用于格式化数字、百分比、货币
      • 属性:  
        • value:要显示的数字    
        • pattern: 自定义格式    
        • groupingUsed:是否对数字分组(TRUE或FALSE)    
        • maxIntegerDigits:整型数最大的位数    
        • minIntegerDigits:整型数最小的位数    
        • maxFractionDigits:小数点后最大的位数    
        • minFractionDigits:小数点后最小的位数    
        • var: 存储格式化数字的变量    
        • scope: var属性的作用域    
    • <fmt:parseNumber>: 用来解析数字、百分数、货币
      • 属性:  
        • value:要解析的数字    
        • type: 类型(NUMBER(默认)、CURRENCY、PERCENT)    
        • integerOnly: 是否只解析整型数(true)或浮点数(false)    

    JSTL标签库 函数引入
    以下任选一种即可:
    (1)将 TomcatwebappsexamplesWEB-INFlib目录下的jar包复制到项目的WEB-INFlib目录下
    (2)下载jakarta-taglibs-standard-1.1.2.zip 包并解压,
    将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:
    standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下
    (3)下载tomcat的Taglibs,将/lib下的文其拷贝到/WEB-INF/lib/下





























  • 相关阅读:
    打包下载,byte[] ,
    .net mvc 异常处理 IExceptionFilter,保存请求参数
    c# webapi websocket 服务端消息发送
    mailkit用163发邮件
    使用OPCAutomation实现对OPC数据的访问,“对 COM 组件的调用返回了错误 HRESULT E_FAIL”错误
    .net core 获取客户端ip
    C#读取OPC server
    Makedown语言常用语法
    ops:Rsync和Scp区别
    ops:Linux /bin,/sbin,/usr/sbin, /usr/local/bin区别
  • 原文地址:https://www.cnblogs.com/hujingnb/p/10235990.html
Copyright © 2011-2022 走看看