目录
第一章 什么是jsp
jsp的本质是servlet,在第一次被访问时会被web容器翻译成servlet.
我们的jsp会被编译成class文件到tomcat下的work文件目录中,就是jsp名+_jsp+class或java
所以jsp之所以能变成html其实就是利用out向输出流里写出了一个html页面的代码.
例如:当往jsp中写入东西的时候,如在body中写入xxxx在转成的java文件中会是
当访问某个jsp资源时,会先去work底下寻找是否存在对应的servlet文件,如果没有会进行翻译
可以看到tomcat下conf下的web.xml文件中存在jsp映射,会将jsp映射给jspservlet进行翻译
扩展:shift+T可以快速打开某个文件的源码
第二章 jsp脚本和注释
2.1 JSP脚本
<% %>里面可以写java代码
<%= %>里面写java变量和表达式,可以在页面上进行显示
<%! %>里面也可以写java代码
代码:
<% %>中的代码会被直接写在jsp转成的java文件里的service方法中.
<%= %>中的变量和表达式会被写在out里返回,out也在service方法中
<%! %>里面的java代码虽然也会直接被写在java文件里,但是位置和<% %>不一样,<%! %>的代码在类名的下面成为servlet的成员.
如果是这样的话就能在<%! %>中写入方法了.
2.2 JSP注释
代码示例:
注释区别:
这个注释会原封不动的被out输出到html里,可见范围 jsp源码,翻译后的servlet,页面显示html代码.
//与/**/注释会直接显示在jsp转成java文件中,可见范围 jsp源码,翻译后的servlet.
jsp注释:只在jsp源码中可见看见,所以是最安全的.
第三章 jsp的指令
3.1 page指令
3.2 include指令
这是静态包含,直接将两个页面拼凑在一起,servlet,service中的代码为:
应用举例:
3.3 taglib指令
应用举例:
小知识:alt+/可以代码提示
第四章 jsp的九大隐式对象
4.1 out对象
out对象会先输入到out缓冲区,然后再存储到response缓冲区,而response.getwriter.write的对象会直接输入到response缓冲区,所以有时即使在jsp中response.xxx的内容在后面,也会搬到前面来输出.
4.2 pageContext
pageContext代表当前页面的上下文对象
扩展:存到session域中的要删除的话要么显式删除,要么清除缓存,存到application域中的要么山粗,要么重启服务器.
4.2.1 获得其他8大隐式对象
第五章 jsp的标签
5.1 页面包含
这个标签指令的包含是动态包含:
动态是先将两个页面分别进行翻译,然后再拼在一起.
5.2 请求转发