什么是JSP
- JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
- JSP全称Java Server Pages,是建立在JAVA基础上的一种网络编程语言,JSP是一种Java servlet(JSP在执行前首先被编译成一个Servlet),主要用于实现Java web应用程序的用户界面部分。
- 网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
jsp <-> java(servlet)
C:\Users\卢荟\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\20e10a3d-4da9-4eee-b7fa-327b2feb3d84\work\Catalina\localhost\jsp_war_exploded\org\apache\jsp
类似于上述文件目录(tomcat下的webapp目录下存放工程项目,只不过现在tomcat在idea里用)即找到生成的java文件。
可见JSP本质上就是一个Servlet,只不过无需配置映射路径,Web Server会根据路径查找对应的.jsp
文件,如果找到了,就自动编译成Servlet再执行。
JSP语法
JSP注释
语法 | 描述 |
---|---|
<%– 注释 –%> | JSP注释,注释内容不会被发送至浏览器甚至不会被编译 |
HTML注释,通过浏览器查看网页源代码时可以看见注释内容 |
💡脚本(在JSP中编写Java代码)
先导入jsp-api.jar和servlet-api.jar(tomcat自带,但是IDE并无提示会报红)
语法 | 描述 |
---|---|
<% 代码片段 %> | 一般定义变量和编写语句。 |
<%! 声明代码 %> | 可以声明常量,编写方法,编写类 |
<%= 表达式 %> | 表达式被转化成String,然后插入到表达式出现的地方 |
1 | <%! |
对于流程控制语句的编写可能稍微繁琐
1 | <% int day = 1 %> |
当然也可以用out对象输出
1 | <% |
JSP指令
JSP指令用来设置与整个JSP页面相关的属性。
JSP指令 | 描述 |
---|---|
<%@ page 属性名=”属性值” %> | 定义页面的依赖属性,导包 |
<%@ include 属性名=”属性值” %> | 包含其他文件(静态包含) |
<%@ taglib 属性名=”属性值” %> | 引入标签库的定义,可以是自定义标签 |
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
JSP行为
自行学习
1 | <jsp:行为名 属性名="属性值" /> |
中文编码问题
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
💡JSP九大内置对象与四大作用域
四大域对象
对象 | 作用域 | 变化操作 |
---|---|---|
pageContext | 当前页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。 | 跳转页面 |
request | 当次请求有效,可以跨越forward()不重定向跳转前后的两页,可以通过setAttribute()方法实现页面中的信息传递。 | 两次请求 |
session | 当前会话有效,指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应 | 关闭浏览器 |
application | 所有应用程序中有效,整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。 | 关闭服务器 |
1 | <% |
九大内置对象
在生成的java文件中可以找到
对象 | 描述 | 作用域 |
---|---|---|
request | javax.servlet.http.HttpServletRequest 类的实例 | request |
response | javax.servlet.http.HttpServletResponse类的实例 | pageContext |
out | javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。 | pageContext |
session | javax.servlet.http.HttpSession 类的实例 | session |
application | javax.servlet.ServletContext 类的实例。与应用上下文有关 | application |
config | javax.servlet.ServletConfig 类的实例。这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。 | pageContext |
pageContext | javax.servlet.jsp.PageContext 类的实例,提供对JSP页面所有对象以及命名空间的访问 | pageContext |
page | 指向当前JSP对象 | pageContext |
exception | exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,<%@ page …… isErrorPage=”true” %> | pageContext |
EL表达式与JSTL标准标签库
自行学习
💡MVC框架
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。
- Model(模型):如一个存取数据的对象或 JavaBean
- View(视图):如jsp动态页面
- Controller(控制器):控制数据流向模型对象,并在数据变化时更新视图,使视图与模型分离开,如servlet
MVC重要特点就是两种分离:
- 视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部(数据库也是一种外部组件)依赖利于测试。
- 视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。
MVC优缺点:
- 优点:低耦合、重用性高、生命周期成本低、部署快、可维护性高
- 缺点:没有明确的定义、不适合小、中型应用程序、增加系统结构和实现的复杂性、视图对模型数据的低效率访问
作业
在上一个文档中已经声明,这两节课只要交一个作业就行。