本篇我来讲解一下JSP技术,.jsp文件在我们的web工程项目中可以说随处可见,那么jsp究竟是什么?我们下面来一一讲解。
观看本篇的前置知识:Java基础、HTML、Xml和Servlet与Tomcat
如果你还不具备以上的知识可以看我之前整理的Java笔记,里面的内容都有~记得关注哦~
JavaWeb笔记整理——HTML、CSS、JavaScript_html css java-优快云博客
JavaWeb开发笔记图解整理(二)——XML、Tomcat、Servlet_在浏览器输入两个网址访问到servlet-优快云博客
一、服务器渲染技术
我们在使用Servlet进行编写,服务端的内容时,有时候会根据用户的输入打印一个网页:
以上的通过服务器给浏览器打印一个网页,这个过程就是服务器渲染技术。
但是可以看到,这样来打印一个网页,不仅代码量十分多余,而且对于程序员来说也很不好维护,所以就出现了jsp技术,帮助程序员来更好的在服务器渲染一个网页。
二、JSP
jsp快速入门
我们新建一个javaweb工程项目,引入jsp相关的jar包(servlet 、jsp),并创建一个jsp文件:
可以看到,jsp文件的内容和html文件几乎一模一样,不同的地方在于第一行的文件头。
这里就是jsp的第一个特点:可以作为html文件处理,html的语法,在jsp中完全适用。
我们先编写一个简单的网页:
启动服务器并在浏览器中看一看:
可以看到,和我们通常使用html编写的网页完全一样。
而jsp和html必然也是不同的。
这就要说道jsp的第二个特点:jsp本质上是一个Servlet,性能和Java相关联。
也就是说jsp是Servlet和html的集合体,我们既可以在jsp中编写html标签,也可以在jsp中编写java代码:
输出结果:
我们通过在jsp中写<% %>标签,就可以在里面编写Java代码。
jsp注意事项和细节
jsp不能像html一样通过浏览器直接访问,必须要先启动Tomcat服务器再在浏览器上显示。
jsp运行原理
第一次访问jsp页面的时候Tomcat会把jsp解析为一个.java文件,然后会把Java源文件编译为一个.class文件。
为了让大家看到jsp类的继承关系图,我们再引入一个jar包:
从这里我们就可以看到Jsp的继承关系,它本身就是继承了HttpServelt类的,所以它本身就是一个servlet,而它又有自己的一套方法,就是我们jsp的页面的方法。
jsp page指令
contentType表示jsp返回的数据类型,这里其实就是对应了我们servlet中的一个response.setContentType()方法,设置文件类型为这个"text/html;charset=UTF-8"。
language表示jsp翻译后支持什么样的语言,这里支持Java。
jsp三种脚本
声明脚本
<%! %> 这里可以对Java代码中的变量进行声明。
代码脚本
<% %> 这里编写Java代码
表达式脚本
<%=%> 这里可以填入Java代码中的变量的值,这样就可以再jsp页面中显示出来:
jsp内置对象(重要)
jsp内置对象指的是在Tomcat翻译jsp页面为一个Servlet后,内部提供的几个对象。内置对象可以直接使用,不需要手动定义。
1. out 向客户端输出数据,out.println("");
2. request 客户端的 http 请求
3. response 响应对象
4. session 会话对象
5. application 对应 ServletContext
6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面
7. exception 异常对象 , getMessage()
8. page 代表 jsp 这个实例本身
9. config 对应 ServletConfig
四大域对象
pageContext、request、session、application这四个对象都可以用来存储数据,但是他们的作用范围不同。
pageContext对象在本jsp页面中作用,在其他jsp页面中就会找不到:
request对象在一次http请求中有效,在下一个请求中,当前设置的属性就失效了。
session对象在一次会话中有效,如果关闭浏览器(即开启下一个会话),当前设置的属性就失效。
application对象只要服务器保持开启状态就一直有效。
jsp的请求转发标签
page属性中填写的是/jsp1.jsp,也就是要转发到的web资源路径
下一篇我们讲解EL表达式和jstl技术,来进一步优化我们的jsp页面~