EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例

EL表达式

1.获取域对象中的值
2.EL表达式支持运算 ${ num1 + num2 }

EL获取常用的WEB对象

1.pageScope             获取page域对象的值
2.requestScope          获取request域对象的值
3.sessionScope          获取session域对象的值
4.applicationScope      获取application域对象的值

* 例子:向某个域中来存入值  request.setAttribute("xx",yy)
* 取值:${xx}  正规写法:${requestScope.xx}

5.param         获取表单提交过来的参数。(相当于 request.getParameter())
6.paramValues   获取表单提交过来的参数。(相当于 Map<String,String[]> map = request.getParameterMap())
7.header        获取请求头信息
8.headerValues  获取请求头信息
9.initParam     获取全局的初始化参数

10.cookie       获取cookie对象的引用,可以使用cookie对象的引用获取cookie的名称和cookie的值。
    * 前提条件:是在Servlet程序中创建一个Cookie对象Cookie cookie = new Cookie("last","2015-01-27");
    * ${cookie.last }   -- 获取cookie的名称为last的对象
    * ${cookie.last.name} -- 获取cookie对象的名称就是last
    * ${cookie.last.value} -- 获取cookie对象的值就是2015-01-27
11.pageContext
    * 获取项目的虚拟路径(项目名称)
    * ${ pageContext.request.contextPath }  获取项目的名称

JSTL的标签库简介

1.JSP的内置的标签。
2.JSP的标签运行在服务器中。和HTML标签分开。
3.JSP标签的出现为了简化编程。目的:去除掉<% %>方式。其实JSP的标签也是有Java代码来编写的。

4.JSTL的版本
    * JSTL的1.0版本(不用)    不支持EL表达式
    * JSTL的1.1和1.2的版本(差别不大) 支持EL表达式

5.下载jar包。导入到工程中
    * 两个jar包    jstl.jar    standard.jar

6.JSTL使用标签的快速入门步骤
    * 引入jstl的标签库 使用taglib指令
        * <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    * 直接在JSP页面使用jstl的标签
        * 使用必须先前缀 <c:标签名 属性> 输出内容(直接在里面HTML的标签) </c:标签名>

7.JSTL提供的核心标签
    * 核心标签库 (core)  --- c(重点)
    * fn.tld            --- EL函数库

8.注意注意注意注意注意注意:EL表达式和JSTL标签库,记住一点,操作都是域对象中的属性和属性的值。

out标签(重点)

1.语法:<c:out value="" />
2.作用:输出域对象的值或者常量
3.属性
    * value         -- 输出的内容
    * default       -- 默认值(如果输出没找到值,输出默认值)
    * escapeXml     -- 设置默认转义。默认是true,转义。设置成false,不进行转义

set标签(重点)

1.作用:向域中存入值
2.语法:<c:set  >
3.属性:
    * var           -- 属性名称
    * value         -- 属性值
    * scope         -- 域范围
    * target        -- 目标(目标必须是JavaBean对象或者Map集合)
    * property      -- 属性(JavaBean属性或者Map属性)
    * 使用target和property修改JavaBean或者Map集合属性的值

remove标签

1.作用:删除域对象中的属性  (request.removeAttribute("xx"))
2.语法:<c:remove >
3.属性:
    * var           -- 要删除属性名称  <c:remove var="${xx}" scope="page">
    * scope         -- 域的范围

catch标签

1.作用:捕获异常的
2.语法:<c:catch >
3.属性:
    * var           -- 如果发生了异常,把异常的信息保存到var的变量中

if标签(重点)

1.if标签就可以判断。只有c:if标签,没有c:else标签
2.作用:判断用
3.属性
    * test          -- 判断条件返回true或者false
    * var           -- test返回的结果保存到var声明的变量中
    * scope         -- 域的范围

choose标签(重点)

1.作用:判断数据
2.语法(注意):
    <c:choose>
        <c:when>
            如果满足条件,输出内容
        </c:when>
        <c:when>
            如果满足条件,输出内容
        </c:when>
        <c:otherwise>
            上面都不满足,最后输出
        </c:otherwise>
    </c:choose>

forEach标签(重点)

1.作用:迭代数据。request域中,list集合。使用foreach标签循环遍历list结合。
2.语法:
    * <c:foreach>
3.属性
    * 例子:先想增强for循环  for(String str : 集合){  }
    * var       -- 循环遍历的数据保存到var声明变量中(相当于 str)
    * items     -- 要遍历的集合,注意:从域对象中取值。(相当于集合)

    * 例子:模拟的是普通for循环    for(int i=0;i<10;i++){ }
    * begin     -- 从哪开始
    * end       -- 到哪结束
    * step      -- 步长
    * varStatus -- 循环遍历的过程,产生信息。
        * index     -- 下标值
        * count     -- 计数器
        * first     -- 判断是否有第一个
        * last      -- 判断是否有最后一个

4.迭代数组、list集合、set集合、Map集合(entry.key)、List<User>
5.从1循环到10 从1加到100  遍历10到100的偶数,每到第3个数,显示红色

url标签(重点

1.作用:有提交的地址相关。(超链接 form表单 img的src属性)
2.好处:假如你使用form的action的编写地址
    <form action="${pageContext.request.contextPath}/xxx">
    如果使用<c:url的标签>  <form action="<c:url value=‘/xxx‘ >">
3.特点:如果不写项目名,默认给你加上项目名称。
4.好处:使用<c:url>,默认给你拼接jsessionid session的追踪(在请求的地址默认给你jsessionid=XCSDFSDFSD)

import标签

1.作用:引入一个文件,并且可以传参数。
2.属性
    * url           -- 引入文件的地址
    * var           -- 把文件保存到变量中
    * context       -- 虚拟路径

redirect标签重定向

1.属性
    * url           -- 重定向的路径
    * context       -- 虚拟路径

param参数标签

1.属性
    * name          -- 参数名称
    * value         -- 参数值

forTokens切分字符串

1.它也是一个循环
2.属性
    * items         -- 要切分的集合
    * delims        -- 切分的规则

EL函数和自定义EL函数

1.EL函数作用:这些方法都是来操作字符串的。
2.在JSP的页面上引入EL函数库。
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
3.怎么编写EL函数
    ${ fn:xxx() }
4.操作域对象中的值,不用加双引号。(*****)

自定义EL函数

1.开发EL函数的步骤
    * 编写一个Java类,提供一个方法,方法必须静态方法。方法必须有返回值。
        package cn.itcast.el;
        public class ElDemo {
            /**
             * say hello方法
             * @param str
             * @return
             */
            public static String sayHello(String str){
                return "hello "+str;
            }
        }

    * 在WEB-INF目录下,编写.tld结尾的文件(xml文件),进行配置。
        * 在WEB-INF的目录下,不要在lib或者classes目录下
        * 创建.tld的文件(XML的文件,XML的约束的)
            xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
        * 编写配置文件
             <!-- 配置自定义EL函数 -->
             <function>
                <!-- 配置方法的名称 -->
                <name>sayHi</name>
                <!-- 配置方法所在的类 -->
                <function-class>cn.itcast.el.ElDemo</function-class>
                <!-- 配置方法的签名(把类中的方法描述清除) -->
                <function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
             </function>

    * 在JSP的页面上引入自己编写的EL函数库
        * <%@ taglib prefix="myfn" uri="http://www.itcast.cn/0108/myfn" %>

2.作用:如果你编写一个EL的函数,JSP页面上处理不了的逻辑,你把它扔到后台使用java代码进行处理。对外提供就是一个EL函数。

自定义标签

1.去除掉JSP页面上的Java代码。
2.所以给大家提供一套规范(一套接口或者抽象类)
3.提供了一个接口tag,就可以编写自定义标签。sun公司提供了接口simpleTag。
4.大家现在来开发自定义标签,实现simpleTag接口。重写一些方法。(如果提供了实现类,编写一个类,继承实现类)

5.自定义标签的开发步骤
    * 编写一个类,继承simpleTagSupport类,重写3个方法。
    * 在tld的文件中,编写配置文件
    * 在JSP的页面引入自定义的标签库

6.方法被服务器默认(有顺序)调用。
    void setJspContext(JspContext pc)  --> void setJspBody(JspFragment jspBody) -->void doTag()
    把PageContext对象传入进来              把标签主体对象传入进来                     执行标签

自定义标签(没有标签主体)

1.编写类
public class JstlDemo1 extends SimpleTagSupport{
    private PageContext pc;
    private JspFragment body;
    /**
     * 标签执行了,默认调用该方法
     */
    public void doTag() throws JspException, IOException {
        // 向页面输出一句hello
        // 获取out对象
        pc.getOut().write("hello");
    }
    /**
     * Tomcat服务器默认先调用该方法
     */
    public void setJspContext(JspContext pc) {
        this.pc = (PageContext) pc;
    }
    /**
     * 服务器默认调用该方法,把JspFragment(代表标签主体对象)传入进来
     */
    public void setJspBody(JspFragment jspBody) {
        this.body = jspBody;
    }
}
2.编写配置文件
 <!-- 配置自定义标签 -->
 <tag>
    <!-- 配置标签名称 -->
    <name>print</name>
    <!-- 标签使用的类 -->
    <tag-class>cn.itcast.jstl.JstlDemo1</tag-class>
    <!-- 配置标签主体 -->
    <body-content>empty</body-content>
 </tag>

3.在JSP文件直接使用
    <%@ taglib prefix="myc" uri="http://www.itcast.cn/0108/myc" %>
    <myc:print/>

自定义标签(带有标签主体)

1.编写代码
public class JstlDemo2 extends SimpleTagSupport{
    private PageContext pc;
    // 代表标签主体
    private JspFragment jspBody;
    /**
     * 最后调用该方法,目的:输出标签主体
     */
    public void doTag() throws JspException, IOException {
        // 直接调用JspFragment的invoke(Writer out) ,标签主体向外输出
        jspBody.invoke(pc.getOut());
    }
    public void setJspContext(JspContext pc) {
        this.pc = (PageContext) pc;
    }
    public void setJspBody(JspFragment jspBody) {
        this.jspBody = jspBody;
    }
}

2.编写配置文件
 <!-- 配置自定义标签 -->
 <tag>
    <!-- 配置标签名称 -->
    <name>out</name>
    <!-- 标签使用的类 -->
    <tag-class>cn.itcast.jstl.JstlDemo2</tag-class>
    <!-- 配置标签主体 -->
    <body-content>scriptless</body-content>
 </tag>

3.在JSP使用
    <h4>带有标签主体内容的标签</h4>
    <myc:out>
        美美
    </myc:out>

4.注意(标签主体的配置)
    * empty:不能有标签体内容。
    * scriptless:标签体内容不能是Java代码段,但可以是EL、JSTL等;

带有属性的自定义标签

1.编写类
public class JstlDemo3 extends SimpleTagSupport{
    private PageContext pc;
    // 代表标签主体
    private JspFragment jspBody;
    // test和JSP页面上的if test属性名称必须是相同的
    // 你必须给我提供test属性的set方法
    private boolean test;
    public void setTest(boolean test) {
        this.test = test;
    }

    /**
     * 最后调用该方法,目的:输出标签主体,由于属性决定
     */
    public void doTag() throws JspException, IOException {
        // 直接调用JspFragment的invoke(Writer out) ,标签主体向外输出
        if(test){
            jspBody.invoke(pc.getOut());
        }
    }

    public void setJspContext(JspContext pc) {
        this.pc = (PageContext) pc;
    }

    public void setJspBody(JspFragment jspBody) {
        this.jspBody = jspBody;
    }
}

2.配置(包含配置属性)
 <!-- 配置自定义标签 -->
 <tag>
    <!-- 配置标签名称 -->
    <name>if</name>
    <!-- 标签使用的类 -->
    <tag-class>cn.itcast.jstl.JstlDemo3</tag-class>
    <!-- 配置标签主体 -->
    <body-content>scriptless</body-content>
    <!-- 配置属性 -->
    <attribute>
        <!-- 配置数据名称 -->
        <name>test</name>
        <!-- 属性是否是必须出现的 -->
        <required>true</required>
        <!--  支持EL表达式 -->
        <rtexprvalue>true</rtexprvalue>
        <!-- 属性的类型 -->
        <type>boolean</type>
    </attribute>
 </tag>

3.使用标签
<myc:if test="${ requestScope.num eq 10 }">
    小凤
</myc:if>

注册登陆的功能

 

1.创建一个数据库(使用XML来代替) DOM4J的解析
2.编写表单的(form)   前台表单校验  onsubmit事件
3.编写Servlet程序 -- 接收数据(request和response对象) -- 封装数据(BeanUtils工具类)
4.保存到XML数据库中。

5.验证码程序(验证码生成,前台页面使用验证码) -- 验证码只能在后台校验(session来校验)

6.登陆功能(记住用户名 cookie的技术 (记住用户名cookie默认不支持中文的,记住中文用户名怎么办呢?))  -- 登陆成功了(保存到session中)

7.HTML的全局函数(全局函数可以解决  可以写java代码也可以解决  自定义EL函数也可以解决 )

原文地址:https://www.cnblogs.com/chyxOne/p/9764655.html

时间: 2024-08-07 16:38:49

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例的相关文章

EL表达式 JSTL标签

1.声明EL表达式 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> 2.常用的EL表达式 1)从四个域中通过key找到简单数据并显示出来.表达式代码: ${name}      <!-- 类比于<%=pageContext.findAttribute("name") %> --> 四个域的寻找顺序是 page,request,sess

EL表达式+JSTL

一. EL表达式 1.1 什么是EL EL是JSP表达式语言,全称是Expression Language,提供了JSP中简化表达式的方法. 1.2 如何学习EL 没有EL的时候 怎么写 用EL表达式的时候 怎么写(谁被简化了.如何简化的) 1.3 如何使用EL 类似于 JQ 的选择器 $(选择器) 例如: $("#test") 在jsp中通过 ${} 例如 : ${shuju1} 代表 获取 servlet中共享的数据 (在servlet中请求共享了一个list 这个list的key

Struts标签库详解,非常好的Struts标签详解

Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML 标签:         用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签:         在访问JavaBeans 及其属性,以及定义一个新的bean 时使用 Logic 标签:          管理条件产生的输出和对象集产生的循环 Template 标签:   随着Tiles框架包的出现,此标记已开始减少使用 Nested 标签: 

9.EL表达式 和 JSTL核心标签库

EL表达式 1./*获取数据*/ (某个web域中的对象,访问javabean的属性.访问List集合.访问Map集合.访问数组) 1 <html> 2 <head> 3 <title>el表达式</title> 4 </head> 5 6 <body> 7 8 9 <---------------------el表达式---(找不到数据的话,返回"",不是null)---------------------

strut1.x及JSTL的标签库、EL表达式

struts标签库 国际化配置 配置国际化 1.国际化配置 在struts自带的app中的struts-config.xml中的<message-resources parameter="MessageResources"/>加入到项目中的配置文件中默认为struts-config.xml. 2.国际化文件导入 MessageResources.properties(位于 \struts-1.3.10\src\apps\blank\src\main\java\Message

Javaweb学习笔记6—EL表达式与JSTL及自定义标签

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.EL表达式 1,EL简介 Expression Lan

在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>. 其次,将EL表达式作为fmt标签属性的value值.再增加pattern参数,为日期制定需要格式化的格式,如yyyy-MM-dd.例如: <fmt:formatDate value="${object.dateproperty}&quo

Java学习——JSTL标签与EL表达式之间的微妙关系

原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相关概念 EL基本格式 EL语法组成-标识符 PS使用EL的时候默认会以一定顺序pageContextrequestsessionapplication搜索四个作用域将最先找到的变量值显示出来 开启和关闭EL表达式 二JSTL标签库 相关概念 JSTL标签库分类 JSTL的优点 为什么要用JSTL 使

JavaWeb(七)Cookie,EL表达式,标准标签库

Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件. Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源.客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内