JSP 技术

1、JSP的引入

Servlet作用:用Java语言开发动态资源的技术
Jsp的作用:用Java语言(+html)开发动态资源的技术。Jsp就是Servlet

JSP的特点
  • JSP的运行必须交给Tomcat服务器
    tomcat的work目录:tomcat存放Jsp运行时的临时文件
  • Jsp页面既可以写html代码,也可以写Java代码
    (html页面不能写Java代码。而Jsp页面可以写Java代码)

2、JSP的执行过程

1)、访问到01.hello.jsp页面时,Tomcat扫描到jsp文件,在/work目录把jsp文件翻译成Java源文件 (翻译)
2)、tomcat服务器把Java源文件编译成class字节码文件 (编译)
(_01_hello_jsp.java -> _01_hello_jsp.class)
3)、tomcat服务器构造_01_hello_jsp对象
4)、tomcat服务器调用_01_hello_jsp类里面的方法,返回内容显示到浏览器。
第一次访问jsp页面:(1)->(2)->(3)->(4)
第二次访问:(4)
为什么jsp就是Servlet
jsp文件被翻译成Java源文件:_01_hello_jsp extends org.apache.jasper.runtime.HttpJspBase
HttpJspBase类继承自HttpServlet
Servlet生命周期:

  1. 构造方法 (第一次访问)
  2. init() (第一次访问)
  3. service()
  4. destroy()

Jsp生命周期:

  1. 翻译:jsp->Java文件
  2. 编译:Java文件->class文件
  3. 构造方法
  4. init方法 _jspInit()
  5. service方法 _jspService()
  6. destroy方法 _jspDestory()
    第一次访问:1)->2)->3)->4)->5)
    第N次访问:5)

3、Jsp语法

1、格式

<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="utf-8"%>

2、jsp表达式
作用: 向浏览器输出变量的值或表达式计算的结果
注意: 表达式的原理就是翻译成out.print(“变量” ),通过该方法向浏览器写出内容,表达式后面不需要带分号结束。

<%=变量或表达式%>

3、jsp脚本

<%
   java 代码
%>

4、jsp声明
变量:成员变量
方法:成员方法

 <%!     变量和方法     %>

5、jsp注释

<!--     html注释,会被解析到Java文件中并传到浏览器,在jsp中不能使用HTML注释容易出错  -->
<%--     jsp注释,不会被解析到Java文件中     -->

4、jsp的指令

1)include指令

作用:在当前页面包含其他页面
原理:把被包含的页面内容翻译到包含页面中并合成翻译一个Java源文件 静态包含。被包含页面中不需要出现html全局标签,只需要出现中的内容。

<%@include file="文件目录"%>
2)page指令

作用:告诉tomcat服务器如何翻译JSP文件

<%@ page
    language="java"         告诉服务器是用什么动态语言翻译JSP文件
    import="java.util.*"    告诉服务器Java文件使用什么包,多个包用逗号分隔
    pageEncoding="utf-8"    告诉服务器使用什么编码翻译JSP文件,当没有其他编码设置时,下面编码也参考此编码,以及MyEclipse对于jsp的编码也参考此编码
    contentType="text/html;charset=utf-8" 服务器发送给浏览器数据类型和编码
    errorPage="error.jsp"     指示当前页面出错后跳转的页面(可以在web.xml中配置全局错误跳转页面)
    isErrorPage="false"     false表示不是错误处理页面,不能使用exceptiontrue就是错误处理页面,可以使用exception对象
    buffer="8kb"          jsp页面的缓存区大小。
    session="true"         是否开启session功能。false,不能用session内置对象;true,可以使用session内置对象 
    isELIgnored="false"      是否忽略EL表达式。   
      %>

web.xml中配置全局错误跳转页面(jsp中的errorPage 页面优先)

<!--服务器出错返回500 -->
<error-page>
     <error-code>500</error-page>
     <location>/common/500.jsp</location>
</error-page>
<!-- 当访问一个不存在页面时返回404错误 -->
<error-page>
     <error-code>404</error-code>
     <location>/common/404.html</location>
</error-page>
3)、taglib指令

5、Jsp的内置对象

Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象!!!!
9大内置对象

request       HttpServletRequest
response      HttpServletResponse
config        ServletConfig
application   ServletContext
session       HttpSession
exception     Throwable
page          Object(this)
out           JspWriter
pageContext   PageContext 

其中request、response、config、context以及session和Servlet中对象一样

1)out对象

JspWriter类,相当于带缓存的PrintWriter(response.getWriter()该方法返回PrintWriter)
缓冲区的大小就是上面page命令中设置的 buffer="8kb"
当满足以下条件之一,缓冲区内容写出:

  • 缓冲区满了
  • 刷新缓存区
  • 关闭缓存区
  • 执行完毕jsp页面
2)pageContext对象

pageContext对象的类型是PageContext,叫jsp的上下文对象,可以获取其他八个内置对象。是一个域对象
作用范围:在一个jsp页面内

6、jsp中域对象的使用

Servlet中含有三个域对象:ServletContext context域、HttpServletRequet request域、HttpSession session域 。在jsp中又增加一个域对象PageContext page域 。
这些域对象的作用主要用于保存共享数据。

pageContext.setAttribute("name");

默认情况下上述保存数据方式会将数据保存到pageContext域中
也可以指定数据保存到指定域中。

pageContext.setAttribute("message", "pageContext");
pageContext.setAttribute("message", "requset",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("message", "Session", PageContext.SESSION_SCOPE);
pageContext.setAttribute("message", "application", PageContext.APPLICATION_SCOPE);

获取域对象中数据时可以使用:

<%=pageContext.getAttribute("message", PageContext.PAGE_SCOPE) %>

也可以不指定域,则默认是在pageContext 中取数据。还可以使用下述方法取数据

<%=pageContext.findAttribute("message") %>

自动在四个域中搜索数据
顺序: page域 -> request域 -> session域- > context域(application域)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值