设为首页 收藏本站
查看: 959|回复: 0

[经验分享] Servlet和JSP的关系以及此关系在Tomcat中的体现

[复制链接]

尚未签到

发表于 2017-2-9 08:59:03 | 显示全部楼层 |阅读模式
典型的Servlet运行环境有JSWDK,Tomcat,Resin等,相比 JRun,Web Sphere,Web Logic等等,前者配置比较简单,功能较简单,而且免费,更适合初学者!

学习servlet之前首先得了解一个servlet的运行环境,下面认识一下tomcat6.0.30的目录结构:

DSC0000.gif


在RUNNING.txt文件中简单描述了这些文件夹的做用和使用tomcat服务器的其他相关信息。今天我们主要讲解一下conf、webapps和work等文件夹在我们的应用程序运行中的作用。

我们的应用程序主要部署在webaps文件夹下,在某个项目文件夹下含有WEB-INF文件夹,我们的应用程序就部署在其中,其中含有的元素如下图所示:

DSC0001.gif



下面举个简单servlet例子,代码如下:
import javax.servlet.http.*;import javax.servlet.*;import java.io.*;public class FirstServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException{//控制台输出System.out.print("My first servlet"); //浏览器输出resp.setContentType("text/html");resp.getWriter().print("My First Servlet");}}
对此java文件进行javac编译,将编译好的文件放到classes文件夹下,然后配置web.xml文件,如下图所示:
DSC0002.gif

而后便可以启动tomcat,在浏览器中访问到我们的servlet程序了。运行结果如下图所示:
(1) 控制台的结果
DSC0003.gif

(2)浏览器中的结果


DSC0004.gif
从上述浏览器中输出的信息我们会发现,其实servlet写的文件就是可以用于浏览器访问的,跟我们的html和一些动态网页的展现功能是很相似的。而servlet的实质就是针对运行于客户端浏览器中的Applet程序而提出的一种运行于服务器端的小应用程序。

但servlet存在一些缺陷,这也是JSP产生的主要原因,如下所示:
1)写静态页面必须部署后才能看到效果,很难控制页面的外观。
2)从技术角度来说Servlet是Java代码和HTML静态代码的混合代码。
3)从市场竞争角度来说,微软推出了ASP产品。
JSP主要有如下几点改进:

1)JSP是标签式的文本文件(区Servlet是Java文件)

2)JSP不需要编译(其实是由服务器监测JSP文件的变化,再将其翻译成 Servlet 代码)

服务器对其进行编译并在第一次请求时创建一个Servlet实例。所以,第一次访问JSP页面时会后延迟

3)JSP不用写配置文件

4)JSP以静态代码为主,Java代码为辅。Servlet反之。

5)是J2EE蓝图的一部分(Servlet、JSP以及EJB是J2EE的三大组件)


下面编写并部署一个JSP程序,JSP代码文件如下所示:

<html><head><title>MySecondJsp</title></head><body><%out.print("中国!");%></body></html>

不需要在web.xml文件中进行配置,直接运行tomcat,便可访问,结果如下所示:

DSC0005.gif


由此可以看出JSP也是一种servlet。在第一次访问我们的JSP时,tomcat会对这个文件进行编译,将之编译成一个servlet类,其位置在work文件夹下。在servlet举例中我们知道运行它是需要配置web.xml文件的,那jsp编译成servlet类后不需要配置web.xml文件吗?这个当然需要,只不过tomcat已经存在了一个默认的配置,该文件的是:conf文件夹下的web.xml。

到此可以看出tomcat实现了像访问servlet的一样的方式来访问JSP!具体的流程图如下所示:

DSC0006.gif


对上图进行一点解释,如果是第一次调用这个jsp页面则需要从第0步顺次执行,否则只执行第5步。

JSP从本质上来说内核还是Servlet,但与Servlet不是替代关系而是一种互补的关系。 JSP适合于写显示层的动态页面,而Servlet则适合写控制层的业务控制(页面转发)。JSP往纯标签方向发展,Servlet往纯代码方向发展,他们以Servlet内核(请求响应式的工作方式)往两个方向发展。

一点补充:servlet和jsp的调用流程分别如下所示:


DSC0007.gif


DSC0008.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-339523-1-1.html 上篇帖子: Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包 下篇帖子: 如何区分JDK,Tomcat,eclipse的32位与64版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表