JSP知识点总结
2012-08-27 14:13
127 查看
本人还是大四学生,我所知道的都总结下来了。如果写的不好请见谅!
Servlet缺点,为什么会出现jsp技术?
因为Servlet当初的设计目的是用来产生网页的程序,所以所有的页面必须在Servlet中进行构造,这样做的效率在当今来说,真的很低下,所以对于Servlet来说,它是很不利于展现的,不过它很适合于对数据的处理,所以很适合于充当控制器来使用。因为Servlet构建页面实在够差,所以后来SUN推出了JSP来一改Servlet引入的尴尬。
jsp = html+java片段+jsp标签+javascript+css
JSP(Java Server Pages):在HTML中嵌入java脚本语言;由引用服务器中的JSP引擎来编译和执行嵌入的java脚本语言命令;然后将生成的整个页面信息返回给客户端。
jsp功能强大是因为可以与javabean结合使用(即jsp作前台,javabean作后台===>Model1)
jsp+javabean的基础上再结合servlet(做控制),就会构成MVC的开发模式,
MVC模式是目前软件公司通用的开发模式。
如何手工部署一个web项目?
WebRoot项目名
|-WEB-INF
|-web.xml 部署文件
|-classes .class
|-lib *.jar
|-jsp
|-js
|-css
|-index.jsp
虚拟路径配置
<Context path="/hello"docBase="D:\webSite"/>
path="/hello" url
docBase="D:\webSite" 项目路径
JSP页面的元素包括:
静态内容:HTML静态文本
(一)指令元素: 以"<%@"开始,以"%>"结束,用于从jsp发送一个信息到容器,如设置文字编码,引入包等
如:
设置MIME类型<%@ pagecontentType="text/html;charset=gbk" %>
ps:MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文 件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定 义的文件名,以及一些媒体文件打开方式。
导入所需要的包<%@page import="java.util.*,java.io.*"%>
包含某个文件 <%@include file="filename" %>
<%@ tagilb url=""prefix="" %> jstlJSP (标准标记库 JSPStandard Tag Library)
(二)脚本元素:在一定程度上可以理解就是java的片段
1、脚本: <% java代码 %> 局部变量
2、表达式: <%=java表达式 %> 输出变量 表达式
3、声明: <%! 变量、方法%> 全局变量
(三)动作元素:
<jsp:include page="filename"/>
<jsp:forward page=""/> ===>request.getRequestDispatcher("xxx").forward(request,response); forward(服务器端跳转) redirect(客户端跳转)
<jsp:flugin >
<jsp:usebean id=""class=""/>class值指明用到的哪个bean,id是bean的一个实例,相当于指定对象名
<jsp:setProperty name=""property="" value="" />name表示某一个对象名,property表示哪个属 性,value是具体的值,相当于调用了name.setProperty(value)这个方法
<jsp:getProperty name=""property="" />相当于调用name.getProprty();
其中scope四大属性范围:
1 page: 当前页面(默认)
2 request 一次请求
3 session 一次会话
4 application web应用程序
用法一:
<jsp:include page=""/>
用法二:
<jsp:include page="">
<jsp:param name=""value=""/>
</jsp:include>
<jsp:include page=""/> 与<%@include file="" %>有何区别?
答:{ ~前者是指令元素、后者是行为元素。<%@ include file=””%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。
~主要有两个方面的不同;
一:执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
二:引入内容的不同:
<%@ include file=”relativeURI”%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书籍. }
注释:
<!- - html中的注释,客户端可以看到源代码 -->
<%- - jsp中的注释,客户端不可以看到源代码 --%>
JSP脚本中使用的注释:
<% //单行注释 %>
<% /*多行注释*/ %>
总结:只用html的注释在客户端是看得到的
JSP执行过程:(翻译-->编译-->执行)
WEB容器处理JSP文件请求需要经过3个阶段:
1、翻译阶段:JSP文件会被WEB容器中的JSP引擎转换成JAVA源码
\Tomcat6.0\work\Catalina\localhost\hello\org\apache\jsp\xxx.java
2、编译阶段:Java源码会被编译成可执行的字节码.class
3、执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理请求后,容器把生成的页面反馈给用户端进行显示
第一次请求之后,WEB容器可以重用已经编译好的字节码文件。就不用再翻译、编译。
注意:如果对JSP文件进行了修改,WEB容器会重新对JSP文件进行翻译和编译。
传值方式:
方式1:
<a href="4.jsp?a=1&b=2">xx.jsp</a>
String s=request.getParameter("a");
String d=request.getParameter("b");
方式2:
<jsp:forward page="xx.jsp">
<jsp:param name="stuName" value="lishiming"/>
</jsp:forward>
方式3:
form表单
JSP的内置对象:
JSP 内置对象是 Web 容器创建的一组对象
JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例
JSP 内置对象的名称是 JSP 的保留字
九大内置对象:
out==============>JspWriter 向客户端输出数据,字节流
pageContext=========>PageContext 代表jsp页面的上下文
request============>HttpServletRequest 接受客户端的请求
response===========>HttpServletResponse 响应
session============>HttpSession 用于保存用户的信息,跟踪用户的行为
application========>ServletContext 多个用户共享该对象,可以做计数器 this.getServletContext().setAttribute(name,value);
--------------------------------------------------------------------------------
config============>ServletConfig 代表jsp对应的servlet的配置,可以得到web.xml中的参数
page=============>Object 代表jsp这个实例本身(使用较少)
exception==========>Throwable 代表运行时的一个异常
out对象用于向客户端输出数据
out对象常用方法:
print():在页面中打印出字符串信息<%out.print("hello world"); %>
out.println()与<%= %> 区别?
发现使用表达式输出(<%=%>)明显要比使用out.println()输出更好。所以在JSP的开发页面中绝 对不能出现任何的out.println()语句。
request对象主要用于处理客户端请求,方法有:
String getParameter(String name) 根据页面表单组件名称获取页面提交数据
String[ ] getParameterValues (String name) 获取一个页面表单组件对应多个值时的用户的请求数据
void setCharacterEncoding (String charset) 指定每个请求的编码 在调用request.getParameter()之前进行设定,可以解决中文乱码问题
request.getRequestDispatcher(Stringpath) 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求
request.setAttribute("key",value);
Object request.getAttribute("key");
get: URL 不安全
http://localhost:8080/webLesson1/7.jsp?uname=aa&upass=bb&sex=man&fav=sport&fav=music
post: http
response对象用于响应客户请求并向客户端输出信息。
response对象常用的方法:
response.setHeader("refresh","1");//每隔1秒刷新一次
response.setHeader("refresh","2;url=xxx.jsp")
等同于:
<meta http-equiv="refresh"content="2;url=xxx.jsp">
定时跳转后,页面的地址就被改变了,所以跳转称为客户端跳转。
但是如果有些页面中是需要跳转的话,将其声明为动态页则肯定执行速度不如静态页快,那么此时就可以使用第二种设置头信息的方式完成
response.sendRedirect(String location);将请求重新定位到一个不同的URL 客户端跳转
response.addCookie(cc);
一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程
session是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息,浏览器关闭,本次会话结束
重新开启一个浏览器,相当于重新创建了一个session对象。
session对象用来存储有关用户会话的所有信息
session对象常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","zhangsan");
Object getAttribute(String key):根据名称去获取session中存放对象的值
String name = (String)session.getAttribute("name");
session.getId(); 得到session的ID
session.isNew(); 判断该session是否是新的
session.Invalidate(); 销毁session
application类似于系统的“全局变量”,用于实现用户之间的数据共享
application对象的常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
Object getAttribute(String key):根据键去获取application中存放对象的值
aaplication.getRealpath("/"); 得到项目的路径
在JavaEE的开发中有几个重要的开发模式:
1.Model1模式 2.Model2模式 3.MVC模式
Model1模式
Model1的基础是jsp文件,它由一些相互独立的jsp文件,和一些javaClass组成(它不是必须的),这些jsp从HTTP Request中获得
所需的数据,处理业务逻辑,然后将结果通过Response返回浏览器端。
可分为两类:
1.model1(纯jsp技术,不带任何javaclass)
2.jsp+java class(java class也就是我们所指的javabean业务逻辑)
缺点:
1、表现层和业务逻辑层混合在一起
2、在开发过程中,不利于多人的协同开发
3、不利于后期的维护
优点:
1、简单、开发速度较快
2、比较适合开发小的项目
MVC模式:强制性的使应用程序的输入、处理、输出分开。
M:Model 模型层 由java class来做,也可以是javabean、ejb等
V:View 视图层 由jsp来做
C:Controller 控制层 由servlet来做
Mvc模式的处理过程:
首先控制器接受用户的请求,并决定调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,
最后控制器用相应的视图显示模型返回数据,并通过浏览器呈现给用户。
MVC是优秀的设计思想,但是也存在缺点:
1、工作量增加了
2、不使用小型项目
3、调试应用程序难度加大
当数据库中出现中文时,乱码问题的解决:
原因:
方法:
1、重新编码:newString(request.getParameter("uname").getBytes("iso-8859-1"),"gbk");
2、使用过滤器来解决
3、通过配置文件server.xml(不太稳定):在Connector元素中增加属性URIEcoding="gbk",表示客户端请求传来的值均以gbk的标准来编码 <Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEcoding="gbk" />
GBK是GB2312的后续标准,添加了更多的汉字和特殊符号,GBK还是现如今中文Windows操作系统的系统默认编码
EL表达式
思考:JSP标准动作的局限:
1、一般是操作JavaBean的属性
2、JavaBean的属性只能为基本数据类型
3、不能进行逻辑操作
如何解决这个问题?
什么是EL
EL即Expression Language(表达式语言)
EL的功能
与<jsp:getProperty />类似 简化<jsp:getProperty/>
EL的语法
${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用[ ]。
例如: ${user.My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用[ ]来做,而“.“无法做到动态取值。
例如: ${sessionScope.user[data]}中data 是一个变量
没有指定哪个范围的变量,所以搜索的顺序:
page requset session application
最终都找不着返回null
EL内置对象:
pageScope requestScope sessionScope applicationScope
pageContext param paramValues(checkbox)
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
自动类型转换
JSTL
<c:forEach >
Servlet缺点,为什么会出现jsp技术?
因为Servlet当初的设计目的是用来产生网页的程序,所以所有的页面必须在Servlet中进行构造,这样做的效率在当今来说,真的很低下,所以对于Servlet来说,它是很不利于展现的,不过它很适合于对数据的处理,所以很适合于充当控制器来使用。因为Servlet构建页面实在够差,所以后来SUN推出了JSP来一改Servlet引入的尴尬。
jsp = html+java片段+jsp标签+javascript+css
JSP(Java Server Pages):在HTML中嵌入java脚本语言;由引用服务器中的JSP引擎来编译和执行嵌入的java脚本语言命令;然后将生成的整个页面信息返回给客户端。
jsp功能强大是因为可以与javabean结合使用(即jsp作前台,javabean作后台===>Model1)
jsp+javabean的基础上再结合servlet(做控制),就会构成MVC的开发模式,
MVC模式是目前软件公司通用的开发模式。
如何手工部署一个web项目?
WebRoot项目名
|-WEB-INF
|-web.xml 部署文件
|-classes .class
|-lib *.jar
|-jsp
|-js
|-css
|-index.jsp
虚拟路径配置
<Context path="/hello"docBase="D:\webSite"/>
path="/hello" url
docBase="D:\webSite" 项目路径
JSP页面的元素包括:
静态内容:HTML静态文本
(一)指令元素: 以"<%@"开始,以"%>"结束,用于从jsp发送一个信息到容器,如设置文字编码,引入包等
如:
设置MIME类型<%@ pagecontentType="text/html;charset=gbk" %>
ps:MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文 件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定 义的文件名,以及一些媒体文件打开方式。
导入所需要的包<%@page import="java.util.*,java.io.*"%>
包含某个文件 <%@include file="filename" %>
<%@ tagilb url=""prefix="" %> jstlJSP (标准标记库 JSPStandard Tag Library)
(二)脚本元素:在一定程度上可以理解就是java的片段
1、脚本: <% java代码 %> 局部变量
2、表达式: <%=java表达式 %> 输出变量 表达式
3、声明: <%! 变量、方法%> 全局变量
(三)动作元素:
<jsp:include page="filename"/>
<jsp:forward page=""/> ===>request.getRequestDispatcher("xxx").forward(request,response); forward(服务器端跳转) redirect(客户端跳转)
<jsp:flugin >
<jsp:usebean id=""class=""/>class值指明用到的哪个bean,id是bean的一个实例,相当于指定对象名
<jsp:setProperty name=""property="" value="" />name表示某一个对象名,property表示哪个属 性,value是具体的值,相当于调用了name.setProperty(value)这个方法
<jsp:getProperty name=""property="" />相当于调用name.getProprty();
其中scope四大属性范围:
1 page: 当前页面(默认)
2 request 一次请求
3 session 一次会话
4 application web应用程序
用法一:
<jsp:include page=""/>
用法二:
<jsp:include page="">
<jsp:param name=""value=""/>
</jsp:include>
<jsp:include page=""/> 与<%@include file="" %>有何区别?
答:{ ~前者是指令元素、后者是行为元素。<%@ include file=””%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。
~主要有两个方面的不同;
一:执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
二:引入内容的不同:
<%@ include file=”relativeURI”%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书籍. }
注释:
<!- - html中的注释,客户端可以看到源代码 -->
<%- - jsp中的注释,客户端不可以看到源代码 --%>
JSP脚本中使用的注释:
<% //单行注释 %>
<% /*多行注释*/ %>
总结:只用html的注释在客户端是看得到的
JSP执行过程:(翻译-->编译-->执行)
WEB容器处理JSP文件请求需要经过3个阶段:
1、翻译阶段:JSP文件会被WEB容器中的JSP引擎转换成JAVA源码
\Tomcat6.0\work\Catalina\localhost\hello\org\apache\jsp\xxx.java
2、编译阶段:Java源码会被编译成可执行的字节码.class
3、执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理请求后,容器把生成的页面反馈给用户端进行显示
第一次请求之后,WEB容器可以重用已经编译好的字节码文件。就不用再翻译、编译。
注意:如果对JSP文件进行了修改,WEB容器会重新对JSP文件进行翻译和编译。
传值方式:
方式1:
<a href="4.jsp?a=1&b=2">xx.jsp</a>
String s=request.getParameter("a");
String d=request.getParameter("b");
方式2:
<jsp:forward page="xx.jsp">
<jsp:param name="stuName" value="lishiming"/>
</jsp:forward>
方式3:
form表单
JSP的内置对象:
JSP 内置对象是 Web 容器创建的一组对象
JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例
JSP 内置对象的名称是 JSP 的保留字
九大内置对象:
out==============>JspWriter 向客户端输出数据,字节流
pageContext=========>PageContext 代表jsp页面的上下文
request============>HttpServletRequest 接受客户端的请求
response===========>HttpServletResponse 响应
session============>HttpSession 用于保存用户的信息,跟踪用户的行为
application========>ServletContext 多个用户共享该对象,可以做计数器 this.getServletContext().setAttribute(name,value);
--------------------------------------------------------------------------------
config============>ServletConfig 代表jsp对应的servlet的配置,可以得到web.xml中的参数
page=============>Object 代表jsp这个实例本身(使用较少)
exception==========>Throwable 代表运行时的一个异常
out对象用于向客户端输出数据
out对象常用方法:
print():在页面中打印出字符串信息<%out.print("hello world"); %>
out.println()与<%= %> 区别?
发现使用表达式输出(<%=%>)明显要比使用out.println()输出更好。所以在JSP的开发页面中绝 对不能出现任何的out.println()语句。
request对象主要用于处理客户端请求,方法有:
String getParameter(String name) 根据页面表单组件名称获取页面提交数据
String[ ] getParameterValues (String name) 获取一个页面表单组件对应多个值时的用户的请求数据
void setCharacterEncoding (String charset) 指定每个请求的编码 在调用request.getParameter()之前进行设定,可以解决中文乱码问题
request.getRequestDispatcher(Stringpath) 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求
request.setAttribute("key",value);
Object request.getAttribute("key");
get: URL 不安全
http://localhost:8080/webLesson1/7.jsp?uname=aa&upass=bb&sex=man&fav=sport&fav=music
post: http
response对象用于响应客户请求并向客户端输出信息。
response对象常用的方法:
response.setHeader("refresh","1");//每隔1秒刷新一次
response.setHeader("refresh","2;url=xxx.jsp")
等同于:
<meta http-equiv="refresh"content="2;url=xxx.jsp">
定时跳转后,页面的地址就被改变了,所以跳转称为客户端跳转。
但是如果有些页面中是需要跳转的话,将其声明为动态页则肯定执行速度不如静态页快,那么此时就可以使用第二种设置头信息的方式完成
response.sendRedirect(String location);将请求重新定位到一个不同的URL 客户端跳转
response.addCookie(cc);
一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程
session是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息,浏览器关闭,本次会话结束
重新开启一个浏览器,相当于重新创建了一个session对象。
session对象用来存储有关用户会话的所有信息
session对象常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","zhangsan");
Object getAttribute(String key):根据名称去获取session中存放对象的值
String name = (String)session.getAttribute("name");
session.getId(); 得到session的ID
session.isNew(); 判断该session是否是新的
session.Invalidate(); 销毁session
application类似于系统的“全局变量”,用于实现用户之间的数据共享
application对象的常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
Object getAttribute(String key):根据键去获取application中存放对象的值
aaplication.getRealpath("/"); 得到项目的路径
在JavaEE的开发中有几个重要的开发模式:
1.Model1模式 2.Model2模式 3.MVC模式
Model1模式
Model1的基础是jsp文件,它由一些相互独立的jsp文件,和一些javaClass组成(它不是必须的),这些jsp从HTTP Request中获得
所需的数据,处理业务逻辑,然后将结果通过Response返回浏览器端。
可分为两类:
1.model1(纯jsp技术,不带任何javaclass)
2.jsp+java class(java class也就是我们所指的javabean业务逻辑)
缺点:
1、表现层和业务逻辑层混合在一起
2、在开发过程中,不利于多人的协同开发
3、不利于后期的维护
优点:
1、简单、开发速度较快
2、比较适合开发小的项目
MVC模式:强制性的使应用程序的输入、处理、输出分开。
M:Model 模型层 由java class来做,也可以是javabean、ejb等
V:View 视图层 由jsp来做
C:Controller 控制层 由servlet来做
Mvc模式的处理过程:
首先控制器接受用户的请求,并决定调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,
最后控制器用相应的视图显示模型返回数据,并通过浏览器呈现给用户。
MVC是优秀的设计思想,但是也存在缺点:
1、工作量增加了
2、不使用小型项目
3、调试应用程序难度加大
当数据库中出现中文时,乱码问题的解决:
原因:
方法:
1、重新编码:newString(request.getParameter("uname").getBytes("iso-8859-1"),"gbk");
2、使用过滤器来解决
3、通过配置文件server.xml(不太稳定):在Connector元素中增加属性URIEcoding="gbk",表示客户端请求传来的值均以gbk的标准来编码 <Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEcoding="gbk" />
GBK是GB2312的后续标准,添加了更多的汉字和特殊符号,GBK还是现如今中文Windows操作系统的系统默认编码
EL表达式
思考:JSP标准动作的局限:
1、一般是操作JavaBean的属性
2、JavaBean的属性只能为基本数据类型
3、不能进行逻辑操作
如何解决这个问题?
什么是EL
EL即Expression Language(表达式语言)
EL的功能
与<jsp:getProperty />类似 简化<jsp:getProperty/>
EL的语法
${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用[ ]。
例如: ${user.My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用[ ]来做,而“.“无法做到动态取值。
例如: ${sessionScope.user[data]}中data 是一个变量
没有指定哪个范围的变量,所以搜索的顺序:
page requset session application
最终都找不着返回null
EL内置对象:
pageScope requestScope sessionScope applicationScope
pageContext param paramValues(checkbox)
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
自动类型转换
JSTL
<c:forEach >
相关文章推荐
- Servlet与Jsp重要知识点总结(基础篇)
- JSP知识点总结
- Jsp知识点总结
- jsp和servlet知识点总结 .
- jsp和servlet知识点总结
- JSP知识点总结
- Java Web知识点总结——JSP脚本和指令的使用
- JSP第三章知识点总结——JSTL EL
- JSP知识点总结
- jsp入门知识点总结
- 张志宇 SERVELET JSP学习讲义-知识点总结纲要
- JSP知识点总结
- JSP知识点总结
- JSP知识点总结
- [Jweb] Servlet 与 Jsp 张志宇总结重要知识点
- Jsp入门知识点总结
- JSP与Struts知识点总结
- JSP小知识点总结
- JSP知识点总结-面试
- [Jweb] Servlet 与 Jsp 张志宇总结重要知识点