JSP的使用以及EL和JSTL的使用
2021-02-04 05:16
标签:for att lse 有一个 res city 数据 其他 conf 1.1.1. 为什么有JSP规范 Servlet技术产生以后,在使用过程中存在一个很大的问题,即为了表现页面的效果而需要输出大量的HTML标签,这些标签在Servlet中表现为一个个的字符串常量。这种输出页面的方式不仅仅增加了开发时对页面的控制难度,也不利于后期的维护。为了能够将Servlet中用于表现的功能分离出来,提高视图的开发效率,推出了JSP这种技术,主要用于将Servlet中负责显示的语句抽取出来。 1.1.2. 什么是JSP JSP(Java Server Page)是Sun公司制定的一种服务器端动态页面技术的组件规范,以“.jsp”为后缀的文件中既包含HTML静态标记用于表现页面,也包含特殊的代码,用于生成动态内容。 JSP作为简化Servlet开发的一种技术,实质上最终依然要转变为Servlet才可能运行,只不过这个转变过程由Servlet容器来完成。所以遵循JSP的编写规范才能使得JSP转变为需要的Servlet。 九大内置对象: 作用域 pageContext(页面上下文对象) page(页面执行期) request(请求对象) 一次请求 response(响应对象) 一次响应 session(会话对象) 会话期 application(应用程序对象) 程序运行状态 out(输出对象) page config(配置对象) page exception(异常) page page(页面对象) page 四大域对象(保存数据,实现传递) pageContext request session application jsp中常用的三种指令( ) page指令 include指令 taglib指令 jsp中导包( ) EL表达式的使用 方式一:${对象名.属性名} 例:${user.name} 执行的过程为:从pageContext、request、session、application中依次查找绑定名为“user”的对象,找到后调用“getName”方法,将返回值输出。 假定在session中绑定了一个对象,如下: User obj = new User(1,“胡萝卜”); session.setAttribute(“user”,obj); 那么${user.name}等价于下面代码:
User u = (User)session.getAttribute(“user”); out.print(u.getName(); %> 方式二:${对象名[“属性名”]} 假定在Servlet中有如下代码: User obj = new User(1,”胡萝卜”); session.setAttribute(“user”,obj); session.setAttribute(“pName”,”id”); 在JSP中编写如下代码会输出“1”: ${sessionScope.user[“id“]} 在JSP中编写如下代码也会输出“1”: ${sessionScope.user[sessionScope.pName]} 如果pName在绑定时不指定id,而是name,那么这个表达式就会输出“胡萝卜“,所以这种写法可以认为是表达式中有一个变量。sessionScope.pName 等价于 session.getAttribute(“pName”)。 那么对于interests这个数组属性的值可以使用如下表达式访问: ${user.interests[0]} 指定对象的查找范围 在书写表达式时,如果没有指定搜索范围,那么系统会依次调用pageContext、request、session、application的getAttribute()方法。这样不限定查找范围的代码不利于排错, 所以这种取值的操作可以限定对象的查找范围。如: ${sessionScope.user.name} 一旦指定了对象所在的范围,那么只会在范围内查找绑定对象,不会在找不到的时候再去其他区域中查找了。 sessionScope的位置还可以填写pageScope、requestScope、applicationScope。 使用EL表达式进行计算 使用EL表达式可以单独进行运算得出结果并直接输出,如下代码所示,EL进行算术运算,逻辑运算,关系运算,及empty运算。空运算主要用于判断字符串, 集合是否为空,是空或为null及找不到值时都会输出true。 ${sessionScope.sampleValue + 12} ${(sessionScope.sampleValue + 12)/3} ${(sessionScope.sampleValue + 12) /3==4} ${(sessionScope.sampleValue + 12) /3>=5} 使用EL表达式获取请求参数值 ${param.username} 与 request.getParameter(“username”); ${paramValues.city} 与request.getParameterValues("city"); JSTL的使用 如何使用 将标签库对应的jar包拷贝到WEB-INF/lib目录下,以便于系统可以加载所需要的类。使用taglib指令在页面上引入标签的命名空间和前缀,帮助系统定位对应的类。 例: if标签的使用
User user = new User(); user.setName("胡萝卜"); user.setGender("f"); request.setAttribute("user",user); %> 姓名:${user.name} 性别: choose标签的使用 使用choose标签简化多个if标签的判断。代码如下所示:
User user = new User(); user.setName("胡萝卜"); user.setGender("x"); request.setAttribute("user",user); %> 性别: foreach标签的使用 使用forEach标签完成对集合的遍历输出。 其中items属性为要遍历的集合,var属性为每次取出来的一个对象,varStatus指定当前迭代的状态。代码如下: JSP的使用以及EL和JSTL的使用 标签:for att lse 有一个 res city 数据 其他 conf 原文地址:https://www.cnblogs.com/xiaoshazi/p/13149578.html
// 显示22
// 显示7.3
// 显示 false
// 显示 true
序号
姓名
年龄
${s.count}
${u.name}
${u.age}