JSP读书笔记

1、为什么要用JSP

  • 写在Servlet中的所有HTML标签必须包含Java字符串,这使得处理HTTP响应报文的工作十分繁琐
  • 所有的文本和HTML标记都是硬编码,即使表现层的微小变化,也需要重新编译
  • 利用JSP技术,实现业务逻辑与页面显示的分离,动态信息由JSP页面来显示
  • JSP页面通常被编译成JSP Servlets,这是一个标准的Java扩展,页面开发人员能够访问全部的java应用环境,以利用java的可移植性和可扩展性
  • 当JSP页面第一次调用时,如果它不存在内存中,就会转换成JSP Servlet,并存储再服务器的内存中,这就使得在接下来的对相同页面的调用会非常快,因为它直接执行在内存中的JSP Servlert。

2、JSP的工作原理

  • 当用户访问一个JSP页面时,JSP页面会被编译成Servlet文件(Java文件)。转换JSP页面到JSP页面实现类,该实现类是一个实现javax.servlet.jsp.JspPage接口或者子接口javax.servlet.jsp.HttpJspPage的Java类。JspPage是javax.servlet.Servlet的子接口,这使得每一个JSP页面都是一个Servlet。
  • JSP引擎调用Java编译器,编译Servlet文件为可执行的代码文件(.class文件),像其他正常的Servlet一样执行声明周期操作。
  • 用java虚拟机解释执行.calss文件,并将执行结果返回给服务器
  • 服务器将执行结果以HTML格式发送给客户端的浏览器

3、JSP的内置对象

对象象

类型

作用

request

javax.servlet.http.HttpServletRequest

Request对象用于获取客户端的各种信息

response

javax.servlet.http.HttpServletResponse

Response对象将服务器端数据发送到客户端,改对象包含了响应客户请求的有关信息

session

javax.servlet.http.HttpSession

Session对象用于存储特定的用户会话所需的信息

application

javax.servlet.ServletContext

Application对象保存Java Web应用程序中的公有数据,可存放全局变量,在任何地方对该对象修改,都将影响其他用户,它代表当前WEB应用

out

javax.servlet.jsp.JspWriter

Out对象主要用于向客户端输出各种数据,同时管理应用服务器上的输出缓冲区

config

javax.servlet.ServletConfig

servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装ServletConfig对象中

pageContext

javax.servlet.jsp.PageContext

PageContext提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了对各种页面属性的访问,并且允许向其他应用组件转发Request对象

page

Javax.servlet.jsp.HttpJspPage

有关页面的相关配置

exception

Java.lang.Throwable

Exception对象用来处理JSP文件执行时发生的错误和异常

4、指令

常用的JSP指令有三种:page指令、include指令、taglib指令

  1. page指令用来定义JSP文件中的全局属性,它描述了与页面相关的一些信息,其作用域为它所在JSP页面的和其包含的文件
  2. include指令用于在当前JSP页面中加载需要插入的文件代码,即为页面插入一个静态文件,如JSP文件、HTML文件等,这些加载的代码和原有的JSP代码合并成一个新的JSP文件。
  3. taglib指令用来指定页面中使用的标签库以及自定义标签的前缀。

5、JSP常用动作

<jsp:param>动作

    <jsp:param>动作可以用于<jsp:include>、<jsp:forward>动作体中,为其他动作传送一个或者多个参数

    <jsp:param name="参数名" value="参数值"/>

<jsp:include>动作

    <jsp:include>动作用来把指定文件动态插入正在生成的页面中

    include指令与动作的区别:

       对于include指令,资源引入发生在页面转换时,即当JSP容器将页面转化生成的Servlet时。而对于include动作,资源引入发生在请求页面时。因此,使用include动作可以传递参数,而include指令不行;

      include指令对引入的文件扩展名不做特殊要求。但对于include动作,允许包含静态文件和动态文件,这两种包含的结果是不同的。如果包含的文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,这个文件不会被JSP编译器执行;如果包含的文件是动态的,那么这个被包含的文件会被JSP编译器编译执行。

<jsp:useBean>动作

     useBean将创建一个关联Java对象的脚本变量

     <jsp:useBean id="Bean 实例名称" scope="page|request|session|application" class="JavaBean类" type="对象变量的类型" beanName="Bean名字"/>

     例:<jsp:useBean="time" class="java.util.Date"/>

            现在时间:<%=time%>

<jsp:setProperty>动作

     <jsp:setProperty>动作用来设置、修改已实例化Bean中的属性值

     <jsp:setProperty name="Bean的名称" property =  " * " | property="属性" [param="属性" | value="值"] / >

<jsp:getProperty>动作

     <jsp:getProperty>动作获取指定Bean'属性值后转换成字符串输出

     <jsp:getProperty name="bean的名称" property="bean的属性"/>

     在使用<jsp:getProperty>之前,必须用<jsp:useBean>创建实例化对象

<jsp:forward>动作

       <jsp:forward>动作用于转发客户端的请求到另一个页面或者另一个Servlet文件中

     <jsp:forward page="地址或者页面"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值