文章内容输出来源:拉勾教育JAVA就业训练营
总目录跳转链接:总目录
如有侵权请联系本人
邮箱:xiaogueika@tom.com
一、JSP的概述(熟悉)
JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为xxx.jsp。
与Servlet不同,JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容。
1. JSP示例
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello Time</title>
</head>
<body>
现在的时间是:<%= new Date()%>
</body>
</html>
二、 JSP的语法(熟悉)
1. JSP语法结构
- 声明区
- 程序代码区
- 表达式
- 注释
- 指令和动作
- 内置对象
1.1 声明区
基本语法:<%! %>
说明:可以定义全局变量、方法、类。
<%!
int i;
public void setName(){… …}
%>
1.2 程序代码区
基本语法:<%程序代码区%>
说明:可以定义局部变量以及放入任何的Java程序代码。
int j;
for (int k=0; k<10; k++) {
… …
}
1.3 表达式
基本语法:<%=… …%>
说明:可以输出一个变量或一个具体内容,但=后面必须是字符串变量或者可以被转换成字符串的表达式。
注意:不需要以;
结束,只有一行
<%=“hello world”%>
<%=i+1%>
1.4 注释
格式:
<!--… …--> HTML文件的注释,浏览器可以查看到
<%--… …--%> JSP文件的注释,浏览器看不到
<%//… …%> Java语言中的单行注释,浏览器看不到
<%/*… …*/%> Java语言中的多行注释,浏览器看不到
注释的内容不会被执行
1.5 指令和动作
指令格式: <%@指令 属性=“属性值”%>
指令的属性可以设定多个。
JSP常用指令有:page
、taglib
、include
1.5.1 page指令
page
指令用于导包和设置一些页面属性,常用属性如下:
页面属性 | 说明 |
---|---|
import | 导入相应的包,惟一允许在同一文档中多次出现的属性 |
contentType | 设置Content-Type响应报头,标明即将发送到浏览器的文档类型 |
pageEncoding | 设置页面的编码 |
language | 指定页面使用的语言 |
session | 控制页面是否参与HTTP会话 |
errorPage | 处理当前页面中抛出但未被捕获的任何异常 |
isErrorPage | 当前页是否可以作为其他页面的错误处理页面 |
1.5.2 taglib指令
taglib
指令用来扩展JSP程序的标签元素,引入其他功能的标签库文件。
<!-- prefix属性用于指定库前缀 -->
<!-- uri属性用于指定库的标识 -->
<%@taglib uri=“tagLibary” prefix=“prefix”%>
1.5.3 include指令
include指令用于引入另一个JSP程序或HTML文件等,格式如下:
<%@include file=“被包含的文件地址%>
JSP引擎会在JSP文件的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。
1.5.4 jsp:include/jsp:param
- jsp:include动作用于引入另一个JSP程序或HTML文件等。
- 执行到include时,被include的文件才会被编译。
- 如果include的是jsp文件,那它不会被转换成Servlet文件。
<jsp:include page=“URLSpec” flush=“true”/>
<jsp:include page=“URLSpec” flush=“true”>
<jsp:param name=“key” value=“value”/>
</jsp:include>
1.5.5 include指令和include动作的区别
- include指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入再编译执行(静态包含)。
- include动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入(动态包含,推荐)。
1.5.6 jsp:forward/jsp:param
- forward动作用于在JSP中实现转发,将请求转发到另一个指定的JSP程序或者Servlet中处理。
<jsp:forward page=“urlSpec” flush=“true”/>
<jsp:forward page=“urlSpec”>
<!-- 用于指定参数和其对应的值 -->
<jsp:param name=“key” value=“value”/>
</jsp:forward>
1.6 JSP内置对象(重点)
在JSP程序中有9个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量。
在JSP转换成Servlet后,会自动追加这些变量的定义,使用内置对象可以简化JSP的开发。
对象名称
对象变量 | 对象类型 | 作用 |
---|---|---|
out | JSPWriter | 输出流 |
request | HttpServletRequest | 请求信息 |
response | HttpServletResponse | 响应信息 |
session | HttpSession | 会话 |
application | ServletContext | 全局的上下文对象 |
pageContext | PageContext | JSP页面上下文 |
page | Object | JSP页面本身 |
config | ServletConfig | Servlet配置对象 |
exception | Throwable | 捕获网页异常 |
1.6.1 out内置对象
out内置对象是一个缓冲的输出流,用来给客户端输出信息。
方法声明 | 功能介绍 |
---|---|
void println(String x) | 向客户端输出各种类型数据 |
void newLine() | 输出一个换行符 |
void close() | 关闭输出流 |
int getBufferSize() | 返回缓冲区的大小 |
int getRemaining() | 返回缓冲区中未使用的字节数 |
void flush() | 输出缓冲区里的数据 |
void clearBuffer() | 清除缓冲区里的数据,同时把数据输出到客户端 |
void clear() | 清除缓冲区里的数据,但不把数据输出到客户端 |
1.6.2 request内置对象
request对象封装的是调用JSP页面的请求信息,它是HttpServletRequest接口的一个实例。
该对象的属性值只在一个请求中保存。
方法声明 | 功能介绍 |
---|---|
String getMethod() | 返回客户端向服务器端传送数据的方式 |
String getParameter(String name) | 返回客户端向服务器端传送的参数值 |
String[] getParameterValues( String name) | 获得指定参数的所有值 |
String getRequestURI() | 获得请求地址 |
String getRemoteAddr() | 返回发送请求的客户端或最后一个代理的IP地址 |
int getRemotePort() | 返回发送请求的客户端或最后一个代理的端口号 |
String getServerName() | 获取服务器的名字 |
int getServerPort() | 获取服务器端的端口 |
void setAttribute(String name,Object o) | 在此请求中存储属性。属性在请求之间重置 |
Object getAttribute(String name) | 将指定属性的值作为对象返回,若不存在则返回空值 |
1.6.3 response内置对象
response对象用于给客户端相应输出处理结果,它是HttpServletResponse接口的一个实例。
经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL。
方法声明 | 功能介绍 |
---|---|
void addCookie(Cookie cookie) | 添加一个Cookie对象,用于在客户端保存特定的信息 |
void addHeader(String name, String value) | 添加HTTP头信息,该Header信息将发送到客户端 |
boolean containsHeader(String name) | 判断指定名字的HTTP文件头是否存在 |
void sendRedirect(String location) | 重定向JSP文件 |
void setContentType(String type) | 设置类型与编码方式 |
1.6.4 session内置对象
懒得加了。你兴趣的留言。我再补充