Snowberg

 

servlet和jsp的区别与联系

尽管jsp在本质上就是servlet,但是两者的创建方式不一样:

servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出

Jsp由html代码和jsp标签构成可以方便地编写动态网页因此在实际应用中采用servlet来控制业务流程,而采用jsp来生成动态页面。在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。

 Servlet中没有内置对象。

 总之,jsp是servlet的一种简化,使用jsp只需要完成程序员需要输出到客户端的内容,至于jsp中的java脚本如果镶嵌到一个类中,由jsp容器完成,而servlet则是个完整的java类,这个累的service方法用于生成对客户端的响应。

jsp从本质上来说就是一个servlet,jsp编译后就是一个“类servlet”

jsp服务器在编译jsp页面时,会先写一个servlet将jsp页面内容解析出来,使用<%%>将其变 成一个servlet,一个java类

在根据tomcat服务器中的servlet配置 找到配置后缀名为jsp的那里,根据文件名访问jsp

--tomcat目录下的conf/web.xml文件

    <servlet> 
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
 
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

再用jsp引擎将jsp变成一个servlet

 

访问jsp页面时,这个请求其实一个servelt

 

区别:servlet的应用逻辑是在java文件中,并且完全从表示层中的html中分离出来。而jsp的情况是java和html可以组合成一个扩展名为.jsp的文件。jsp侧重于视图,Servelt主要用于逻辑控制。


==================================================

 相信很多人在面试的时候都会被问到JSP和Servlet的区别,我认为JSP就是功能受限的Servlet,因为JSP不能作为后台的控制Servlet用,但是实际上我的这个想法是错误的,JSP是可以像普通的Serlvet那样作为控制用的Servlet用的,在web.xml里面定义一下就行了:
    <servlet>
        <servlet-name>control</servlet-name>
        <jsp-file>/jsp/control.jsp</jsp-file>
    </servlet>

 


posted on 2011-07-31 15:15  Snowberg  阅读(1901)  评论(0编辑  收藏  举报

导航