JSP有点类似于ASP,是通过在HTML文件中加入java程序片段(Java Scriptlet)和JSP标记(tag),就构成了JSP文件。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
JSP工作原理
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
首先会把JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将终端,并向服务端和客户端输出出错信息;如果转换成功,JSP引擎用javac把该Java源文件编译成相应的.class文件并将该class文件加载到内存中。
JSP容器负责调用从JSP转换来的Servlet,这些Servlet负责提供服务相应用户请求;如果有多个请求,则容器会建立多个线程处理多个请求。
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP在客户端和服务器端的行为
(1)客户端:其实就是标准的HTML(+script),JSP在客户端没有超越HTML(+script)规范,不比静态的HTML页面多出多少行为。
(2)服务器端:JSP在经过JSPC和JAVAC的帮助下,过程上经历了JSP页面——>JSP页面的翻译过程.java——>编译过程.class。在翻译过程中实现了JSP WEB编程规范中的Servlet接口,拥有了处理客户端http请求和输出http响应的能力,最终再成为.class文件就拥有了被JVM执行,被WEB容器调用的能力。
只有理解了服务器端和客户端两边的行为,对JSP的理解才会层层深入。
JSP的基础
一个JSP页面主要由注释、指令、脚本元素、动作元素的内容组成。
1、JSP注释包括HTML注释和JSP隐藏注释。
2、指令
Page:用来定义整个JSP页面的属性和相关功能。
Include:用来指定JSP文件被编译时需要插入的资源,可以是文本、代码、HTML文件或JSP文件。
Taglib:页面使用者来自定义标签
3、脚本元素
(1)声明:用来定义在程序中使用的实体,它是一段Java代码,可以声明变量,也可以声明方法。
格式:<%! 开始声明 %>
(2)表达式:<%=表达式%>
(3)Scriptlet:<%java代码%>
4、动作指令:Include、Forward、UseBean、GetProperty、SetProperty、Plugin.
JSP和Servlet的比较
两者都可以用于开发动态Web资源。
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长处理流程和业务逻辑,缺点是生成动态网页不直观。
根据两者不同的特点,servlet只负责相应请求产生数据,并把数据通过转发技术带给JSP,数据的显示JSP来做。
JSP与JS区别
1、JSP全称是java server page ;JS全称是javaScript
2、最主要的区别是运行位置不同。
JSP运行在后台服务器上,混合在HTML中的java程序段,用于控制HTML的动态生成,并且通常负责调用后台数据库中的数据,形成能够根据使用情况的变化,具有丰富数据交互效果的页面。
JavaScript通常是运行在前台,即运行于用户浏览器的,通常不需要服务器的后台支持(AJAX交互例外),混合在HTML中的JavaScript脚本程序直接被浏览器解释执行,以提高页面的美观性和UI操作响应速度为基本目标。
个人理解 JSP 可以看做 JavaScript + AJAX
3、JSP在HTML中用<%%>里面实现;JS在html中用<Script></Script>实现
注意:
JSP页面必须要在JSP服务器内运行,如tomcat weblogic,jboss等等.
JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。
总结
JSP是Web的显示层,在前端起到了与用户交互的作用,它实质上也是一个高级的Servlet,后台翻译成Servlet,Servlet与服务器端交互。同时在客户端与服务器端交互的时候,服务器端给客户端输出的就是纯碎的HTML。