JSP+EL表达式学习
来源:互联网 发布:urllib json 编辑:程序博客网 时间:2024/06/05 11:19
一、JSP
jsp是可以在传统 HTML页面插入java代码
1.JSP原理
(1)当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;
(2)如果是第一次请求页面,或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间有些长;
(3)JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;
(4)容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)
2.JSP组成
(1)静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.
(2)动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。
二、JSP的基本语法
1.JSP脚本表达式:
语法<%=表达式%>
例如:<%=new Date().toLocaleString()%>
作用:在网页上输出数据
2.JSP脚本片段:
语法<% 代码1;代码2 ....%>
对应Servlet 出现在JspServlet()中
作用:在JSP中输出java代码
3.JSP声明
作用:定义一些类成员(变量 )
语法 <%! 定义的变量 、方法 %>
4、JSP注释
语法<%--内容--%>
与html注释不同他不会把注释的内容翻译到Servlet中
三、JSP的指令
指令是为了致使服务器如何处理JSP页面的内容
1.指令
page taglib include
语法<%@指令名称 指令属性="值" ....%>
2.指令作用
1.page指令 定义JSP页面的属性
属性 import:导入JSP页面中java脚本
import:导入JSP页面中java脚本需要用到的类或包。
<%@page import=”java.util.Date,java.util.UUID”%>
或者
<%@page import=”java.util.Date”%>
<%@page import=”java.util.UUID”%>
注意:服务器会自动导入
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
session:指示是否产生HttpSession对象。默认值是true。
buffer:JSP中的HTML的输出都是用的JspWriter的字符输出流。该属性指定输出流的缓存大小。默认8Kb
errorPage:指定当JSP出现异常时转向(请求转发)的页面地址。该地址如果以”/”开头,“/”代表着当前应用;如果不是以”/”开头,表示的是相对路径。
另外一种方式:配置全局错误提示页面。
修改web.xml
isErrorPage:指示是否产生exception内置对象。默认值是false
contentType:和响应消息头Content-Type作用一样。HttpServletResponse.setContentType(); text/html;charset=UTF-8
pageEncoding:指示服务器在翻译JSP时采用的编码
特点:还有contentType的作用
isELIgnored:是否忽略EL表达式。默认是false(不忽略)
2.taglib指令:
作用:引入外部的标签库(JSTL)
属性:
uri:外部标签的名称空间
prefix:前缀
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.include指令:
作用:包含。静态包含
属性:
file:被包含的页面的地址。”/”表示当前应用。不以”/”开头,表示相对路径
四、JSP的动作元素
动作元素就是JSP内置标签
jsp:include:实现动态包含
page:指定被包含的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
jsp:forward:实现请求转发
page:指定转发的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
jsp:param:包含或转发时传递请求参数
五、JSP的九大隐式对象
1.JSP对应Servlet的service的局部变量
2.JSP的就九大隐式对象
(1) HttpSession类的session对象 如果Page指令的session属性是false就没有这个对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
会话状态维持是Web应用开发者必须面对的问题。
(2) HttpServletRequest类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。
(3) HttpServletResponse类的respone对象
作用:代表响应对象,主要用于向客户端发送数据
(4) JspWriter类的out对象
作用:主要用于向客户端输出数据;
Out的基类是JspWriter
(5) ServletContex类的application对象
作用:主要用于保存用户信息,代码片段的运行环境;
它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.
(6) PageContext类的pageContext对象
作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。
(7) ServletConfig类的config对象
作用:代码片段配置对象,表示Servlet的配置。
(8) Object类的page(相当于this)对象
作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。
(9)Exception 如果page指令的isErrorpage属性是false就没有这对象
作用:处理JSP文件执行时发生的错误和异常
3.pageContext隐式对象作用
是一个页面范围的域对象,能操作其他三个域对象的数据(ServletRequest ServletSession ServletContext)
方法
void setAttribute(String key,Object value)
void removeAttribute(String key)
Object getAttribute(String key)
pageContext页面域(作用域)范围。pageContext.setAttribute("p", "ppp");//只能本页中能取出来
void setAttribute(String key,Object value,int scope)
void removeAttribute(String key,int scope)
Object getAttribute(String key,int scope)
int Scope:是一个常量
PageContext.PAGE_SCOPE表示页面范围
PageContext.REQUEST_SCOPE表示请求范围
PageContext.SESSION_SCOPE表示回话范围
PageContext.APPLICATION SCOPE表示应用范围
注意:
<%
pageContext.setAttribute(“g”,”gg”,PageContext.APPLICATION_SCOPE);
//application.setAttribute(“g”,”gg”); 功能和上面一样
%>
Object findAttribute(String key):依次从页面、请求、会话、应用范围查找指定名称的数据。找到为止。
PageContext可以获取其他八个JSP隐式对象
ServletRequest request = pageContext.getRequest()
提供了包含和转发的简单方式
pageContext.forward("/demo.jsp");
pageContext.include("/demo.jsp");
六:四大域对象
PageContext:存放的数据只能在当页中取出
ServletRequest:存放的数据在一次会话请求中取出
ServletSession:存放的数据只能在一次回话中取出
ServletContext:存放的数据在当前应用中取出
七:EL表达式
1.EL主要作用:向界面输出数据 替换JSP中的表达式<%= %>
基本语法形式
${11}
和<%=11%>效果一样
要先把数据存放到四大域 然后再获取
El表达式能从四大域对象中获取数据
1.获取数据
中括号运算符。[]就是调用对象的getter方法
${p.name}
${p['name']}
${p["name"]}
三个效果一样
数学或逻辑运算
empty运算符 判断一个对象是否为null 字符串是否为"" 集合是否有元素
11个隐式对象
JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。这与同名的JSP隐式对象实际上就是同一个对象。余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到request作用域的username属性可以通过EL表达式${ requestScope.username}来直接访问。
有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
另外还有一个初始化参数访问隐式对象:initParm。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。
EL11个隐式对象
jsp是可以在传统 HTML页面插入java代码
1.JSP原理
(1)当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;
(2)如果是第一次请求页面,或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间有些长;
(3)JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;
(4)容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)
2.JSP组成
(1)静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.
(2)动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。
二、JSP的基本语法
1.JSP脚本表达式:
语法<%=表达式%>
例如:<%=new Date().toLocaleString()%>
作用:在网页上输出数据
2.JSP脚本片段:
语法<% 代码1;代码2 ....%>
对应Servlet 出现在JspServlet()中
作用:在JSP中输出java代码
3.JSP声明
作用:定义一些类成员(变量 )
语法 <%! 定义的变量 、方法 %>
4、JSP注释
语法<%--内容--%>
与html注释不同他不会把注释的内容翻译到Servlet中
三、JSP的指令
指令是为了致使服务器如何处理JSP页面的内容
1.指令
page taglib include
语法<%@指令名称 指令属性="值" ....%>
2.指令作用
1.page指令 定义JSP页面的属性
属性 import:导入JSP页面中java脚本
import:导入JSP页面中java脚本需要用到的类或包。
<%@page import=”java.util.Date,java.util.UUID”%>
或者
<%@page import=”java.util.Date”%>
<%@page import=”java.util.UUID”%>
注意:服务器会自动导入
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
session:指示是否产生HttpSession对象。默认值是true。
buffer:JSP中的HTML的输出都是用的JspWriter的字符输出流。该属性指定输出流的缓存大小。默认8Kb
errorPage:指定当JSP出现异常时转向(请求转发)的页面地址。该地址如果以”/”开头,“/”代表着当前应用;如果不是以”/”开头,表示的是相对路径。
另外一种方式:配置全局错误提示页面。
修改web.xml
isErrorPage:指示是否产生exception内置对象。默认值是false
contentType:和响应消息头Content-Type作用一样。HttpServletResponse.setContentType(); text/html;charset=UTF-8
pageEncoding:指示服务器在翻译JSP时采用的编码
特点:还有contentType的作用
isELIgnored:是否忽略EL表达式。默认是false(不忽略)
2.taglib指令:
作用:引入外部的标签库(JSTL)
属性:
uri:外部标签的名称空间
prefix:前缀
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.include指令:
作用:包含。静态包含
属性:
file:被包含的页面的地址。”/”表示当前应用。不以”/”开头,表示相对路径
四、JSP的动作元素
动作元素就是JSP内置标签
jsp:include:实现动态包含
page:指定被包含的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
jsp:forward:实现请求转发
page:指定转发的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
jsp:param:包含或转发时传递请求参数
五、JSP的九大隐式对象
1.JSP对应Servlet的service的局部变量
2.JSP的就九大隐式对象
(1) HttpSession类的session对象 如果Page指令的session属性是false就没有这个对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
会话状态维持是Web应用开发者必须面对的问题。
(2) HttpServletRequest类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。
(3) HttpServletResponse类的respone对象
作用:代表响应对象,主要用于向客户端发送数据
(4) JspWriter类的out对象
作用:主要用于向客户端输出数据;
Out的基类是JspWriter
(5) ServletContex类的application对象
作用:主要用于保存用户信息,代码片段的运行环境;
它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.
(6) PageContext类的pageContext对象
作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。
(7) ServletConfig类的config对象
作用:代码片段配置对象,表示Servlet的配置。
(8) Object类的page(相当于this)对象
作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。
(9)Exception 如果page指令的isErrorpage属性是false就没有这对象
作用:处理JSP文件执行时发生的错误和异常
3.pageContext隐式对象作用
是一个页面范围的域对象,能操作其他三个域对象的数据(ServletRequest ServletSession ServletContext)
方法
void setAttribute(String key,Object value)
void removeAttribute(String key)
Object getAttribute(String key)
pageContext页面域(作用域)范围。pageContext.setAttribute("p", "ppp");//只能本页中能取出来
void setAttribute(String key,Object value,int scope)
void removeAttribute(String key,int scope)
Object getAttribute(String key,int scope)
int Scope:是一个常量
PageContext.PAGE_SCOPE表示页面范围
PageContext.REQUEST_SCOPE表示请求范围
PageContext.SESSION_SCOPE表示回话范围
PageContext.APPLICATION SCOPE表示应用范围
注意:
<%
pageContext.setAttribute(“g”,”gg”,PageContext.APPLICATION_SCOPE);
//application.setAttribute(“g”,”gg”); 功能和上面一样
%>
Object findAttribute(String key):依次从页面、请求、会话、应用范围查找指定名称的数据。找到为止。
PageContext可以获取其他八个JSP隐式对象
ServletRequest request = pageContext.getRequest()
提供了包含和转发的简单方式
pageContext.forward("/demo.jsp");
pageContext.include("/demo.jsp");
六:四大域对象
PageContext:存放的数据只能在当页中取出
ServletRequest:存放的数据在一次会话请求中取出
ServletSession:存放的数据只能在一次回话中取出
ServletContext:存放的数据在当前应用中取出
七:EL表达式
1.EL主要作用:向界面输出数据 替换JSP中的表达式<%= %>
基本语法形式
${11}
和<%=11%>效果一样
要先把数据存放到四大域 然后再获取
El表达式能从四大域对象中获取数据
1.获取数据
运算符
点运算符。就是调用对象的getter方法 例如 一个方式是getName 只需要p.name "."就是get中括号运算符。[]就是调用对象的getter方法
${p.name}
${p['name']}
${p["name"]}
三个效果一样
数学或逻辑运算
empty运算符 判断一个对象是否为null 字符串是否为"" 集合是否有元素
11个隐式对象
JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。这与同名的JSP隐式对象实际上就是同一个对象。余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到request作用域的username属性可以通过EL表达式${ requestScope.username}来直接访问。
有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
另外还有一个初始化参数访问隐式对象:initParm。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。
EL11个隐式对象
类别
标识符
表示
JSP
pageContext
PageContext 实例对应于当前页面的处理
作用域
pageScope
表示请求范围数据
requestScope
表示请求范围数据
sessionScope
表示会话范围数据
applicationScope
表示应用范围数据
请求参数
param
单个请求参数
paramValues
重名请求参数
请求头
header
单个请求消息头
headerValues
重名请求消息头
Cookie
cookie
代表是一个Map。key是cookie对象的name,value是cookie对象
初始化参数
initParam
按名称存储 Web 应用程序上下文初始化参数的 Map 类
0 0
- jsp el表达式学习
- JSP+EL表达式学习
- JSP学习---EL表达式
- JSP学习笔记---el表达式
- Jsp学习总结-----EL表达式
- JSP EL表达式 学习 应用
- jsp中 el表达式的学习文章
- JSP——EL表达式学习笔记
- JSP学习笔记(三):JSP配置与EL表达式
- JSP学习笔记(二)---JSP标签和EL表达式
- JSP表达式语言(EL)
- el jsp表达式
- jsp不支持EL表达式
- el jsp表达式
- jsp中的el表达式
- JSP EL 表达式
- el jsp表达式
- [JSP] EL表达式
- Windows Phone 有背景的按钮
- Java Swing图形化用户界面编程
- 欢迎使用CSDN-markdown编辑器
- android socket编程
- http://blog.chinaunix.net/uid-21501855-id-4490453.html
- JSP+EL表达式学习
- 设计模式(创建型)之抽象工厂模式(Abstract Factory Pattern)
- 适配器模式
- Android之DOM解析XML
- 单链表的一些基本操作
- Windows Phone 有内容的按钮
- 分形图形 --- 龙形曲线
- RTS需求设计
- 用Python和Pygame写游戏-从入门到精通(13)