JSP基础知识—执行过程,脚本元素,与Servlet的区别

来源:互联网 发布:javascript拼图 编辑:程序博客网 时间:2024/06/05 04:38

Servlet的缺点:
1,开发人员要十分熟悉Java;
2,不便于页面的调试和维护(要进行修改和重新编译);
3,很难利用网页设计工具进行页面设计(需要将HTML内容导入到servlet中,要用PrintWriter的对象进行输出)。
后来出现了JSP,那么什么是JSP呢?
一,JSP的定义
JSP:(Java Server Pages)与Java Servlet一样,是在服务器端执行的,不同的是先由服务器编译部署成Servlet执行。
更为具体的介绍:JSP是由Sun 公司倡导、许多别的公司参与一起建立的一种新动态网页技术标准,类似其他技术标准,如ASP、PHP 或是ColdFusion等等。在传统的网页HTML文件中加入Java程序片段和JSP标签,构成了JSP 网页(*.jsp)。Servlet/JSP Container 收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。其中程序片段可以是:操作数据库、重新定向网页以及发送 E-Mail 等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP 称为Server-SideLanguage。

通俗讲:JSP即:html + java代码 + JSP动态标签
在静态页面上添加动态信息就可以了,如果是Servlet还需要一行一行的输出。通常在前台开发人员给出静态页面后,后台开发人员只需在静态页面中添加动态信息即可,而不用再使用Servlet一行一行的去输出了。

Microsoft 和 Sun 都提供它们各自品牌的服务器页面。Sun提供JavaServer Pages (JSP)而 Microsoft 提供 Active Server Pages(ASP)。JSP 和 ASP 都设计成使开发者能够从后端系统产生动态页面。虽然表面看起来相似,ASP 和JSP仍有一些不同之处:
1,JSP 是平台独立性的,一次编写,随处运行;
2,开发者通过Java Community Process(JCP)指引方向;
3,JSP 开发者可以通过定制标签扩展JSP标签库;
4,JavaBeans 和 Enterprise JavaBeans (EJB) 可以和JSP一起使用,增强可重用性和减小维护。
5,JSP 可以存取其他一些Java 库,包括Java 数据库连接(JDBC),Java Mail,Java Message ,Service(JMS),以及JNDI。
6,JSP 编译成二进制类文件,不需要在每次请求时进行解释;
7,JSP 有广泛的支持,包括工具,容器和服务器。

二,JSP的执行过程
1,客户端发出Request (请求);
2,JSP Container 将JSP 翻译成Servlet 的源代码;
3,将产生的Servlet 的源代码经过编译后,加载到内存执行;
4,把结果Response (响应)发送至客户端。
JSP和Servlet的执行效率相差不大,只是第一次执行JSP页面时需要进行编译。一般人都会以为JSP 的执行性能会和Servlet 相差很多,其实执行性能上的差别只在第一次的执行。因为JSP 在执行第一次后,会被编译成Servlet 的类文件,即为XXX.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不用再重新把JSP编译成Servlet。因此,除了第一次的编译会花较久的时间之外,之后JSP 和Servlet 的执行速度就几乎相同了。 在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time) 。
1, JSP文件先要被服务器翻译成Java文件(Servlet),在tomcat中翻译后的Java文件在tomcat下的 work/Catalina /localhost 中相应名字的应用目录里。
2, 编译成Java(Servlet)文件
3,运行.class文件
Tomcat的全局配置文件$CATALINA_HOME/conf/web.xml

简单总结为:
当客户请求的是JSP页面时,服务器会查看JSP对应的Servlet是否存在,如果存在,那么直接调用Servlet的service()方法来处理请求。如果不存在,那么服务器会先把JSP编译成.java,再把.java编译成.class,然后调用service()方法。当这个JSP页面,第二处理请求时,就直接调用直身的service()方法了。

JSP是Servlet,JSP与我们编写的Servlet有什么不同呢?通常我们编写的Servlet就不需要输出HTML代码了,而是转发到JSP页面。
即Servlet不再负责显示页面,而由JSP来完成!而Servlet专注与控制层内容!

三,JSP中的脚本元素:

这里写图片描述

其中:对于声明,需要注意的有:
1,每一个声明作用的范围是整个JSP页面,仅在一个JSP页面中有效,如果每个页面都用到一些声明,最好把它们写成一个单独的JSP网页,然后用<%@include%>或者元素包含进来;
2,声明的类型包括:变量,方法,类。且使用<%! %方式声明的变量为成员变量,即表示:若同时有n个用户在执行此JSP网页时,将会共享此变量,建议不要使用<%! %>来声明变量。若要声明变量时,直接在<% %>之中声明使用即可

对于表达式,需要注意的有:
1,表达式的计算结果转换成字符串,使用隐含对象out进行输出;
例如:<%=“abc”%> 等价于 out.print(“abc”);
2,JSP脚本表达式中的变量或表达式后面不能有分号(;)

对于Scriptlets(代码块),需要注意的有:
1,它的语法格式为:<% java code %>;
2,在“<%”和“%>”之间插入java程序片,一个JSP页面可以有许多程序片,这些代码块将被JSP服务器按照顺序执行;
3,在一个代码块中声明的变量时JSP页面的局部变量,只在当前页面有效;

EL表达式:全名为Expression Language
语法为:<{requestScope.name}

总结:Servlet与JSP的区别 用于面试回答
Servlet:是采用Java语言编写的服务器端程序,它运行于web服务器中的Servlet容器中,其主要功能是提供请求/响应的web服务模式,可以生成动态web内容;
JSP:其实现理念是让每个Servlet只负责其对应的业务逻辑处理,让JSP来负责用户写HTML显示,因此实现了业务逻辑与视图的分离,极大地提高了系统的可扩展性。它可以看作是一个特殊的Servlet,是对Servlet的扩展。
不同点:
1)Servlet的实现方式是在Java中嵌入HTML代码,编写和修改HTML不方便,所以它比较适合做流程控制,业务处理;而JSP的实现方式为在HTML中嵌入Java代码,比较适合页面的显示;
2)Servlet中没有内置对象,JSP中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到的。

0 0