jsp入门
jsp老弟是啥?
jsp全称是Java Server Pages,是Java所提供的一门用于开发动态WEB资源的技术。
特点
编写JSP就像编写HTML一样
和HTML的区别
HTML只能向客户端提供静态数据
JSP技术允许我们在页面中嵌套Java代码,从而可以向客户端提供动态的数据
基本原理
JSP文件第一次被客户端访问时(也包括JSP文件修改后的第一次被访问),WEB服务器会把JSP文件翻译成一个Servlet。
客户端访问JSP文件,其实访问的就是JSP文件翻译后的Servlet,
JSP的底层原理其实就是Servlet。
声明
声明变量
在<%!
和%>
标记之间定义的变量,通过JSP引擎转译为Java文件时,将成为某个类的成员变量(即全局变量)。变量的类型可以Java中的任意数据类型。所定义的变量在所定义的JSP页面内有效,即在本JSP页面中,任何Java程序片中都可以使用这些变量。
声明方法
在<%!
和%>
标记之间定义的方法在所定义的JSP页面内有效,即在本JSP页面中,任何Java程序片中都可以调用这些方法。
输出表达式
在<%=
和%>
标记间插入一个表达式,这个表达式必须能计算出数据值,可以把Java数据类型转换成字符串类型,然后使用隐含对象out以HTML格式的形式输出。表达式的值由服务器负责计算,并将计算结果以字符串形式发送到客户端现实。
语法格式:
<%= expression %>
注释
HTML的注释:<!-- -->
Java代码的注释://,/**/
脚本片段的注释:<%-- --%>
程序语句
可以在<%
和%>
标记间包含多条Java语句,构成Java代码块,开发人员可以在JSP中使用Java语言的功能,包括Java的流程控制语句,语法格式如下:
指令
指令并不会直接产生任何可见的输出,作用是告诉WEB服务器如何处理JSP页面的其他部分。
page
用于定义JSP页面的各种属性,无论定义在JSP页面的哪个位置,所影响的都是整个JSP页面,
建议:将page指令定义在JSP页面的起始位置
属性:
contentType
:设置响应的类型和编码pageEncoding
:设置JSP页面的编码,也设置JSP页面翻译成Servlet源文件的编码import
:导入JSP页面所需要使用的Java类
默认已经导入的类
java.lang.*
;javax.servlet.*
;javax.servlet.jsp.*
;javax.servlet.http.*
;
session
:设置是否自动创建内置对象session,默认值是true
buffer
:设置内置对象out的缓冲区大小,默认值是8k
autoFlush
:设置内置对象out是否会自动刷新,默认值是true
extends
:设置JSP翻译后的Servlet要继承哪个类,默认值是HttpJspBase
language
:设置脚本语言,只有一个值就是java,java也是默认值
isThreadSafe
:设置JSP是否是多线程,默认值是true
incldue指令
include指令可以用于在当前JSP页面中包含另外一个静态文件的内容,被称为文件加载指令。该指令在JSP页面被编译之前被挂靠,可以将其他静态文件的内容在编译之前插入到当前的JSP页面中,被插入的文件可以是JSP文件、HTML文件、Java程序或其它静态文本文件,但是必须要保证插入后形成新的文件符合JSP的语法规则。
语法格式如下:
<%@ include file="filename" %>
taglib指令
引入标签库
属性:
uri
:设置引入标签库的路径prefix
:设置引入标签库的别名
基本格式:
<%@ 指令名称 属性="值" %>
如:<%@ page contentType="text/html;charset=UTF-8" %>
如果一个指令有多个属性,可以把多个属性写在同一个指令中,也可以把多个属性分开来写
JSP的九大内置对象
HttpServletRequest request
: 请求对象HttpServletResponse response
: 响应对象JspWriter out
: 输出流对象HttpSession session
: 会话对象Throwable exception
: 异常对象ServletContext application
: 代表了整个WEB应用ServletConfig config
: 配置参数,用于获取Servlet的配置参数Object page Servlet
:对象,方法中的this对象PageContext pageContext
: JSP页面的上下文对象
PageContext
PageContext是JSP技术中最重要的一个对象,他代表了JSP页面的运行环境,
PageContext封装了其他八个内置对象,
PageContext也是一个域对象,可以用来保存数据,范围是当前页面,
PageContext提供了一些WEB开发的常用功能,比如转发和包含,还可以操作检索其他域对象中的数据。
JSP的四大域对象
pageContext
: 当前页面request
: 当前请求session
:整个会话(整个浏览器的页面)application
: 整个应用