jstlEl表达式配置及使用
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)
注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
???? 是目前较为常用的环境
????
标签库的使用
* 采用taglib指令引入
<%@ taglib prefix="c"? uri="http://java.sun.com/jsp/jstl/core"%>?
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
自定义函数库:
1、定义类和方法(方法必须是public static)
2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号+函数名 调用即可
Use.java
- package com.bjsxt.struts;public class User {private String username1;private int age;private Group group;public String getUsername() {return username1;}public void setUsername(String username) {this.username1 = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}}
Group.java
- package com.bjsxt.struts;public class Group {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
JstlElAction.java
- package com.bjsxt.struts;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;/** * 测试EL表达式 * @author Administrator * */public class JstlElAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//普通字符串request.setAttribute("hello", "hello world");//结构Group group = new Group();group.setName("尚学堂");User user = new User();user.setUsername("张三");user.setAge(18);user.setGroup(group);request.setAttribute("user", user);//mapMap mapValue = new HashMap();mapValue.put("key1", "value1");mapValue.put("key2", "value2");request.setAttribute("mapvalue", mapValue);//字符串数组String[] strArray = new String[]{"a", "b", "c"};request.setAttribute("strarray", strArray);User[] users = new User[10];for (int i=0; i<10; i++) {User u = new User();u.setUsername("U_" + i);users[i] = u;}request.setAttribute("users", users);List userList = new ArrayList();for (int i=0; i<10; i++) {User uu = new User();uu.setUsername("UU_" + i);userList.add(uu);}request.setAttribute("userlist", userList);//emptyrequest.setAttribute("value1", null);request.setAttribute("value2", "");request.setAttribute("value3", new ArrayList());request.setAttribute("value4", "123456");return mapping.findForward("success");}}
jstl_el.jsp
- <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!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=GB18030"><title>测试EL表达式</title></head><body><h1>测试EL表达式</h1><br><hr><li>普通字符串</li><br>hello(jsp脚本):<%=request.getAttribute("hello") %><br>hello(el表达式,el表达式的使用方法$和{}):${hello }<br>hello(el表达式,el的隐含对象pageScope,requestScope,sessionScope,applicationScope,<br> 如果未指定scope,它的搜索顺序为pageScope~applicationScope):${requestScope.hello }<br>hello(el表达式,scope=session):${sessionScope.hello }<br><p><li>结构,采用.进行导航,也称存取器</li><br>姓名:${user.username }<br>年龄:${user.age }<br>所属组:${user.group.name }<br><p><li>输出map,采用.进行导航,也称存取器</li><br>mapvalue.key1:${mapvalue.key1 }<br>mapvalue.key2:${mapvalue.key2 }<br><p><li>输出数组,采用[]和下标</li><br>strarray[2]:${strarray[1] }<br><p><li>输出对象数组,采用[]和下标</li><br>userarray[3].username:${users[2].username }<br><p><li>输出list,采用[]和下标</li><br>userlist[5].username:${userlist[4].username }<br><p><li>el表达式对运算符的支持</li><br>1+2=${1+2 }<br>10/5=${10/5 }<br>10 div 5=${10 div 5 }<br>10%3=${10 % 3 }<br>10 mod 3=${10 mod 3 }<br><!-- ==/eq !=/ne </lt >/gt <=/le >=/ge &&/and ||/or !/not //div %/mod --> <li>测试empty</li><br> value1:${empty value1 }<br> value2:${empty value2 }<br> value3:${empty value3 }<br> value4:${empty value4 }<br> value4:${!empty value4 }<br></body></html>
JstlCoreAction.java
- package com.bjsxt.struts;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;/** * 测试jstl核心库 * @author Administrator * */public class JstlCoreAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//普通属性request.setAttribute("hello", "Hello World");//测试条件控制标签request.setAttribute("v1", 1);request.setAttribute("v2", 2);request.setAttribute("v3", new ArrayList());request.setAttribute("v4", "test");//html文本request.setAttribute("bj", "<font color='red'>北京欢迎您</font>");//测试c:forEachGroup group = new Group();group.setName("尚学堂");List userList = new ArrayList();for (int i=0; i<10; i++) {User user = new User();user.setUsername("user_" + i);user.setAge(18+i);user.setGroup(group);userList.add(user);}request.setAttribute("userlist", userList);//测试循环输出mapMap map = new HashMap();map.put("k1", "v1");map.put("k2", "v2");request.setAttribute("mapvalue", map);//测试c:forTokensrequest.setAttribute("strTokens", "1,2,3,4,5,6");return mapping.findForward("success");}}
jstl_core.jsp
- <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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=GB18030"><title>测试jstl核心库</title></head><body><h1>测试jstl核心库</h1><hr><li>测试c:out</li><br>hello(default):<c:out value="${hello}"/><br>hello(el表达式):${hello }<br>hello(default="123"):<c:out value="${abc}" default="123"/><br>hello(default="123"):<c:out value="${