一. jsp访问原理
- WEB容器JSP页面的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。
- 每个JSP页面在第一次被访问时,JSP引擎先将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
二:什么是jsp引擎,jsp容器,web服务器之间的关联与区别
JSP引擎与JSP容器指的是同样的东西,他们都指用来统一管理和运行Web应用程序的软件。常见的JSP引擎有Tomcat、JRun、Resin等,其中最常用的就是Tomcat。
而Web服务器,其实就是服务器了,它指的是安装了JSP引擎的计算机。
所以说,JSP引擎是用来管理和运行Web应用程序的软件,而安装了JSP引擎的计算机就是Web服务器。
三:jsp的编译指令,七大动作指令,九大内置对象
JSP的编译指令
Page:该指令是针对当前页面的指令
<%@ page [Attribute=“Value”] %>
language:声明当前jsp页面使用的脚本语言的种类
通常是java,默认是java,无需设置
extends:指定jsp编译产生的类继承的父类,或者实现的接口
import:用于导入包,默认已经导入的包有
java.lang.,javax.servlet.,javax.servlet.jsp.,javax.servlet.http. session:设定这个jsp页面是否需要HttpSession
buffer:指定输出缓冲区的大小
autoflush:当缓冲区即将溢出时,是否自动强制输出缓冲区的内容
info:设置该JSp程序的信息,采用Servlet.getServletInfo()获取该值
errorPage:指定错误处理页
isErrorPage:设置本JSp是否为错误处理程序
ContentType:用于设定生成网页的文件格式和编码格式
include:用于指定包含另一个页面
<%@include file=“path”%>
taglib:用于定义和访问自定义标签
JSP的7个动作指令
jsp:forward 执行页面转向,将请求的处理交给下一个页面
<jsp:forward page=“path<%expression%>”>
<jsp:param name="" value="" />
</jsp:forward>
常和param指令一起
jsp:param 用于传递参数,必须与其他支持参数的标签一起使用
jsp:include 用于动态引入一个jsp页面
<jsp:include page="<url|expressions>" flush=‘true’/>
也可以在标签内向引用页面传递param
jsp:plugin 用于下载javaBean 或Applet到客户端执行
jsp:useBean 创建一个javaBean实例
<jsp:seBean id=“name” class=“classname” scope=“page|request|session|application” />
scope属性:page:该javaBean实例仅在本页面有效
request: 仅本次请求有效
session:在本次session有效
application:在本应用内一直有效
jsp:setProperty 设置
javaBean实例的属性值
<jsp:setProperty name=“BeanName”
property=“propertyName”
value=""
/>
jsp:getProperty 取得JavaBean实例的属性值
<jsp:getProperty name=“beanName” property=“propertyName”>
JSP的9大内置对象
1.application javax.servlet.ServletContext 的实例,代表JSp所属的web应用本身,可用于页面之间交换信息
2.config javax.servlet.ServletConfig 的实例,代表JSP的配置信息,常用的方法有
getInitParameter(String paramName)
getInitParameternames()
3.exception java.lang.Throwable 的实例,代表其他页面中的异常和错误,只用当页面时错误处理页面,即page的isErrorPage=true 时,该对象才可以使用,方法getMessage(),printStackTrace()
4.out javax.servlet.jsp.JspWriter 的实例,该实例代表jsp的页面输出流,用于输出内容
5.page:代表页面本身,也就是servlet中的this,一般不用
6.pageContext javax.servlet.jsp.PageContext的实例,该对象代表该jsp的上下文,使用该对象可以访问页面中的共享数据
常用方法:getServletContext() getServletConfig()
7.request javax.servlet.http.HttpServletRequest 的实例,封装了一次请求
8.response javax.servlet.http.HttpServletResponse的实例,封装了一次响应
9.session javax.servlet.http.HttpSession 的实例,代表一次会话