JSP简介
由于Servlet的编码、部署和调试任务繁琐、
生成动态网页繁琐,不利于项目分工 等缺陷,产生了JSP。
JSP是主要用于编写网页动态页面:
是由HTML语句和潜逃在其中的java代码组成的一个普通的文本文件,其扩展名为.jsp
JSP与HTML编写方式如出一辙,只是里面可以嵌套其他代码,页面能够更方便的与后台交互。
JSP运行机制
JSP生命周期:页面翻译、页面编译、类装载、实例化、页面初始化、页面服务、页面销毁
Web容器第一次接收到某个JSP页面的请求后,首先会自动将该JSP页面翻译成Servlet代码
JSP中嵌入java代码
<%! 声明 %>
<% 代码 %>
<%= 脚本表达式 %>
例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
<%! int n = 0; //声明一个变量n,值为0 %>
<% n += 10; //将变量n+10 %>
<label><%= n %></label> <!-- 将n的值放到label标签中,该标签显示结果将会是 10 -->
</body>
</html>
JSP指令
jsp中有三种类型的指令:
page
为当前页面提供处理指令(就像上面实例中的第一句)
include
用于把另一个文件包含在jsp中
taglib
指定如何包含和访问自定义标签库
page指令
属性名 | 值 | 默认值 |
language | 脚本语言名称 | "java" |
Info | 网页信息 | 无 |
contentType | MIME类型和JSP编码 | "text/html;charset=ISO-8859-1" |
import | 类和包 | none |
buffer | 缓冲区大小 | 8192 |
autoFlush | 缓冲满,刷新还是抛出异常 | "true" |
session | 访问页面是否创建会话 | "true" |
isThreadSafe | 线程是否安全 | "true" |
errorPage | URL | none |
isErrorPage | 布尔值 | "false" |
include指令
file属性
要包含的文件
注意:被包含的文件不要与包含文件存在重复HTML标签,而且不能是URL变量
JSP隐式对象
jsp隐式对象就是Web容器在翻译jsp时会自动创建的对象
对象名 | 描述 | 作用域 |
request | 代表与请求相关的HttpServletRequest对象 | request |
response | 代表与响应相关的HttpServletResponse对象 | page |
pageContext | 代表封装请求某个JSP页面时请求环境的pageContext对象 | page |
session | 代表特定用户请求会话的HttpSession对象。该对象只有在JSP页面参与一个HTTP会话时才有意义 | session |
application | 代表Web应用程序的ServletContext对象 | application |
out | 代表与响应输出流相关的JspWriter对象 | page |
config | 代表JSP 页面的Servlet相关的ServletConfig对象 | page |
page | 等于Java编程语言中的this变量 | page |
exception | 代表JSP页面抛出的Trowable对象。这个对象只能在JSP错误页面中使用 | page |