欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Day07 动态页面技术(JSP)

程序员文章站 2022-08-17 09:05:53
一、JSP的简介1、JSP是什么JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTML有所区别,JSP 文件的扩展名为.jsp。2、JSP运行原理JSP的工作模式是请求/响应模式如果项目发布在Tomcat的webapps目录中,源文件和.class文件可以在“Tomcat 安装目录/...

一、JSP的简介

1、JSP是什么

  • JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。
  • 在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。
  • 为了与传统HTML有所区别,JSP 文件的扩展名为.jsp。

2、JSP运行原理

  • JSP的工作模式是请求/响应模式
    Day07 动态页面技术(JSP)
  • 如果项目发布在Tomcat的webapps目录中,源文件和.class文件可以在“Tomcat 安装目录/work/Catalinalocalhost/项目名/org/apache/jisp"下找到,如图所示。.
    Day07 动态页面技术(JSP)
  • 查看源代码发现该类继承HttpJspBase类,而HttpJspBase类是HttpSevlet的一个子类,由此可见index_jsp类就是一个Servlet。
  • 所以,JSP的本质是Servlet

二、JSP基本语法

1、JSP脚本元素

1.1 JSP Scriptlets(一段代码段)

声明service方法内部的局部变量

<% java代码(变量、方法、语句等) %>

1.2 JSP声明语句

声明servlet成员变量和方法

<%! 定义的变量和方法等 %>

1.3 JSP表达式

将程序数据输出到客户端,即service方法内部out.print()

<%= expression %>

2、JSP注释

<%-- jsp注释 --%>
<% //java注释 %>
<!-- html注释 -->
Day07 动态页面技术(JSP)

三、JSP指令

jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令:

1、page指令

属性最多的指令(实际开发中page指令默认即可,不用做修改),根据不同的属性,指导整个页面特性

格式:<%@ page 属性名1= “属性值1” 属性名2= “属性值2” …%>

常用属性如下:
language:jsp脚本中可以嵌入的语言种类
contentType:有效的文档类型,HTML格式为text/html。翻译后的Servlet中是response.setContentType(text/html;charset=UTF-8)
pageEncoding:当前jsp文件的本身编码。未设置contentType时,contentType和pageEncoding的值一样。
session:默认为true,表示内置session对象,false反之。
import:导入java的包
errorPage:当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
buffer:JSP缓存大小(默认8kb),暂指out缓存区的大小。
autoFlush:是否自动刷新
isELIgnored:是否忽略EL表达式,false表示不忽略,使用EL表达式

2、include指令

页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中

格式:<%@ include file=“被包含的文件地址”%>

3、taglib指令

在jsp页面中引入标签库(jstl标签库、struts2标签库)

格式:<%@ taglib uri=“标签库地址” prefix=“前缀”%>

四、JSP内置/隐式对象

jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp 脚本中可以直接使用这9个对象。
Day07 动态页面技术(JSP)

1、out对象

out 对象是javax. servlet jsp JspWriter类的实例对象,它的作用与ServletResponse getWriter()方法返回的 PrintWriter 对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是,out 对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter。
Day07 动态页面技术(JSP)

2、pageContext对象

jsp页面的上下文对象。
page对象与pageContext对象不是一回事。
作用如下:

2.1 pageContext是一个域对象

<body>
<%
    pageContext.setAttribute("name", "page域对象");
    //使用pageContext向指定的其他域对象中存数据
    pageContext.setAttribute("name", "request域对象", PageContext.REQUEST_SCOPE);
    pageContext.setAttribute("name", "session域对象", PageContext.SESSION_SCOPE);
    pageContext.setAttribute("name", "application域对象", PageContext.APPLICATION_SCOPE);
%>

<!-- 使用request取值 -->
<%=request.getAttribute("name") %>
<!-- 使用pageContext取值 -->
<%=pageContext.getAttribute("name", PageContext.REQUEST_SCOPE)%>

<!-- findAttribute会从小到大搜索域的范围中的name
    pageContext域也可以称为page域
    page域<request域<session域<application域 -->
<%=pageContext.findAttribute("name") %>
</body>

2.2 可以获得其他8大隐式对象

例如:
pageContext.getRequest()
pageContext.getSession()
应用:
当一个方法需要好几个对象作为参数时,只需让pageContext作为参数即可。

五、JSP的四个域对象范围

Day07 动态页面技术(JSP)

  • page:表示当前页,通常没用。jsp标签底层使用。
  • request:表示一次请求。通常一次请求就一个页面,但如果使用请求转发,可以涉及多个页面。
  • session:表示一次会话。 可以在多次请求之间共享数据。
  • application:表示一个web应用(项目)。可以整个web项目共享,多次会话共享数据。

六、JSP动作元素(动作标签)

1、页面包含(动态包含)

<jsp:include page=“relativeURL” flush=“true | false” />

page属性:指定被引入资源的相对路径。
flush属性:指定是否将当前页面的输出内容刷新到客户端,默认为false。

动态包含和静态包含的区别

  • include指令:<%@include file="" %>静态包含
    当前页面和被包含的页面,合并成后生产一个servlet源码。
  • include标签:<jsp:include page=""></jsp:include>动态包含
    当前页面和被包含的页面,分别生产servlet源码和字节码,运行时,由tomcat进行合并输出。
    Day07 动态页面技术(JSP)

2、请求转发

<jsp:forward page=“要转发的资源” />

七、JSP代码重用

  • (1)jsp代码是可以重用
  • (2)jsp代码如何重用?
    建立jsp页面 A,并在A中保存重用代码
    在当前页面 B 中引入A
    <jsp:include page="A.jsp" />
    还可以再次引入A
    <jsp:include page="A.jsp" />
  • (3)B可以将参数传给A
    在A中的< jsp:include >标签中写入
    <jsp:param name="name" value="jack"/>
    在B中写入
    ${param.name}
  • 示例

demo01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>我是可以重用的jsp页面</h1>
        ${param.name}
        ${param.url}
</body>
</html>

demo02.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:include page="demo01.jsp">
        <jsp:param name="name" value="jack"/>
        <jsp:param name="url" value="http://www.baidu.com"/>
    </jsp:include>
    
    <h1>我是引入可重用jsp的页面</h1>
    
    <jsp:include page="demo01.jsp"></jsp:include>
</body>
</html>

Day07 动态页面技术(JSP)

Day07 动态页面技术(JSP)

本文地址:https://blog.csdn.net/qq_43639081/article/details/109366957

相关标签: jsp