1、jsp概述
一种动态网页技术标准,是基于Java语言的一种技术,有 跨平台,业务代码分离,组件重用,继承Servlet功能,预编译等特征,jsp的本质就是Servlet。
2、HTML,Servlet和JSP
类别 | 适用场景 |
---|---|
HTML | 只能开发静态资源,不能包含java代码,无法添加动态数据。 |
Servlet | 写java代码,可以输出页面内容,但是很不方便,开发效率极低。 |
JSP | 它包括了HTML的展示技术,同时具备Servlet输出动态资源的能力。但是不适合作为控制器来用。 |
3、执行过程
JSP的原理:
客户端提交请求
——Tomcat服务器解析请求地址
——找到JSP页面
——Tomcat将JSP页面翻译成Servlet的java文件
——将翻译好的.java文件编译成.class文件
——返回到客户浏览器上。
4、语法
1)代码块
在jsp中,可以使用java脚本代码。形式为:<% 此处写java代码 %>
里面的内容由tomcat负责翻译,翻译之后是service方法的成员变量
在实际开发中,极少使用此种形式编写java代码。
<!--Java代码块-->
<% out.println("这是Java代码块");%>
<hr/>
2)表达式
在jsp中,可以使用特定表达式语法,形式为:<%=表达式%>
<!--JSP表达式-->
<%="这是JSP表达式"%><br/>
就相当于<br/>
<%out.println("这是没有JSP表达式输出的");%>
3)声明
在JSP中也可以声明一些变量,方法,静态方法,形式为:<%! 声明的内容 %>
里面的内容将会被tomcat翻译成全局的属性或者类方法。
<!--JSP声明-->
<%! String str = "声明语法格式";%>
<%=str%>
4)注释
JSP中的注释,形式为:<%--注释--%>
<%--JSP注释--%>
<!--HTML注释-->
5、指令
1)page
<%@page 属性名=属性值 属性名=属性值......%>
小贴士:当在errorpage上使用了isErrorPage=true之后,ie8有时候不能正常显示
配置全局错误页面:web.xml
2)include
<%@include file="被包含的页面" %>
3) taglib
<%taglib uri="" prefix=""%>
作用:该指令用于引入外部标签库。html标签和jsp标签不用引入。
属性:
uri:外部标签的URI地址。
prefix:使用标签时的前缀。
6、细节
1)九大隐式对象
隐式对象是在jsp中,可以不声明就直接使用的对象。
隐式对象名称 | 类型 | 备注 |
---|---|---|
request | javax.servlet.http.HttpServletRequest | |
response | javax.servlet.http.HttpServletResponse | |
session | javax.servlet.http.HttpSession | Page指令可以控制开关 |
application | javax.servlet.ServletContext | |
page | Java.lang.Object | 当前jsp对应的servlet引用实例 |
config | javax.servlet.ServletConfig | |
exception | java.lang.Throwable | page指令有开关 |
out | javax.servlet.jsp.JspWriter | 字符输出流,相当于printwriter |
pageContext | javax.servlet.jsp.PageContext | 很重要 |
1.PageContext对象
-
简介
它是JSP独有的对象,Servlet中没有这个对象。本身也是一个域(作用范围)对象,但是它可以操作其他3个域对象中的属性。而且还可以获取其他8个隐式对象。
-
生命周期
它是一个局部变量,所以它的生命周期随着JSP的创建而诞生,随着JSP的结束而消失。每个JSP页面都有一个独立的PageContext。
7、四大作用域
域对象名称 | 范围 | 级别 | 备注 |
---|---|---|---|
PageContext | 页面范围 | 最小,只能在当前页面用 | 因范围太小,开发中用的很少 |
ServletRequest | 请求范围 | 一次请求或当期请求转发用 | 当请求转发之后,再次转发时请求域丢失 |
HttpSession | 会话范围 | 多次请求数据共享时使用 | 多次请求共享数据,但不同的客户端不能共享 |
ServletContext | 应用范围 | 最大,整个应用都可以使用 | 尽量少用,如果对数据有修改需要做同步处理 |
8、MVC模型
M(Model):模型,用于封装数据,封装的是数据模型
V(view):视图,用于显示数据,动态资源用jsp页面,静态资源用HTML页面
C(Controller):控制器,用于处理请求和响应,例如Servlet
1)框架和设计模式的区别
MVC是一种设计模式。
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
2)优点
- 1.耦合性低
- 2.重用性高
- 3.部署快,生命周期成本低
- 4.可维护性高
评论区