一、JSP概述
###<1>概念
java服务器页面
可以编写动态页面
其内部是以HTML标签为主,可以在HTML标签嵌套java代码
jsp文件以.jsp为后缀
jsp本质上就是一个Servlet
hello.jsp ----> tomcat---->web.xml (后缀匹配:*.jsp) ----> JspServlet ---->转译成hello_jsp.java(hello_jspSerlvet serice())的Servlet
hello_jspServlet(自动拼接了复杂的动态响应页面)
###<2>特点
HTML:jsp可以生成动态页面
JavaScript:jsp可以直接和服务器进行交互
Servlet:jsp很方便编写或者修改HTML页面(响应页面)
sun servlet ---- jsp --- serlvet+jsp
# 二、JSP的语法(重点)
###<1>申明定义区
格式:会被翻译成Servlet的成员属性
<%!
定义成员属性和方法
%>
作用:在此申明定义的变量和方法,在service方法中可以直接使用
###<2>java代码区
格式:其内部的java代码会被翻译到Servlet的service方法中
<%
编写任何的java代码(不能在此处申明方法)
%>
作用:执行任何java代码
###<3>输出表达式区
格式:此区域的数据被翻译到Servlet的service方法中,并调用输出流直接输出,reponse.getWrite().write(表达式)
<%=表达式%> 表达式后面不可以根分号,并且只能占用一行
作用:reponse.getWrite().write(表达式),将数据直接输出到页面
###<4>指定和动作
语法格式:
<%@ 指定的名称 属性=“属性值” 属性2=“属性值2” ....%>
4.1 page指令(实际开发中,page指定会默认创建,不去更改其配置)
设置当前.jsp页面的配置参数
<%@ page 属性=“属性值” 属性2=“属性值2” ....%>
language="语言"
jsp页面中可以嵌入的语言类型
contentType="页面内容编码格式"
等价于:response.setContentType(编码格式);
pageEncoding="当前页面的编码格式"
当前jsp文件本身的编码格式
seesion="true"
当前jsp页面是否可以直接使用session对象
import="类全路径"
当前jsp页面中导入其他的工具包
errorPage="错误页面的url"
当前jsp页面发生错误时,跳转的错误处理页面
iserrorPage="true|false"
当前jsp页面是否可以直接使用exception对象
4.2 include指令(重点)
可以将一个jsp页面或者html页面导入另一个jsp页面中
<%@ include 属性=“属性值” 属性2=“属性值2” ....%>
file="导入页面的位置"
指定导入到当前jsp页面的额页面信息
![](1.png)
4.3 taglib指令(重点)
用来扩展JSP程序的标签元素,引入其他功能的标签库文件
格式:
<%@taglib uri=“tagLibary” prefix=“prefix”%>
4.4 include动作
jsp:include动作用于引入另一个JSP程序或HTML文件等
执行到include时,被include的文件才会被JSPEngine编译。
如果include的是jsp文件,那它不会被转换成Servlet文件
格式如下:
<jsp:include page=“URLSpec” flush=“true”/>
<jsp:include page=“URLSpec” flush=“true”>
<jsp:param name=“key” value=“value”/>
</jsp:include>
4.5 forward动作
jsp:forward 实现请求的转发
格式如下:
<jsp:forward page=“URLSpec” flush=“true”/>
<jsp:forward page=“URLSpec” flush=“true”>
<jsp:param name=“key” value=“value”/>
</jsp:forward>
在目标页面中,从request中获取数据的方式是:request.getParameter(String key);
4.6 指定和动作的区别
include指令是在JSP程序的转换时期就将file
属性所指定的程序内容嵌入,然后再编译执行;
include动作在转换时期是不会被编译的,只有
在客户端请求时期如果被执行到才会被动态的
编译载入