JSP(一)
2015-06-29 21:03
706 查看
开宗明义:JSP本质上就是一个Servlet
意思是:把这个servlet标记中的所有配置应用到由这个JSP页面生成的Servlet中。
但是JSP还有一个页面作用域:pageContext。用其设置的属性,只在本页内可见。
表达式中第一个命名变量可以是一个隐式对象,也可以是一个属性
如:${person.name}
比如:
除此之外,中括号里面还可以使用嵌套表达式。
如果希望在request对象上调用一个获取方法来得到自己想要的东西怎么办?
答:可以使用pageContext对象。
那么requestScope有什么用处呢?
答:如果要区别不同作用域的对象,就能使用它。
以上介绍了EL的特性,关于EL还有很多特性,用到的时候,再查也可以。但是EL不是万能的,比如EL无法实现逻辑控制,如果用到了条件判断,还是得在JSP中插入Java代码。
但JSTL可以做到。请看下一篇博客。
scriplet
JSP 变量和函数的声明
局部变量
<% int a = 3;>
全局变量和函数
<%! int a = 3;> //这里所谓的全局是在service方法之外的声明。 <%! int function();>
在JSP中输出表达式的值或者变量的值
<%= a%> /*注意前面的小于号和百分号和等号必须紧挨, 否则会发生错误,另外不能加分号。因为转换成Servlet之后, 标记符里面的内容只是out.println()里面的参数而已.*/
JSP中的隐式对象
JSP中的所有隐式对象都会对应到Servlet/JSP API中的某个东西。以下是对应关系:API 隐式对象 JspWriter ----------------------------- out HttpServletRequest-----------------------request HttpServletResponse----------------------response HttpSession------------------------------session ServletContext---------------------------application ServletConfig----------------------------config Throwable--------------------------------exception PageContext------------------------------pageContext Object-----------------------------------page
JSP的初始化
JSP的初始化参数
与常规Servlet配置初始化参数基本上是一样的,唯一的区别就是必须在servlet标记中增加一个元素意思是:把这个servlet标记中的所有配置应用到由这个JSP页面生成的Servlet中。
覆盖jspInit()
在jspInit()方法中可以调用getServletConfig和getServletContext方法。JSP中的属性
关于应用、请求、会话三个作用域来设置属性,与Servlet类似,只不过要按照上面的映射,把名字改一改而已。比如:getServletContext.setAttribute("xxx",object)换成 application.setAttribute("xxx",object)
但是JSP还有一个页面作用域:pageContext。用其设置的属性,只在本页内可见。
JSP的指令
page指令
<%@ page import="xxx.xxx" session="false"> //用来引入包,或者设置本页内的属性。注意引入不同的包时候,要用逗号隔开 //后面的session表示页面内部是否有隐式session对象,true为有,false为无 //contentType定义响应的MIME内容 //pageEncoding定义JSP字符编码
taglib指令
<%@ taglib tagdir="path" prefix="xxx">//定义标记库
include指令
<%@ include file="xxxx"> //定义可重用的JSP代码
EL
EL的使用形式:${xxxx.xxxx}表达式中第一个命名变量可以是一个隐式对象,也可以是一个属性
EL隐式对象
pageScope requestScope sessionScope applicationScope // 上面四个都是作用域属性的MAP param parmaValues //上面两个是请求参数的Map header headerValues //上面两个是请求首部的Map cookie initParam //这个是上下文(应用)初始化参数的Map pageContext //唯一一个不是Map的隐式对象。
使用点号操作符访问性质和映射值
点号左边的变量要么是一个Map,要么是一个bean;点号右边是一个Map键或者一个bean属性。如:${person.name}
使用方括号访问
方括号与点号相比的优势在于,除了点号上面的适用范围之外,左边还可以是一个List或者数组。比如:
String[] list = {"aaa","bbb","cccc"}; ${list[0]} 输出 aaa ${list["0"]} 还是输出aaa 注意:在数组或者list中的String索引会强制转换为int,如果无法转换,将报错。
除此之外,中括号里面还可以使用嵌套表达式。
作用域隐式对象
要注意:如果requestScope只是请求作用域属性的一个Map,但不是request对象本身。如果希望在request对象上调用一个获取方法来得到自己想要的东西怎么办?
答:可以使用pageContext对象。
pageContext.request.method
那么requestScope有什么用处呢?
答:如果要区别不同作用域的对象,就能使用它。
以上介绍了EL的特性,关于EL还有很多特性,用到的时候,再查也可以。但是EL不是万能的,比如EL无法实现逻辑控制,如果用到了条件判断,还是得在JSP中插入Java代码。
但JSTL可以做到。请看下一篇博客。
相关文章推荐
- JavaScript 数据类型
- JavaScript 数据类型
- js的时分插件(无日期)
- jsp通过勾选复选框实现批量删除
- 【js】判断对象类型
- D3.js加载csv和json数据
- JavaScript修改CSS伪元素:after和:before的样式
- jackson jsonUtil
- JavaScript 8皇后问题
- 使用echarts图表库绘制地图
- js 中按格式yyyy-MM-dd hh:mm:ss 格式化date
- jstl标准标签库的使用(部分)
- 获得当前jsp内嵌的iframe的元素
- jsp页面上传图片防止中文乱码问题
- js函数传字符串参数的问题
- 从setTimeout谈JavaScript运行机制
- 用js得到当前页面的url
- JavaScript事件代理,减少开销提高效率
- JavaScript事件代理,减少开销提高效率
- Gson的fromJson()方法