一.是什么
Java Server Pages:Java服务器端页面,和servlet一样,开发动态web技术;
写jsp和html差不多,只不过html加事件是伪动态,实际上html只能提供静态数据,jsp页面也已嵌入java代码,给用户提供动态数据
二.jsp原理
1.代码层面
看jsp在java中target的生成路径
2.服务器内部工作
<1>查看jsp在本地的存放路径
tomcat有一个work工作目录,存放jsp
<2>IDEA中访问jsp页面
IEDA中使用tomcat会在IDEA的tomcat中生成一个work目录;
启动tomcat后,访问jsp页面,发现jsp页面编译后生成成了java程序,说明jsp最终也会被转换为一个java类-> 因为浏览器向服务器发送请求,不管访问什么资源都是在访问servlet
3.常用方法
<1> . 判断请求
_jspService()
<2>. 内置的对象
<3> . 输出页面前增加的代码
4.访问jsp流程
<1>图解
<2>总结
在jsp页面中,只要是java代码就会原样输出,如果是html代码,会转化为out.write()
三.JSP基础语法(用起来和java无区别)
1.环境搭建
<1>创建maven工程
<2>导入依赖并编写主页面
<3>部署tomcat
<4>IDEA中重启tomcat
2.基础语法学习
<1>JSP表达式
<%=%>
<2>JSP脚本片段(三个demo)
<% %>
<3>JSP声明
<%! %>
<4>jsp注释(客户端看不到)
<%-- --%>
<5>源码分析
JSP声明会被编译生成到Java的类中,其他就会被生成到_jspService方法中(这个方法内的方法是局部的作用域,随着方法的消失而消失)
四.JSP常用指令(标签)(与java有区别)
1. <%@page args%>
<1>import
<2>error(两种方式)
I.方式一:配置一个505并测试
II.方式二:配置一个404并测试
2 . <%@include %>
提取公共页面,包含上下文
<1> 嵌套页面(方式一)
使用<%@include %> 将header.jsp和footer.jsp嵌套进jsp3.jsp页面
I.编写头页与尾页
II.编写主页面
III.测试
<2> 嵌套页面(方式二)
使用<jsp:include>(jsp标签)将header.jsp和footer.jsp嵌套进jsp3.jsp页面
I.主页面
II.测试
<3>.<%@include %>和<jsp:include>的区别
I. <%@include %>会将两个页面合二为一,生成一个页面
II. <jsp:include> 是拼接页面,生成的还是两个页面
III.区别对比
IV.总结
一般用jsp标签,灵活性更高
3 . <%@taglib %>jstl表达式会用到
五.jsp内置对象及作用域
1.是什么
jsp页面在第一次访问的时候被编译成了java类,在转变为class文件,同时生成了9大内置对象
2.有什么
<1>PageContext 存数据
<2>Request 存数据
<3>Response
<4>Session 存数据
<5>Application(ServletContext)存数据
<6>config(ServletConfig)
<7>out
<8>page
<9>exception
3.四大存储的对象
<1>对象
I.pageContext:保存的数据只在一个页面中有效
II.Request :保存的数据只在一次请求中有效,请求转发只会携带这个数据
III.session:保存的数据在一次会话中有效,从打开浏览器到关闭浏览器
IV.application:保存的数据只在服务器中有效,从打开服务器到关闭服务器
<2>作用域范围
pageContext < Request < session < application
<3>使用场景
I.Request:客户端向服务器发送请求,产生的数据,用户看完就没用的数据,如新闻
II.Session:客户端向服务器发送请求,产生的数据,用户用完过会儿还会用,如购物车(用户添加东西以后过一会儿还会到购物车结账)
III.application:客户端向服务器发送请求,产生的数据,如统计上线人数,还有就是一个客户用完的数据,其他用户还可能用的到(如qq聊天的数据)
4.代码实现
<1>存取数据(方式一)
四个对象存值,使用pageContext取值,在当前页面都能取出来,换一个页面只能取到session和application存的值
<2>存取数据(方式二)
四个对象存值,使用pageContext取值,并且使用pageContext请求转发到另一个页面
六.jsp标签,jstl标签,el表达式
1.el表达式:(重点就是拿他存数据,显示数据,为了简化jsp页面写java代码)
<1>获取数据
<2>执行运算
<3>获取web开发的常用对象
2.jsp常用标签
<1>导入依赖
<2>. <jsp:include >
include包含上下文
<3>. <jsp:forward >
forward 转发页面 和pageContext一样
<4>. <jsp:param >param标签,和request存值一样,转发的时候可以携带参数
<5>. <jsp:useBean > <jsp:setProperty >
这个标签是JavaBean的应用
3.jstl表达式
jstl是一个jsp的标签库,使用它是为了弥补html标签的不足,因为原生的html或者jsp标签只有几个,jstl中自定义了许多标签供我们使用,标签的功能代码和java代码一样,我们只需要简单的使用就可以了
<1>. 核心标签(这个需要掌握部分,下面的了解就可以)
使用步骤:
I.引入taglib
II.引入其中方法
III.在tomcat中也要引入jstl的包,否则会报错:jstl解析错误
i.<c:if>,<c:out>
ii.<c:set>,<c:choose>,<c:when>,<c:>
iii.<c:foreach> (从数据库中拿数据,经常用这个遍历)
<2>. 格式化标签
<3>. sql标签
<4>. xml标签
七.javaBean与JSP应用
1.JavaBean编写(实体类)并与数据库表对应
2.编写jsp页面
3.部署tomcat,访问这个JavaBean
可以看到使用JavaBean和new出来的对象是一样的