目录
1. JSP 基础语法
1.1 JSP 简介
JSP 全名为 Java Server Pages ,其根本是一个简化的 Servlet 设计,他实现了再 Java 当中使用 HTML 标签。 JSP 是一种动态网页技术准,也是 JAVAEE 的标准。JSP 与 Servlet 一样,是在服务器端执行的。
1.2 对比
- JSP :Java 平台,安全性高,适合开发大型的,企业级的 Web 应用程序。(电子银行,网上证券交易所等)
- Asp.net :.Net 平台,简单易学。但是安全性以及跨平台性差。
- Php :简单,高效,成本低开发周期短,特别适合中小型企业去的 Web 应用开发。
1.3 JSP 页面元素构成
1.3.1 JSP 指令
- page 指令:通常位于 jsp 页面的顶端,同一个页面可以有多个 page 指令。
<%@ page attribute="value" %>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
// language :定义 JSP 页面所用的脚本语言,默认是 Java
// import :导入要使用的 Java 类
// contentType :指定当前 JSP 页面的 MIME 类型和字符编码
// pageEncoding :指定页面使用字符编码
- include 指令:将一个外部文件嵌入到当前 JSP 文件中,同时解析这个界面中的 JSP 语句。
<%@ include file="文件相对 url 地址" %>
- taglib 指令:使用标签库定义新的自定义标签,在 JSP 页面中启用定制行为。
<%@ taglib uri="uri" prefix="prefixOfTag" %>
1.3.2 JSP 注释
在 JSP 页面的注释
- HTML的注释:
<!--查看源代码客户端可见-->
- JSP 的注释:
<%--查看源代码客户端不可见--%>
- JSP 脚本注释:
//单行注释
/*多行
注释*/
1.3.3 JSP 脚本
在 JSP 页面中执行的 Java 代码
<% Java代码%>
<%
out.println("Hello World!");
%>
1.3.4 JSP 声明
在 JSP 页面中定义变量或者方法
<%! Java代码%>
<%!
String s = "张三"; //声明一个字符串变量
int add(int x,int y){ //声明一个返回整型的函数
return x+y;
}
%>
1.3.5 JSP 表达式
在 JSP 页面执行的表达式
<%=表达式 %> 注意表达式不以分号结束
<%!
String s = "张三";
int add(int x,int y){
return x+y;
}
%>
你好,<%=s %><br>
x+y=<%=add(10,5) %><br>
1.4 JSP 页面生命周期
- 编译阶段: servlet 容器编译 servlet 源文件,生成 servlet 类
(1)解析JSP文件。
(2)将JSP文件转为servlet。
(3)编译servlet。
- 初始化阶段:加载与 JSP 对应的 servlet 类,创建其实例,并调用它的初始化方法
jspInit()
,若需要执行自定义的 JSP 初始化任务,复写jspInit()
方法就行了,就像下面这样:
public void jspInit(){
// 初始化代码
}
//一般来讲程序只初始化一次
- 执行阶段:
调用与 JSP 对应的 servlet 实例的服务方法,这一阶段描述了 JSP 生命周期中一切与请求相关的交互行为,直到被销毁。当 JSP 网页完成初始化后, JSP 引擎将会调用jspService()
方法。jspService()
方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,就像下面这样:
void jspService(HttpServletRequest request,
HttpServletResponse response)
{
// 服务端处理代码
}
// jspService() 方法在每个 request 中被调用一次并且负责产生与之相对应的 response
- 销毁阶段:
调用与 JSP 对应的 servlet 实例的销毁方法,然后销毁 servlet 实例,需要执行任何清理工作时复写jspDestroy()
方法,比如释放数据库连接或者关闭文件夹等等。jspDestroy()
方法的格式如下:
public void jspDestroy()
{
// 清理代码
}
2. JSP 内置对象
2.1 内置对象简介
JSP 内置对象是 Web 容器创建的一组对象,不使用 new
关键字就可以使用的内置对象。
<%
out.println("Hello World!");
%>
2.2 out 对象
out 对象是 JspWriter 类的实例,是向客户端输出内容常用的对象。
常用方法
void println() //向客户端打印字符串
void clear() //清楚缓冲区的内容,在 flush 之后调用会抛出异常
void clearBuffer() //清楚缓冲区的内容,在 flush 之后调用不会抛出异常
void flush() //将缓冲区内容输出到客户端
int getBufferSize() //返回缓冲区字节数的大小,如不设缓冲区则为 0
int getRemaining() //返回缓冲区还剩余多少可用
boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常
void close() //关闭输出流
2.3 request 对象
客户端的请求信息被封装在 request 对象中,通过他才能了解到客户的需求,然后抛出响应。它是 HttpServletRequest 类的实例, request 对象具有请求域,即完成客户端的请求之前,该对象一直有效。
- 用户发送请求( request )
点击登录向服务器发送请求,在请求对象中封装了用户名和密码
常用方法
String getParameter(String name)//返回此 request 中 name 指定的参数,若不存在则返回 null
String[] getParameterValues(String name)//返回指定名称的参数的所有值,若不存在则返回 null
Object getAttribute(String name)//返回名称为 name 的属性值,如果不存在则返回 null
String getContentType()//返回 request 主体的 MIME 类型,若未知则返回 null
String getProtocol()//返回此 request 所使用的协议名和版本
int getServerPort()//返回服务器端口号
String getCharacterEncoding()//返回 request 的字符编码集名称
int getContentLength()//返回 request 主体所包含的字节数,若未知的返回 -1
String getRemoteAddr()//返回客户端的 IP 地址
String getContextPath()//返回 request URI 中指明的上下文路径
2.4 response 对象
response 对象包含了响应客户请求的有关信息,但在 JSP 中很少直接用它。它是 HttpServletResponse 类的实例。 response 对象具有页面作用域,即访问一个页面时,该页面内的 response 对象只能对这次访问有效,其它页面的 response 对象对当前页面无效。
- 服务器给用户响应(response )
服务端接收用户的请求判断用户名和密码后,给客户端发送响应页面
常用方法
void setContentType(String type)//设置响应的内容的类型,如果响应还未被提交的话
void sendRedirect(String location)//使用指定的 URL 向客户端发送一个临时的间接响应
2.5 session 对象
session 表示客户端与服务器的一次会话,Web 中的 session 指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。 session 对象是 HttpSession 类的实例。
常用方法
long getCreationTime()//返回 session 创建时间
public String getId()// 返回 session 创建时 JSP 引擎为他设的唯一 ID 号
public Object setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
String[] getValueNames()//返回一个包含此 session 中所有可用属性的数组
int getMaxInactiveInterval()//返回两次请求间隔多长时间此 session 被取消(单位秒)
2.6 application 对象
application 对象实现了用户间数据的共享,可存放全局变量,它开始于服务器的启动,终止于服务器的关闭。在用户的前后连接或不同用户之间的连接中,可以对 application 对象的同一属性进行操作,操作会影响到其他用户对此的访问。 application 对象是 ServletContext 类的实例。
常用方法
public void setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
Enumeration getAttributeNames()//返回所有可用属性名的枚举
String getServerInfo()//返回 JSP(Servlet)引擎名及版本号
2.7 page 、 pageContext 、config 、 exception 对象
- page 对象就是指向当前 JSP 页面本身,有点像类中的 this ,它是 java.lang.Object 类的实例。
- pageContext 对象提供了对 JSP 页面内所有对象及名字空间的访问,它可以访问到本页所在的 session ,也可以取本页所在的 application 的某一属性值。
- config 对象是在一个 Servlet 初始化时, JSP 引擎向它传递信息用的,此信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象)。
- exception 对象是一个异常对象,到一个页面在运行过程中发生了异常,就产生这个对象。如果一个 JSP 页面要应用这个对象,就必须把 isErrorPage 设为 true ,否则无法通过编译。