JSP 的组成元素:
JSP页面就是带有JSP元素的常规Web页面,它由静态内容和动态内容构成。其中,静态内容指HTML元素,动态内容(JSP元素)包括指令元素、脚本元素、动作元素、注释等内容。
1、指令元素
指令元素主要用于为转换阶段提供JSP页面的相关信息,指令不会产生任何输出到当前的输出流中,它指定了有关页面本身的信息,这些信息在请求之间一直保持不变。指令元素语法为<%@ directive{attr="value"}%>。指令元素有三种:page、include、taglib。
1.1 page
该指令用于整个页面,定义与页面相关的属性,它是JSP页面和容器的通信员,一般放在JSP页面的第一行。与page相关的属性如下:
- buffer
- 指定out对象使用缓冲区的大小
- autoFlush
- 控制out对象的 缓存区
- contentType
- 指定当前JSP页面的MIME类型和字符编码
- errorPage
- 指定当JSP页面发生异常时需要转向的错误处理页面
- isErrorPage
- 指定当前页面是否可以作为另一个JSP页面的错误处理页面
- extends
- 指定servlet从哪一个类继承
- import
- 导入要使用的Java类
- info
- 定义JSP页面的描述信息
- isThreadSafe
- 指定对JSP页面的访问是否为线程安全
- language
- 定义JSP页面所用的脚本语言,默认是Java
- session
- 指定JSP页面是否使用session
- isELIgnored
- 指定是否执行EL表达式
- isScriptingEnabled
- 确定脚本元素能否被使用
(1)page指令属性:import
import属性用来引入JSP文件需要使用的类。
<%@page import="com.company.project.model.po.BookPo"%>
<%@page import="com.company.project.biz.impl.BooksBizImpl"%>
可以使用逗号同时引入多个包,也可以在一个JSP文件中多次使用import。
(2)page指令属性:pageEncoding
pageEncoding属性用来设置JSP文件的页面编码格式。
<%@page pageEncoding=“utf-8"%>
(3)page指令属性:session
session属性用来设置JSP页面是否生成session对象。
<%@page session="false"%>
(4)page指令属性:errorPage
errorPage属性设置JSP页面的错误页面。当JSP中发生异常或错误却没有被处理时,容器将请求转发到错误页面.
<%@page errorPage="error.jsp"%>
(5)page指令属性: isErrorPage
isErrorPage属性指定当前页面是否可以作为另一个JSP页面的错误处理页面.
<%@page isErrorPage="true"%>
在error.jsp翻译生成的Java类中的_jspService方法中将生成exception内置对象
注意:即使一个页面没有设置isErrorPage=“true”,也可以作为错误页面使用,区别在是否有内置对象exception内置对象产生。
1.2 include
该指令用于在JSP页面中包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。
<%@ include file="相对于当前文件的" %>
<%@include file="/page/common/basePath.jsp" %>
1.3 taglib
该指令允许页面使用用户定制的标签。
<%@taglib prefix="前缀" uri="具有唯一标识和前缀相关的标签描述符地址" %>
2. JSP 内置对象
JSP文件中可以直接使用一些名字固定的对象,称为内置对象。内置对象由容器根据规范声明、创建,共有9个内置对象。其中exception对象在特定情况会创建。
(1)内置对象request
request是HttpServletRequest类型的对象,可以在JSP中直接通过request调用HttpServletRequest接口中的任何方法。
(2)内置对象response
response是HttpServletResponse类型的对象,可以在JSP中直接通过response调用HttpServletResponse接口中的任何方法。
(3)内置对象session
session是HttpSession类型的对象,可以在JSP中通过session调用HttpSession接口中的任何方法
(4)内置对象application
applicaton是ServletContext类型的对象,可以在JSP中通过application调用ServletContext接口中的任何方法。
(5)内置对象out
out是JspWriter类型的对象,可以在JSP中调用JspWriter的方法向客户端输出内容。然而,由于<%=%>可以更为便捷地进行输出,因此在JSP文件中往往不使用out对象进行输出。
(6)内置对象config
config是ServletConfig类型的对象,在JSP中可以使用config来调用ServletConfig接口中的任何方法。在web.xml中可以像配置Servlet那样配置JSP。使用配置的url-pattern访问JSP。
(7)内置对象exception
exception是一个Throwable类型的对象,默认情况下不会生成这个内置对象,当JSP页面被指令<%@page isErrorPage=“true”%>指定为可以是错误页面时,才会有exception这个内置对象。
(8)内置对象page
page指代当前类的对象,即this。
(9)内置对象pageContext
pageContext是所有内置对象中最重要的内置对象,是JSP的上下文对象。
pageContext是javax.servlet.jsp.PageContext类的对象。
很多内置对象通过pageContext对象获取。
3、脚本元素
使用JSP脚本元素可以将Java代码嵌入到JSP页面里,这些Java代码将出现在由当前JSP页面生成的Servelt中,使JSP将静态内容与动态内容分离出来。脚本元素包含表达式、脚本和声明等。
1)表达式
表达式是对数据的表示,系统将其作为一个值进行计算。
<%= expression%>
例如<%= user.getName()%>在将JSP转换成Servlet后,使用out.print()将表达式的值输出。所以如果表达式是调用一个方法的话,那方法必须要有返回值,而且在方法的后面不能有分号。
2)脚本 脚本是在<% ... %>里嵌入的Java代码,这里的Java代码与一般的Java代码没有什么区别,所以每一条语句同样要以分号“;”结束,这和表达式是不同的。
<% code %>
3)声明
声明就是允许用户定义Servlet中的变量、方法。
<%! code %>
4、注释
(1):HTML的注释。在客户端查看源代码时能看到的注释
(2)<%-- ... --%>:JSP注释。在客户端查看源代码时无法看到的注释。
(3)JSP脚本中注释:在客户端查看源代码时能看到的注释 <% //单行注释 %> <% /*多行注释 */ %>
5、JSP标准动作
(1)标准动作:forward
forward动作:在JSP页面中进行请求转发
<jsp:forward page=“loginsuccess.jsp">
</jsp:forward>
(2)标准动作:include
include动作:在JSP页面中,进行动态包含
<jsp:include page=“top.jsp">
</jsp:include>
include标准动作与include指令都是实现包含其他页面的功能,但是include标准动作的属性是page,实现动态包含,发生在请求阶段;而include指令的属性是file,实现静态包含,发生在翻译阶段。
(3)标准动作:param
param动作往往作为子动作使用,为forward和include动作传递参数
<jsp:forward page="perInfo.jsp">
<jsp:param name="userName" value="张三"/>
</jsp:forward>
<jsp:include page="changePw.jsp">
<jsp:param name="userName" value="张三"/>
</jsp:include>
6、JavaBean
JavaBean是用Java语言描述的软件组件模型,实际上是一个Java SE的类。
我们往往使用JavaBean封装数据,在比较简单的应用中,也可以使用JavaBean封装业务逻辑,这些类遵循一定的编码规范:
- 必须是public类 ;
- 必须有一个无参的public的构造方法;
- 返回属性的方法为getXxxx()格式 ;
- 设置属性的方法为setXxx(形式参数)格式。
JavaBean相关标准动作:
(1)useBean
语法:<jsp:useBean id=“” class=“” scope=“”>
useBean标准动作用来使用JavaBean对象,JavaBean对象是某一范围(用scope指定)的属性。 Java Bean对象名字用id指定,类型用class指定。如果对应范围没有该属性,则调用class指定类的无参构造方法,创建一个该类的对象,并将该对象存储为scope的一个属性,属性名为id。 其中scope有四种:page、request、session、application,分别为PageContext范围、HttpServletRequest范围、HttpSession范围、ServletContext范围。如果不指定scope的值,默认为page范围。
<jsp:useBean id="firend" class="com.company.project.model.po.UserPo" scope="">
(2)setProperty
语法:<jsp:setProperty name=“” property=“” param|value=“”/>
<jsp:setUserName name="firend" property="userName" value="张三"/>
(3)getProperty
语法:<jsp:getProperty name=”” property=””/>
<jsp:getProperty name="firend" property="userName"/>
每日心语:
要得到必须要付出
要付出你还要学会坚持
如果你觉得真的很难
那你就放弃
但放弃你就不要抱怨