一、简介
JSP是一种动态网页开发技术,它使用JSP标签在HTML页面中嵌入JAVA代码
JSP本质是一种Java servlet,主要用于实现Java web应用程序的用户界面部分,但是页面中Java代码太多会影响页面的效率
在开发中,通常将Java servlet与JSP共同使用,各取所长
二、具体技术
1.JSP脚本和注释(核心)
①JSP脚本:
(1) <% JAVA代码 %> //内部的JAVA代码会被翻译到Servlet的service()方法内部
(2) <%= 有结果的表达式 %>//被翻译成service方法内部的out.print()
(3) <%! %> //被翻译成servlet的成员的内容
注意:(1)在方法的内部不同于(2)在类的下面
②JSP注释:
(1)<!-- --> HTML注释 //可见范围:jsp源码+翻译后的servlet+页面显示后的html源码
(2)//和/**/ JAVA注释 //可见范围: JSP源码+翻译后的servlet
(3)<%-- --%> JSP注释 //可见范围: JSP源码
2、JSP运行原理(本质是servlet)
jsp在第一次被访问时会被Web容器翻译成servlet,之后执行
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
注意:被翻译后的servlet在Tomcat的work目录中可以找到
3、JSP指令
①page
作用:属性最多的指令,用来指导页面的特性
格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>
属性如下:
language:JSP脚本中可以嵌入的语言种类
contentType: 翻译成:response.setContentType(text/html;charset=UTF-8)目的是解决中文的问题
响应的内容用的编码方式 ,
pageEncoding : JSP本身的编码方式
注意:contentType可以不写,会默认按照pageEncoding的编码方式,而且本来JSP本身编码就该跟contentType一样
session: 默认session="true", 即JSP翻译时自动创建一个session域
extends: JSP继承的类,没啥用,JSP本质是servlet会去继承httpServlet的
import: JSP导入的包
errorPage: 若页面出错跳转到 的 那一个页面
iseErrorPage: 参数true/false ,是否为错误页面
buffer:
②include指令
作用:页面包含(静态的包含),将一个JSP页面包含到另外一个JSP页面中
格式:<%@ include file="被包含的文件地址"%>
③taglib指令
作用:引用标签库,如jstl标签库,struts2标签库
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>
4、JSP的九个内置对象
简介:在JSP脚本翻译之后,创建的9个对象,可以在JSP脚本里面直接使用这些对象
①out 作用: 用于页面的输出
out有一个缓冲区,写入客户端的内容先写入out缓冲区在写入response的缓冲区,out缓冲区默认大小为8kb可以设置为0,从而直接写入response的缓冲
②request 客户端请求消息
③response 服务器向客户端响应消息
④config
⑤session
⑥application
⑦page
⑧pageContext 作用:jsp页面的上下文对象
pageContext是一个域对象,可以对其他四个域(request,session,page,application)这些域里的数据进行操作
格式:
pageContext.setAttribute(键名,值,PageContext.(某个域))
pageContext.getAttribute(键名,PageContext.(某个域))
pageContext.findAttribute(键) //从小到大的域一次开始找键名,找到就立即停下不在继续找了
注意:四个域的区别
page域 当前jsp页面范围
request域 一次请求中
service层中的给客户端的信息一般放在request中,传递给前端jsp或html页面
session域 一次会话
session域一般存放用户常用的数据
application域 整个web应用
pageContext.getout....获得其他JSP对象
⑨exception
5、JSP标签 主要有两个
①页面包含(和指令不同的是这个是动态包含),格式:<jsp:include page="被包含的页面"/>
注意:
静态包含会把两个Jsp打包在一起生成一个servlet
动态包含两个jsp页面也会生成两个servlet
②请求转发,格式:<jsp:forward page="要转发的资源" />