JSP
Jsp(java server page ) 的 动态网页编程技术,是服务器的动态资源;
长期的软件实践中,人们逐渐把 servlet 作为 web 应用中的控制器组件来使用, 而把 JSP 技术作为数据显示模板来使用。
其实 Jsp 就是一个 Servlet,当我们第一次访问 Jsp 的时候,Jsp 引擎都会将这个 Jsp 翻译 成一个 Servlet,这个文件存放在 Tomcat 中的 work 目录中。
基础语法
1. 注释
在 JSP 中支持两种注释的语法操作,一种是显示注释,这种注释是允许客
户端看见的; 另一种是隐式注释,此种注释是客户端无法看见的
① 显示注释语法:从 HTML 风格继承而来
② 隐式注释语法:从 JAVA 风格继承;JSP 自己的注释
JSP 的三种注释方式:
1) // 注释,单行注释 /* 多行注释*/
2)<!-- HTML 风格的注释 -->
3)<%-- JSP 注释 --%>
2. Scriptlet
在 JSP 中最重要的部分就是 Scriptlet( 脚本小程序), 所有嵌入在 HTML 代
码中的 Java 程序 都必须使用 Scriptlet 标记出来,在 JSP 中一共有三种
Scriptlet 代码:
第一种:<% %>: java 脚本段,可以定义局部变量、编写语句
第二种:<%! %>:声明,可以定义全局(成员)变量、方法、类
第三种:<%= %>:表达式,数据一个变量或具体内容
3. JSP 的指令标签
JSP 的指令标签用来控制整个 jsp 的行为,就当前 JSP 页面的某些方面对
JSP 转换器作出指示。
1) page 指令
掌握使用 page 指令常用的属性 contentType 和 pageEncoding,分别用来
指定 MIME 类型 和编码格式。import 属性,用来引入其他包,和 java 中 import
语句作用相同。
MIME 类型
<%@ page contentType=”text/html;charset=UTF-8”%>
手误<%@ page contentType=”test/html;charset=UTF-8”%>此时则变成下载
文件字符编码
contentType 主要的功能是用来设置 MIME(页面响应类型),而
charset=”UTF-8” 指定了编码,利用 pageEncoding=”UTF-8”也能指定编码,前者更常用。
<%@page contentType=”text/html” pageEncoding=”UTF-8”%>
在 JSP 中,如果 charset 存在,那么 JSP 的编码由 charset 决定,而如果
不存在才会由 pageEncoding 来决定,如果都不存在,则使用 ISO-8859-1 编码。
导包
page 指令中存在 import 属性,所以导包就可以正确使用了,在整个 page
指令的属性中, 只有 import 语句可以多次出现,其他属性都只能设置一次。
能导包意味着可以直接在 jsp 中 链接数据库。
2) include 静态包含
<%@ include file=”要包含的文件路径”%>相对路径
<%@include file="include.jsp"%>
或
<%@include file="include.html"%>
静态包含就是将内容进行了直接的替换,就好比程序中定义的变量一样 是
在 servlet 引擎转译时,就把此文件内容包含了进去(两个文件的源代码整合到
一起, 全部放到_jspService 方法中),所以只生成了一个 servlet,所以两个页
面不能有同名的变量。 运行效率高一点点。耦合性较高,不够灵活。
3) taglib 导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
当使用到第三方标签库时需要通过 taglib 标签进行导入
4. JSP 动作标签
动作标签,它们被编译成执行某个操作的 Java 代码,例如访问某个 Java 对
象,或者调用某个方法。JSP 容器有自己支持的标准动作。除标准动作之外,还
可以创建指定的标签, 用来执行某些操作。这些 jsp 的动作标签,与 html 提
供的标签有本质的区别:
* 动作标签是由 tomcat(服务器)来解释执行!与 java 代码一样,都是在服务器
端执行
* html 由浏览器来执行!
格式如下:
<Jsp:动作标签….></jsp:动作标签>
include 动态包含
include 动作用于动态地包含另一个资源,它可以包含另一个 JSP 页面、一
个 Servlet 或 者一个静态的 HTML 页面。
使用包含操作,可以将一些重复的代码包含进来继续使用,从正常的页面组
成来看,有时可能分为几个区域。而其中的一些区域可能是一直不需要改变的,
改变的就其中的一个具体内容区域。现在有两种方法可以实现上述功能。
静态包含、 动态包含,静态包含使用 include 指令即可,动态包含则需要使用 include 动作标签。
动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当
运行时,才会动态包含进来,好比方法的调用。
<jsp:include page="include.jsp"></jsp:include>
注意:动态包含,中间不要加任何内容,包括空格,除非确认要使用参数,否则
报错!
使用动态包含还可以通过在页面之间传参。接收参数通过
request.getParameter(name)来完成.
注意:有些对象在 JSP 中能够直接使用,可以通过观察.java 代码知道。目
前我们只需要知道 request,response,session,application 可以直接使用即可。