JavaWeb(五)--JSP

JSP

Java Server Page

本质是:HTML模版+java代码,所有的java代码都可以在jsp中使用。

HTML定义了整个网页的骨架,页面的结构和外观。java代码用来操作数据的显示。

JSP简介

Servlet的缺陷:

  • Servletde 的编码 部署,和调试任务繁琐
  • 生成动态网页繁琐,不利于项目分工。

JSP编写动态页面:

  • 有HTML语句和java代码编成的一个普通的文本文件。
  • 页面的扩展名是.jsp

JSP API:

test.jsp 翻译为text.java代码。test类继承了HttpJspBase. 而HttpJspBase 继承了HttpServlet。 jsp本质就是servlet。

org.apache.jasper.servlet.JspServlet 类是jsp的引擎。用来执行jsp代码。
tomcat web.xml 里面已经配置了jsp的内容了。所有的注册和映射都配置ok。
tomcat 是一个jsp、servlet的容器。

jsp和servlet

相同点:
1. 都是servlet,都是服务器端动态网页的技术。

不同点:
1. jsp重在数据的显示,servlet主要是处理业务逻辑。

JSP代码操作

在JSP中如何书写:

<!--jsp 声明,可以声明变量,函数,静态块,jsp的声明主要定义全局的变量或方法-->

<%!
    int i = 10 ;
%>

<!--jsp的 脚本片段,默认是放在service方法内部,可以调用外部的属性和方法-->
<!--jsp 脚本片段里面只能出现java代码,不能出现任何模版元素,jsp引擎在翻译jsp代码的时候,会将脚本片段里面的所有java代码都放在service方法里面。jsp脚本片段必须完全遵循java的语法规则。-->
<!--在一段脚本片段里面要嵌套模版元素,只能将脚本片段分开-->

<% 
    int num = 0 ;
%>

<!--jsp脚本表达式;用于将程序的数据输出到客户端,jsp引擎会将脚本表达式变成out.print();或者是out.write();-->
<%=num%>;
<!--相当于out.print(num);-->

JSP 运行机制

  1. web容器第一次接受到对某个jsp页面请求后,首先自动将该jsp页面翻译为servlet代码。(JSP引擎将jsp页面翻译为java代码)
  2. web容器负责将Servlet代码编译为字节码,与源文件放在同一个目录。
    (第一步和第二步只会发生一次)
  3. 将字节码放在容器内部。(加载到容器)

  4. 容器装载并实例化Servlet

  5. 容器触发init()方法装载资源

  6. 请求达到触发service服务方法,处理请求产生相应

  7. 容器丢弃Servlet调用destroy()方法

JSP注释

<%-- jsp注释内容 --%>

在jsp脚本片段中可以使用java的注释。

jsp指令

  1. 提供整个页面的相关信息。
  2. 用于jsp和容器的通信。
  3. JSP中有三种指令

    • page:用于定义jsp页面的各种属性,无论page指令出现在jsp的哪个地方,他都是作用于整个页面。
    • include :可以包含任意的文件,当然包含的是内容,include用于引入其他的一个文本文件内容。
    • taglib :导入标签库的指令

page 指令

页面指令功能是设定整个jsp页面的属性和相关功能。

操作:

/*导包操作*/
<%@ page import ="com.lovo.bean.*" %>
/*是否创建session对象*
<%@ page session = "true" %>
/*捕获异常,然后跳转(出了异常就会跳到xxx)*/
<%@ page errorPage = "index.jsp"%>
/*是错误页面,才可以用exception对象*/
<%@ page isErrorPage ="true"%>
/*设置MIME类型和编码集*/
<%@ page %>

include 指令

主要是用来包含外部文件,可以是静态文件,也可以是动态文件。

<%@ include file = ""%>

include 称为静态包含:

先把其他文件的内容引入到当前这个页面,然后变成一个页面。最终只会产生一个servlet。

包含动态网页,包含的内容必须遵循jsp的语法。

被引入的文件可以是任意的扩展名。

静态引入会生成一个文件,再翻译成servlet,所以引入的文件不能有指令冲突。

taglab

JSP标准动作

<jsp:include>动作是一种包含

<jsp:forword>动作将客户端发出来的请求,从一个jsp网页转到另一个jsp网页

<!--动态包含:包含的是结果,有多少个动态页面就包含多少个结果。

动态包含要创建多个servlet,将所有servlet结果放在一起。

动态包含,如果包含的是静态文件,那就相当于静态包含

包含的每一个页面都可以设置自己的指令和变量,不会冲突-->
<jsp:include page ="文件地址" flush ="true" ></jsp:include>
<!--flush 是缓冲设置-->



<!--相当于servlet的请求派发(内部派发),运行到这个位置,就将控制权交给了下一个资源。-->
<jsp:forward page = "页面地址" ></jsp:forward>

JSP 隐式对象

在jsp中操作请求、响应,会话以及其他servlet中使用的对象。

共有9个

1、request对象

request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

2、response对象

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

3、session对象

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

4、application对象

application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

5、out 对象

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

6、pageContext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

pageContext:

  • 是JSP技术中最重要的一个对象。代表了jsp页面的运行环境。这个对象封装了其他的8个对象。他自身还是一个容器(域对象)。用当前这个对象来封装数据。
  • 当前这个对象还包含了一些动作。跳转以及引入文件。

pageContext 包含了其他8个对象,通过findAttribute() 获取到其他对象的属性值。

查询内容首先找本身的对象,存在就返回,不存在就继续从其他对象查找。

查找其他对象的过程按照从小到大(对象作用范围的大小)的顺序去查找。

page - request - session -application 找不到就返回null

getAttribute()只能取到自己本身的值。

pageContext的动作

<%

    pageContext.forward("/index.jsp");

    <!--动作都可以执行-->

    pageContext.include("head.jsp");

%> 

7、config 对象

config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

8、page 对象

page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

page对象:

表示当前jsp页面,相当于java中的this。可以理解为一个对象本身。相当于把jsp看成是一个对象。

9、exception 对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

<!-九大隐式对象,可以直接在jsp中使用,不需要定义,jsp引擎已经定义好了->

<%
    String name = request.getHeader("Host");
%>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值