EL和JSTL
来源:互联网 发布:淘宝刷单违规 编辑:程序博客网 时间:2024/06/07 14:34
EL和JSTL
1.作用
2.案例
3.JSTL导包
- 使用maven搜索jstl
- 结果中选择1.2[jar]
4.JSTL原理
案例代码如下:
两个实体类:
package entity;import java.io.Serializable;import java.util.Arrays;public class Student implements Serializable {private static final long serialVersionUID = 1L;public Student() {}private String name;private Integer age;private String sex;private String[] interests;private Course course;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String[] getInterests() {return interests;}public void setInterests(String[] interests) {this.interests = interests;}public Course getCourse() {return course;}public void setCourse(Course course) {this.course = course;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", interests=" + Arrays.toString(interests)+ ", course=" + course + "]";}}
package entity;import java.io.Serializable;public class Course implements Serializable {private static final long serialVersionUID = 1L;public Course() {}//私有属性叫对象属性private Integer courseId;private String name;private Integer days;/** * 1.和get/set对应的属性叫Bean属性 * 2.通过get/set反应出来的属性 * 3.去掉get,并将首字母小写的单词是Bean属性 * Bean属性一般和对象的属性一致(也可以不一致),本案例为了演示Bean属性,修改为不一致 */public Integer getId() {return courseId;}public void setId(Integer courseId) {this.courseId = courseId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getDays() {return days;}public void setDays(Integer days) {this.days = days;}@Overridepublic String toString() {return "Course [courseId=" + courseId + ", name=" + name + ", days=" + days + "]";}}servlet实现类:
package web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Course;import entity.Student;public class FindStudentServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//1.获取参数(本案例没有参数--略)//2.处理业务(查)//此处模仿数据库Student stu = new Student();stu.setName("张三");stu.setAge(23);stu.setSex("M");stu.setInterests(new String[]{"琴","棋","书","画"});Course c = new Course();c.setId(1);c.setName("JAVA");c.setDays(80);stu.setCourse(c);//到此Student实例初始化完成//3.转发或重定向(转发)req.setAttribute("stu", stu);//当前:/jsp1/findStudent//目标:/jsp1/find_student.jspreq.getRequestDispatcher("find_student.jsp").forward(req, res);}}
jsp文件:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%><%-- 使用EL表达式时,不用import导入其他类的包,因为EL的底层采用了类反射机制 --%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!doctype html><html> <head> <meta charset="utf-8" /> <title>EL和JSTL</title> <style type="text/css"> table{ border:2px soild #CCC; width:50%; text-align:center; border-collapse:collapse; } table td{ border:2px solid 3CCC; } </style> </head> <body> <h1>EL</h1> <%-- 1.利用EL获取Bean属性(2种方式) --%> <%-- ${stu.name }等价于 request.getAttribute("stu").getName()--%> <p>姓名:${stu.name }</p> <p>年龄:${stu["age"] }</p> <%-- 等价于 request.getAttribute("stu").getCourse().getId() 相当于是get/set方法,不是属性名 --%> <p>课程:${stu.course.id }</p> <p>兴趣:${stu.interests[2] }</p><%-- "琴","棋","书","画" --%> <%-- EL的取值范围: (1).默认从如下4个对象中依次取值: page,request,session application,这四个是默认的取值范围 (2).也可以指定取值范围 requestScope.stu.name 从request中取值 sessionScope.stu.name 从session中取值 (3).设置默认取值的目的是为了开发者不用经常写范围,简化EL表达式 --%> <p>性别:${sessionScope.stu.sex }</p><%--此处没有在session中存值,所以输出"" --%> <p>性别:${requestScope.stu.sex }</p><%--此处在request中存有值,所以输出"相应的值" --%> <%-- 2.EL支持运算 --%> <p>年龄+5:${stu.age+5 }</p> <p>20-30之间:${stu.age>=20 && stu.age<=30 }</p> <p>1+1:${1+1 }</p> <p>"100"+"200":${"100"+"200" }</p> <%-- 加号只能进行加法运算,不能连接 --%> <p>empty用于判断一个字符串是否为空</p> <p>stu判空:${empty stu }</p> <p>null判空:${empty null }</p> <p>""判空:${empty "" }</p> <!-- 3.EL表达式获取请求参数的值 --> <%-- 等价于request.getParamter("user") ${paramValues.city} request.getParamterValues("city")用于多选 --%> <p>获取请求参数:${param.user }</p> <h1>JSTL</h1> <%-- if --%> <p> <c:if test="${stu.sex == 'M' }">男</c:if> <c:if test="${stu.sex == 'F' }">女</c:if> </p> <%-- choose --%> <p> <c:choose> <c:when test="${stu.sex == 'M' }">男</c:when> <c:otherwise>女</c:otherwise> </c:choose> </p> <%-- forEach --%> <%-- item:声明遍历的数据 var:给每次循环所获得的数据命名 --%> <p> <c:forEach items="${stu.interests }" var="in" varStatus="s"> <p>${s.count } ${in }</p> </c:forEach> </p> <%-- URL标签 使用可选的查询参数来创造一个URL--%> <%-- 模拟sossion中的数据,在jstl.jsp中读取--%> <% session.setAttribute("uname", "Lucy"); %> URL标签:<hr/> <a href="<c:url value='jstl.jsp' />" >访问jstl.jsp</a> <br><hr/> <%-- set标签用于保存数据 remove标签用于删除数据--%> <c:set var="num" scope="session" value="${1+5 }"></c:set> set之后num的值为:${sessionScope.num } <br><hr/> <c:remove var="num" scope="session"/> remove之后num的值为:${sessionScope.num } <%-- catch主要用来处理产生错误的异常状况,并且将错误信息储存起来 var:用来储存错误信息的变量 --%> <br><hr/>catch标记: <c:catch var="msg"> <% Integer.parseInt("ytg"); %> </c:catch> ${msg } <%-- import 将另一个页面嵌入到当前页面中 类似于include指令--%> <%-- import 将浏览器重定向至一个新的URL--%> <%-- <c:redirect url="https://www.baidu.com/"/> --%> <br><hr> <%-- <c:out>标签用来显示一个表达式的结果,与<%= %>作用相似 --%> <c:out value="${5+4 }"></c:out> <%-- out标签类似于${5+4 } --%> <br><hr> </body></html>
浏览器的请求路径为:http://localhost:8080/jsp1/findStudent?user=abc
输出结果为:
EL
姓名:张三
年龄:23
课程:1
兴趣:书
性别:
性别:M
年龄+5:28
20-30之间:true
1+1:2
"100"+"200":300
empty用于判断一个字符串是否为空
stu判空:false
null判空:true
""判空:true
获取请求参数:abc
JSTL
男
男
1 琴
2 棋
3 书
4 画
URL标签:访问jstl.jsp
set之后num的值为:6
remove之后num的值为:
catch标记: java.lang.NumberFormatException: For input string: "ytg"
9
0 0
- el表达式和jstl
- EL和JSTL表达式
- JSTL和EL介绍
- JSTL和EL介绍
- EL和JSTL表达式
- EL和JSTL
- EL和JSTL
- JSTL和EL基础
- EL和JSTL
- EL和JSTL简介
- JSTL和EL表达式
- el 和jstl
- jsp-el和jstl
- EL和JSTL表达式
- jstl和el表达式
- JSTL和EL表达式
- JSTL和EL基础
- el和jstl表达式
- git服务器搭建
- 一些Java自己弄明白的数组
- linux多进程编程
- SVN创建本地服务器和客户端使用
- centos7下安装cuda8.0
- EL和JSTL
- javascript静态页面传值的三种方法分享
- C/C++学习(9)dynamic_cast<>强制转换
- php综合web开发(1)
- 实验六
- 1.3.ARM裸机第三部分-开发板、原理图和数据手册
- 【C语言】俄罗斯方块的源代码
- 序列化和克隆
- C语言中可变参数函数实现原理