Jsp的各种元素在转化为servlet时处理是不一样的:
指令,控制web容器如何处理页面
脚本,被插入到生成的servlet里
EL表达式,作为参数传递到解析器
get/set Property,变成方法,调用bean
jsp:include/forward,变成servlet相关api
jsp:plugin,变成浏览器标签
自定义标签,变成方法,调用相关实现
ParseException会在编译jsp页面过程中产生
_jspInit(),_jspService(),_jspDestroy()
<%@ page buffer=”none|xxxkb” %>
<%@ page contentType="text/vnd.wap.wml"%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>
<%@ page errorPage=”file_name”%>
<%@ page isErrorPage="true" %>
这个错误页面能得到一个javax.servlet.jsp.ErrorData对象
可以用EL表达式处理
${pageContext.errorData.statusCode}
${pageContext.errorData.throwable}
${pageContext.errorData.throwable.cause}
<%@pageisThreadSafe="true|false" %>声明这个jsp是多线程安全的,而且默认是true
你要手动处理这个页面的所有能并发访问的变量
即时是false,application和session域的属性和bean也要处理同步,一般不要设成false
EL表达式有两种:${}会立即计算,#{}则会延后计算(此写法可略)
前者是Jsp方式,后者是Jsf方式为JSP2.1新增
他们只能用做静态文本,或是作为某个标签的属性
<fmt:formatNumber value="${sessionScope.cart.total}"/>
${}都是只读的,只能调用字段
<h:inputTextid="name" value="#{customer.name}" />
#{}则可以读写,并且能调用方法
调用字段的El可以调用以下对象的字段或属性:
javaBean组件,集合,枚举,隐式对象
${customer}会按page,request,session,application的顺序寻找customer的值,直到返回null
隐式对象则会返回这个Object
public enum Suit{hearts,spades,diamonds,clubs}
${mySuit== "hearts"}这样可以直接访问mySuit枚举的常量Suit.hearts
.和[]用来访问其他对象的属性,集合的成员
${customer.name}或${customer["name"]},单引号也可以
${customer.address["street"]}组合使用也可以
${customer.orders[1]}可以访问数组或list成员
${customer.orders.socks}可以取出map下的与"socks"对应的value
${"literal"}也可以用常量或直接计算
${customer.age+20}
${57}
${true}
${null}
EL表达式里的字符串也可以是单引号
<some:tagvalue="some${expr}${expr}text${expr}"/>也可以这样写
会依次计算每个EL然后像字符串连接起来
EL的结果跟期望的类型不匹配的话会自动转换
调用方法的EL只能调用public非static方法,而且只能用作标签的属性,不能作为静态文本
<my:tagsomeAttribute="sometext\#{more\${text" />
前面加\表示不处理此EL
或是在web.xml里配置
<jsp-property-group>
<deferred-syntax-allowed-as-literal>
true
</deferred-syntax-allowed-as-literal>
</jsp-property-group>
或
<jsp-property-group>
<el-ignored>true</el-ignored>
</jsp-property-group>
或是
<%@page ... deferredSyntaxAllowedAsLiteral="true" %>
<%@page isELIgnored="true" %>
${’${’}exprA}的结果是${exprA}
\${exprA}的结果是${exprA}
隐式对象:
pageContext,下面有servletContext,session,request,response
param,paramValues,header,headerValues,cookie,initParam
pageScope,requestScope,SessionScope,applicationScope
${}里面是个隐式对象的话会返回这个对象,而不是普通的value
empty是一个运算符,判断是否为null或空
${!empty param.Add}
${pageContext.request.contextPath}
${sessionScope.cart.numberOfItems}
${param[’mycom.productId’]}
${header["host"]}
${requestScope[’javax.servlet.forward.servlet_path’]}里面有点的只能用[]
相关推荐
2. **JSP 2.3**:JavaServer Pages(JSP)更新了EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),简化了页面开发,提高了可读性和维护性。 3. **JavaServer Faces (JSF) 2.2**:JSF...
在JavaEE 5中,JSP 2.1版本引入了EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),使得开发者可以更方便地访问和操作JavaBean对象,增强了页面表现力和可维护性。 ### **4. JPA(Java ...
2. **JSP 2.3**:增强了表达式语言(EL),支持更多的类型转换和注解,简化了JSP页面的编写。 3. **WebSocket API**:Java EE 7引入了对WebSocket协议的支持,允许双向通信,极大地改善了实时应用开发。 4. **Java...
根据给定的文件信息,文件名为"javaeetutorial7.pdf",描述为"JavaEE7的官方教程,英文原版,适合有一定英文阅读能力的读者",标签为"javaee7 tutorial7"。从这些信息中,我们可以得知知识点主要围绕Java EE 7 (Java...
2. **JSP 2.2**:增强了表达式语言(EL),简化了页面脚本,支持自定义标签库(Tag Libraries)的改进,使得JSP开发更加简洁和高效。 3. **JavaServer Faces (JSF) 2.0**:JSF 2.0引入了 faces-config.xml 的简化,...
在JavaEE 6中,JSP 2.2版提供了一些改进,如简化脚本元素、增强EL(Expression Language)表达式支持等。 3. **JSF(JavaServer Faces)**:作为MVC(Model-View-Controller)框架,JSF 2.0在JavaEE 6中得到加强,...
2. **JSP(JavaServer Pages)**:更新的JSP 2.2版本简化了页面编码,增强了EL(Expression Language)和JSF(JavaServer Faces)的集成。例子可能会演示如何创建动态网页,以及如何使用EL表达式和JSTL标签库。 3. ...
1. 官方文档:https://docs.oracle.com/javaee/7/tutorial/jsp/index.html 2. Java Web教程:https://www.runoob.com/w3cnote/java-web-tutorial.html 3. JDBC教程:https://www.runoob.com/jdbc/jdbc-tutorial.html...
1. Oracle的JSP官方教程:https://docs.oracle.com/javaee/6/tutorial/doc/bnajp.html 2. Stack Overflow和GitHub上的相关问题与项目示例 3. 书籍如《Head First Servlets & JSP》和《Core Servlets and JSP》 总之...
文档可能涵盖了JSP语法、标签库、EL(表达式语言)和JSP页面生命周期等主题。 综上所述,这些手册构成了一个全面的IT技术学习资源库,涵盖了从Java开发、数据库交互、企业级应用开发到操作系统管理的多个重要领域。...