JSP入门实战下
第一部分简单讲解:jsp语法的规范,以及三大编译指令,七个动作指令和九大内置对象,生命周期讲解等。这章主要讲解el表达式,核心标签库。
全部代码下载:链接
1.核心标签库(JSTL:c)讲解:
1.1简要介绍:
JSTL全名JspServer Pages Standdard Tag Library(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许使用标签开发Jsp页面.JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
JSTL所提供的标签库主要分为五大类:
1.2JSTL库安装:
现在就可以通过在头部包含标签使用JSTL了
1.3核心标签库的使用:
核心标签是最常用的JSTL标签。现在基本上我们也之使用功能核心标签库,此去只介绍核心标签,对于其他的标签用法类似。2.EL表达式语言:
E L(Expression Language) 目的:为了使JSP写起来更加简单。 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。
EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。
EL使得访问存储在JavaBean中的数据变得非常简单,EL可以访问内置对象,以及放置在对象中的属性;
EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!
2.1EL语法:${exper}
不注明域的范围时,从四个域中获取:顺序为pageScoep / requestScope / sessionScope / applicationScope
${name}<%--从指定域中获取name变量的值--%>
指定域获取:
${pageScope.name} <%--等价于getAttribute()方法;--%>
${student.name} 等价于 (点相对于调用getXX()方法)
{list[0].age } <%-- list[0]等价于 (中括号相对于调用get(参数)方法) ((List)pageContext.findAttribute("list")).get(0)--%>
EL表达式支持大部分Java所提供的算术和逻辑操作符:
演示如下:
2.2EL高级用法自定义函数:
el表达语言的自定义函数 本质是为了调用提供一种方法允许el中调用某类的静态方法:
${rlovep:reverse(student.name)}<%--调用reverse方法使传入的student.name反转--%>
1.在src建立开发处理类,这个类包含若干个静态方法。当然这个步骤可以省掉使用jdk库的类也是可以的
2.使用标签库定义函数:定义函数的方式与定义标签的方式相似。增加function标签就行;
3.使用:增加taglib指令
建立开发处理类: MyFuns.java
在webcontent目录下建立:mytaglib.tld标签库文件,增加function标签
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"version="2.1"><description>A tag library exercising SimpleTag handlers.</description><!-- 标签库的版本 --><tlib-version>1.0</tlib-version><!-- 标签库前缀 --><short-name>rlovep</short-name><!-- tld文件的唯一标记 --><uri>http://rlovep.com</uri><!-- 定义第一个方法 --><function><!-- 定义方法名 --><name>reverse</name><!-- 定义方法的处理类 --><function-class>com.rlovep.elmethod.MyFuns</function-class><!-- 定义函数的实现方法:包括返回值和函数名以及参数 --><function-signature>java.lang.String reverse(java.lang.String)</function-signature></function><!-- 定义第二个方法 --><function><!-- 定义方法名 --><name>count</name><!-- 定义方法的处理类 --><function-class>com.rlovep.elmethod.MyFuns</function-class><!-- 定义函数的实现方法:包括返回值和函数名以及参数 --><function-signature>int count(java.lang.String)</function-signature></function></taglib>增加taglib指令
<%@taglib prefix="rlovep" uri="http://rlovep.com" %>
2.3整体演示如下:
<%@page import="java.util.HashMap,java.util.Map"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.rlovep.entity.Student"%> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!-- 定义标签 --> <%@taglib prefix="rlovep" uri="http://rlovep.com" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>el表达式学习:</title> </head> <body> <%--el的内置对象 --%><%pageContext.setAttribute("name", "peace");pageContext.setAttribute("age", "22", pageContext.APPLICATION_SCOPE);%><%--直接从域中搜索获得属性 --%>El表达式:${name }<hr/><%--等价于 --%>表达式:<%=pageContext.findAttribute("name") %><hr/><%--从指定域中获取属性 --%>EL表达式:${applicationScope.age}<hr/><%--等价于 --%><%=pageContext.getAttribute("age", pageContext.APPLICATION_SCOPE) %><hr/><%--获取请求参数 --%>请求参数${param.pass}<hr/> <%--请求头获取 --%> 请求头${header.Host} <%--还可以获得初始参数:initparam 以及cookie --%> <hr/> <%--el输出对象的属性 ,必须将对象放入域中--%> <%Student student=new Student("peace",22);String a="123";//放入域中pageContext.setAttribute("student", student);//放入list中List<Student> list=new ArrayList<Student>();list.add(new Student("sisi",22));list.add(new Student("nick",20));list.add(new Student("lucy",38));pageContext.setAttribute("list", list);//放入map中Map<String,Student> map=new HashMap<String,Student>();map.put("100",new Student("mark",20));map.put("101",new Student("maxwell",30));map.put("102",new Student("narci",40));//放入域中pageContext.setAttribute("map",map); %> <%--使用el获取对象值 --%> {student.age }<%--${student.name} 等价于 (点相对于调用getXX()方法)<%=((Student)pageContext.findAttribute("student")).getName()%>--%><hr/><%--使用EL获取List对象 --%> {list[0].age }<br/>{list[1].age }<br/> {list[2].age }<%--list[0]等价于 (中括号相对于调用get(参数)方法)((List)pageContext.findAttribute("list")).get(0)--%><hr/><%--使用EL获取Map对象 --%> {map['100'].age }<br/> {map['101'].age }<br/> {map['102'].age }<br/><%--el还可以执行算法表达式 --%> <%--el表达语言的自定义函数 本质是为了调用提供一种方法允许el中调用某类的静态方法: 1.在src建立开发处理类,这个类包含若干个静态方法。当然这个步骤可以省掉使用jdk库的类也是可以的 2.使用标签库定义函数:定义函数的方式与定义标签的方式相似。增加function标签就行; 3.增加taglib指令 --%> 此去表达式调用函数:<br/> peace倒转:${rlovep:reverse(student.name)}<%--调用reverse方法使传入的student.name反转--%> <br/> peace字符个数:${rlovep:count(student.name)} </body> </html>来自一条小鲨鱼wpeace(rlovep.com)
转载于:https://www.cnblogs.com/onepeace/p/5043477.html
总结
- 上一篇: 当你刷新当前Table时,刷新后如何回到
- 下一篇: 青瓷引擎之纯JavaScript打造HT