分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

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

发布时间:2023-09-06 02:17责任编辑:白小东关键词:暂无标签

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-2711.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.jar6.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函数也可以解决 )

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved