1.JSP简介
JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
JSP 的主要作用是代替 Servlet 程序回传 HTML 页面的数据。
因为 Servlet 程序回传 HTML 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高。
2.如何创建JSP 的页面
1.首先创建一个WEB模块
2.在web目录下New JSP/JSPX完成创建JSP页面
注:
jsp 页面和 html 页面一样,都是存放在 web 目录下。访问也跟访问 html 页面一样。
例:
a.jsp 页面 访问地址是 =======>>>>>> http://ip:port/工程路径/a.jsp
3.JSP结构
3.1 JSP 引擎
网络服务器需要一个 JSP 引擎,也就是一个容器来处理 JSP 页面,容器负责截获对 JSP 页面的请求。比较常见的引擎为Tomcat,把支持JSP的web服务器配置好后,就可以在客户端通过浏览器来访问JSP页面了
3.2 Web 服务器使用JSP创建网页步骤
-
浏览器发送一个 HTTP 请求给服务器。
-
Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。
-
JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。
-
JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。
-
Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
-
Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到浏览器中。
-
最终,Web 浏览器处理 HTTP response 中动态产生的HTML网页
注:
jsp 页面本质上是一个 Servlet 程序。 当第一次访问 jsp 页面的时候。Tomcat 服务器会帮我们把 jsp 页面翻译成为一个 java 源文件。并且对它进行编译成 为.class 字节码程序;
jsp 翻译出来的 java 类,它间接了继承了 HttpServlet 类。也就是说,翻译出来的是一个 Servlet 程序。
4.JSP的三种语法
4.1 jsp 头部的 page 指令
jsp 的 page 指令可以定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- language 属性 表示 jsp 翻译后是什么语言文件。暂时只支持java。
- contentType 属性 表示 jsp 返回的数据类型是什么。也是源码中response.setContentType()参数值
- pageEncoding 属性 表示当前 jsp 页面文件本身的字符集
- import 属性 跟 java 源代码中一样。用于导包,导类。
- errorPage 属性 设置当 jsp 页面运行时出错,自动跳转去的错误页面路径
(这个路径一般都是以斜杠打头,它表示请求地址为 http://ip:port/工程路径/) - isErrorPage 属性 设置当前 jsp 页面是否是错误信息页面。默认是 false。如果是 true 可以 获取异常信息。
- session 属性设置访问当前 jsp 页面,是否会创建 HttpSession 对象。默认是 true。
- extends 属性 设置 jsp 翻译出来的 java 类默认继承谁
下面两个属性是给 out 输出流使用
- autoFlush 属性 设置当 out 输出流缓冲区满了之后,是否自动刷新冲级区。默认值是 true。
- buffer 属性 设置 out 缓冲区的大小。默认是 8kb
4.2 jsp 中的常用脚本
4.2.1 声明脚本(极少使用)
声明脚本的格式是: <%! 声明 java 代码 %>
作用:可以给 jsp 翻译出来的 java 类定义属性和方法甚至是静态代块、内部类等。
例:声明类方法
<%!
public int abc(){
return 23333;
}
%>
4.2.2 表达式脚本(常用)
表达式脚本的格式是:<%=表达式%>
作用:在 jsp 页面上输出数据。
表达式脚本的特点:
- 所有的表达式脚本都会被翻译到_jspService() 方法中
- 表达式脚本都会被翻译成为 out.print()输出到页面上
- 由于表达式脚本翻译的内容都在_jspService() 方法中,所以_jspService()方法中的对象都可以直接使用。
- 表达式脚本中的表达式不能以分号结束
jspService() 方法:
void _jspService(HttpServletRequest request,
HttpServletResponse response)
{
// 服务端处理代码
}
示例:
<%=12 %>
<%=12.12 %>
<%="字符串" %>
<%=map%>
<%=request.getParameter("username")%>
4.3代码脚本
代码脚本的格式是:
<% java 语句 %>
作用:可以在 jsp 页面中,编写我们自己需要的功能(写的是 java 语句)。
代码脚本的特点是:
- 代码脚本翻译之后都在_jspService 方法中
- 代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用。
- 还可以由多个代码脚本块组合完成一个完整的 java 语句。
- 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据
示例:
<%
int i = 13 ;
if (i == 12){
%>
<h1>哈哈哈哈</h1>
<%} else {
%>
<h1>啦啦啦啦</h1>
<%
}
%>
输出结果:
4.4 jsp中的注释
语法 | 描述 |
---|---|
<%-- 注释 --%> | JSP注释,注释内容不会被发送至浏览器甚至不会被编译 |
<!-- 注释 --> | HTML注释,通过浏览器查看网页源代码时可以看见注释内容 |
<% | 代表静态 <%常量 |
%> | 代表静态 %> 常量 |
\' | 在属性中使用的单引号 |
\" | 在属性中使用的双引号 |