抓取jsp网页源代码(2.java注释/*多行注释:可见范围jsp源码可见运行原理 )
优采云 发布时间: 2022-02-14 14:07抓取jsp网页源代码(2.java注释/*多行注释:可见范围jsp源码可见运行原理
)
JSP 概念
JSP的全称是Java Server Pages,中文名称是java server page。它基本上是一个简化的 Servlet 设计。它将Java程序段和JSP标签插入到网页的传统HTML文件中,形成JSP文件。后缀是(*.jsp)。使用 JSP 开发的 Web 应用程序是跨平台的,可以在 Linux 和其他操作系统上运行。
与 Servlet 一样,JSP 在服务器端执行。通常返回给客户端的是HTML文本,所以客户端只要有浏览器就可以浏览。
JSP 脚本
1.
内部java代码被翻译成服务方法的内部
2.
会在service方法里面翻译成out.print()
3.
会被翻译成servlet成员的内容
JSP 注释
不同注解可见范围不同
1. html 评论:
可见范围jsp源码,翻译后的servlet,页面展示html源码
2. java 注释://单行注释/*多行注释*/
可见范围jsp源码,翻译后的servlet
3. jsp 注释:
可见范围jsp源码可见
JSP运行原理-----jsp本质上是一个servlet
JSP 的工作模式是请求/响应模式。客户端首先发送一个HTTP请求,JSP程序接收请求并返回处理结果。当第一次请求一个 JSP 文件时,JSP 引擎(容器)将 JSP 文件转换成一个 Servlet,它本身也是一个 Servlet
JSP操作流程如下:
1)客户端发送访问JSP文件的请求
2)JSP 容器首先将JSP 文件转换为java 源文件(Java Servlet 源程序)。在转换过程中,如果发现JSP文件中有语法错误,转换过程将被中断,服务器和客户端返回错误信息。
3)如果转换成功,JSP会生成Java源文件,编译成相关字节码文件*.class。类文件是一个 servlet,servlet 容器像处理任何其他 servlet 一样处理它。
JSP编译后的两个文件:
PS:翻译后的servlet可以在Tomcat的工作目录中找到
JSP 指令
jsp的指令是指导jsp的翻译和操作的命令。jsp包括三个主要指令:
1. 页面指令(实际开发中默认的页面指令)
属性最多的一条指令,根据不同的属性,引导整个页面的特点
格式:
常见属性如下:
language:jsp脚本中可以嵌入的语言种类
pageEncoding:当前jsp文件的编码---可以收录contentType
contentType: response.setContentType(text/html;charset=UTF-8)
session:jsp在翻译过程中是否自动创建会话
import:导入java的包
errorPage:当前页面出错时跳转到哪个页面
isErrorPage:当前页面是错误处理页面
PS:page指令对整个页面都有效,不管它的书写位置如何,但是习惯上把Page指令写在JSP页面的顶部
2. 收录指令
页面收录(静态收录)指令,可以将一个jsp页面/HTML文件/文本文件收录到另一个jsp页面中
格式:
收录include指令的jsp页面的编译过程:
导入文件中除指令元素外,其他元素都转换成对应的java源代码,然后插入到当前jsp页面翻译的Servlet源文件中。插入位置与当前jsp页面中include的位置一致。
3. 标签库指令
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:
jsp 内置/隐式对象
jsp翻译成servlet后,service方法中有9个对象被定义和初始化,我们可以在jsp脚本中直接使用这9个对象
既然已经了解了对象,这里就重点学习out和pageContext
1. 输出对象
输出类型:JspWriter
它的功能和response.getWriter返回的PrintWriter很相似,输出内容到客户端out.write()
也相当于一个带有缓存功能的PrintWriter,如图:
在 JSP 页面中,通过 out 隐式对象写入数据,相当于将数据插入到 JspWriter 对象的缓冲区中。只有调用 ServletResponse.getWriter 方法,才能真正将缓冲区中的数据写入 servlet 引擎提供的缓冲区。在那个地区。
默认输出缓冲区为 8kb。可以设置为 0 关闭 out 缓冲区,将内容直接写入响应缓冲区。
2. pageContext 对象
jsp页面的context对象,page对象和pageContext对象不是一回事
效果如下:
1) pageContext 是一个域对象
setAttribute(字符串名称,对象 obj)
获取属性(字符串名称)
删除属性(字符串名称)
pageContext 可以访问其他指定域的数据
setAttribute(字符串名称,对象 obj,int 范围)
getAttribute(字符串名称,整数范围)
removeAttrbute(字符串名称,int 范围)
findAttribute(字符串名称)
PS:使用findAttribute()方法查找名为name的属性时,该属性依次从pageContext域、请求域、会话域、应用域中获取。在某个域中获取后,不会向后搜索。
四个范围的总结:
page domain:当前jsp页面的范围
请求字段:请求
会话字段:会话
应用领域:整个网络应用
2)可以获取其他8个隐式对象(不常用)
例如:pageContext.getRequest()
pageContext.getSession()
jsp标签(动作)
页面收录(动态收录):
收录的原则是对收录的页面进行编译处理后,将结果收录在页面中。当浏览器第一次请求使用其他页面的页面时,web容器首先编译被收录的页面,然后将编译过程的结果收录在页面中,再编译被收录的页面,最后编译这两个页面。合并的结果返回给浏览器。
请求转发:
动态收录和静态收录的区别