抓取jsp网页源代码(Java开发中常见的JSP技术(一)(组图))
优采云 发布时间: 2021-11-12 18:21抓取jsp网页源代码(Java开发中常见的JSP技术(一)(组图))
一、JSP 技术 1.jsp 脚本和注释
jsp 脚本:
1) ----- 内部java代码翻译成service方法。
2) ----- 会在service方法里面翻译成out.print()
3) ---- 将翻译成servlet成员的内容
jsp 注释:不同注释的可见范围不同
1)Html 注释:---可见范围jsp源代码,翻译后的servlet,页面显示html源代码
2)java comment://single-line comment /*multi-line comment*/ --可见范围jsp源代码翻译servlet
3)jsp 注释:----- 可见范围 jsp 源码可见
2. jsp-----jsp的运行原理本质上是一个servlet(面试)
jsp在第一次访问时会被web容器翻译成servlet,然后执行
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
PS:翻译后的servlet可以在Tomcat的工作目录中找到
3. jsp使用说明(三)
JSP 的指令是指导 JSP 翻译和运行的命令。 JSP包括三大指令:
1)页面指令---属性最多的指令(实际开发中页面指令默认)属性最多的指令,根据不同的属性,引导整个页面的特性
格式:
常用属性如下:
language:可以嵌入jsp脚本的语言类型
pageEncoding:当前jsp file-contentType 的编码可以收录在里面
contentType: response.setContentType(text/html;charset=UTF-8)
session:翻译时jsp是否自动创建session
import:导入java包
errorPage:当前页面有错误时跳转到哪个页面
isErrorPage:当前页面为错误处理页面
2)include 指令
页面收录(静态收录)指令,可以将一个jsp页面收录到另一个jsp页面中
格式:
3)taglib 指令
引入jsp页面中的标签库(jstl标签库、struts2标签库)
格式:
4. jsp内置/隐式对象(9)-----笔试
jsp翻译成servlet后,service方法中定义并初始化了9个对象。我们可以在jsp脚本中直接使用这9个对象。
姓名
类型
说明
出
javax.servlet.jsp.JspWriter
用于页面输出
请求
javax.servlet.http.HttpServletRequest
获取用户请求信息,
回复
javax.servlet.http.HttpServletResponse
从服务器到客户端的响应信息
配置
javax.servlet.ServletConfig
服务器配置,可以获取初始化参数
会话
javax.servlet.http.HttpSession
用于保存用户信息
申请
javax.servlet.ServletContext
所有用户的共享信息
页面
java.lang.Object
指的是当前页面转换后的Servlet类的实例
页面上下文
javax.servlet.jsp.PageContext
JSP 页面容器
例外
java.lang.Throwable
表示异常发生在JSP页面,只在错误页面有效
(1)输出对象
输出类型:JspWriter
out的作用是想让客户端输出内容----out.write()
out buffer的默认8kb可以设置为0,表示out buffer的内容被关闭,直接写入响应buffer
(2)pageContext 对象
jsp页面的上下文对象有如下功能:
page 对象和 pageContext 对象不是一回事
1)pageContext 是一个域对象
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(字符串名称)
pageContext 可以访问其他指定域的数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次从pageContext域、请求域、会话域、应用域获取属性。进入域后,就不会往后看。
四个范围的总结:
pageContext domain:当前jsp页面范围
请求域:一个请求
会话域:一个会话
应用域:整个网络应用
2)你可以得到另外8个隐式对象
例如:pageContext.getRequest()
pageContext.getSession()
5. jsp标签(动作)
1)页面收录(动态收录):
2)请求转发:
静态收录和动态收录的区别?
二、EL 技术 1. EL 表达概述
EL(Express Lanuage)表达式可以嵌入到jsp页面中,减少jsp脚本的编写。 EL的目的是替代jsp页面中脚本的编写。
2. EL从域中取出数据(EL最重要的作用)
jsp 脚本:
EL 表达式替换上面的脚本:${requestScope.name}
EL的主要功能是获取四个域的数据,格式为${EL表达式}
EL 获取 pageContext 字段中的值:${pageScope.key};
EL 获取请求字段中的值:${requestScope.key};
EL 获取 session 字段中的值:${sessionScope.key};
EL 获取应用字段中的值:${applicationScope.key};
EL 从四个字段中获取一个值 ${key};
---同样是从pageContext域、请求域、会话域、应用域依次获取属性。在某个域中获取后,就不会向后看。
3. EL的11个内置对象
pageScope、requestScope、sessionScope、applicationScope----在JSP中获取域中的数据
param,paramValues-接收参数相当于request.getParameter() rquest.getParameterValues()
header,headerValues-获取相当于request.getHeader(name)的请求头信息
initParam-获取等效于this.getServletContext().getInitParameter(name)的全局初始化参数
WEB开发中的cookie-cookie相当于request.getCookies()---cookie.getName()---cookie.getValue()
WEB开发中的pageContext-pageContext。
pageContext 获取其他八个对象
${pageContext.request.contextPath} 相当于这段代码不能实现WEB应用的名字
4. EL 执行表达式
例如:
${1+1}
${空用户}
${user==null?true:false}
一、JSTL 技术 1. JSTL 概述
JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入到JSP页面中,以标签的形式完成业务逻辑等功能。 jstl的作用是替换jsp页面中与el相同的脚本代码。 JSTL标准标准标签库有5个子库,但随着发展,目前经常使用核心库
标签库
标签库的URI
前缀
核心
c
I18N
文件
SQL
sql
XML
x
功能
fn
2. JSTL下载导入
JSTL 下载:
从Apache的网站下载JSTL的JAR包。到“”网站下载JSTL安装包。 jakarta-taglibs-standard-1.1.2.zip,然后解压下载的JSTL安装包。这时候可以在lib目录下看到两个JAR文件,分别是jstl.jar和standard.jar。其中,jstl.jar文件收录JSTL规范中定义的接口和相关类,standard.jar文件收录用于实现JSTL的.class文件和JSTL中的5个标签库描述符文件(TLD)
将两个jar包导入到我们项目的lib中
使用jsp的taglib指令导入核心标签库
3. JSTL核心库常用标签
1)标签
其中 test 是返回布尔值的条件
2)标签
有两种用法组合:
四、javaEE 开发模型 1. 什么是模式
模式开发过程中总结的“套路”,总结出一套常规的设计模式
2. javaEE体验模式
model1 模式:
技术构成:jsp+javaBean
model1的缺点:业务复杂,jsp页面比较混乱。
model2 模式
技术构成:jsp+servlet+javaBean
model2的优点:利用各个技术擅长的方面进行开发
Servlet:擅长处理java业务代码
jsp:擅长页面的真实性
MVC:----Web开发的设计模式
M:Model---model javaBean:封装的数据
V: View-----view jsp: 只显示页面
C:Controller----Controller Servelt:获取数据-封装数据-传递数据-分配jsp页面显示
3. JavaEE的三层架构
在服务器开发过程中,分为三层
Web 层:与客户端交互
服务层:复杂的业务处理
dao层:与数据库交互
在开发实践中,三层架构通过包结构体现
MVC 和三层架构是什么关系?
总结:
EL 表达式
从域中检索数据${域中存储的数据的名称}
${pageContext.request.contextPath}
JSTL 标签(核心库)
javaEE 三层架构+MVC
Web层:采集页面数据、封装数据、传输数据、指定响应jsp页面
服务层:编写逻辑业务代码
dao层:数据库访问代码的编译