Servlet和JSP运行原理和区别

本文详细介绍了Servlet和JSP的概念、执行原理、生命周期,以及它们之间的主要区别。Servlet是运行在服务器端的小程序,负责处理HTTP请求,而JSP则是一种简化版的Servlet,更侧重于视图展示。两者的主要区别在于代码组织形式和职责分工,Servlet主要用于控制逻辑,JSP则内置了视图支持。
摘要由CSDN通过智能技术生成

Servlet

一、概念
        运行在服务端的小程序。可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。

二、执行原理

  1. 当服务器接受到客户端浏览器的请求后,会解析请求 URL 路径,获取访问的 Servlet 的资源路径
  2. 查找 web.xml文件,是否有对应的<url-pattern>标签体内容
  3. 如果有,则在找到对应的<servlet-class>全类名
  4. tomcat 会将字节码文件加载进内存,并且创建其对象
  5. 调用其方法
<servlet>
    <servlet-name>BaseServlet</servlet-name>
    <servlet-class>com.gem.servlet.BaseServlet</servlet-class>
    <!--设置可以启动时初始化-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>BaseServlet</servlet-name>
    <url-pattern>/BaseServlet</url-pattern>
  </servlet-mapping>

三、生命周期

  • 配置
    编辑好的servlet源文件并不能响应用户请求,还必须将其编译成class文件,将编译好的class文件放到WEB-INF/classes路径下,如果servlet有包,则还需要将class文件放到包路径下。

在这里插入图片描述
四、其他方面的知识点
        配置参数有两种方式:

  1. 通过@WebServlet的initParams属性来指定。
  2. 通过在web.xml文件的<servlet…/>元素中添加<init-param…/>子元素来指定。

        Servlet默认是线程不安全的,一个容器中只有每个servlet一个实例。

五、Servlet线程问题
        servlet在被访问之后会实例化操作,创建servlet对象。而Tomcat容器可以同时多线程并发访问同一个servlet,如果在方法中对成员变量做修改操作,就会有线程安全的问题。

解决方案:

  1. synchronized
    (效率不是很高)
  2. 实现SingleThreadMode接口
    (每一个线程都会创建一个servlet实例,这样每个客户端请求就不存在共享资源的问题,但是servlet响应客户端请求的效率太低)
  3. 尽可能使用局部变量

JSP

一、概念
        JSP 全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。

二、运行原理
在这里插入图片描述

  1. WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,容器会把访问请求交给JSP引擎去处理
  2. 如果该页面是第一次被请求、或不是第一次被请求但已被修改,则JSP引擎将此JSP页面代码转换成Servlet代码
  3. 然后JSP引擎调用服务器端的Java编译器javac.exe对Servlet代码进行编译,把它变成字节码(.class)文件,然后再调用JAVA虚拟机执行该字节码文件,然后将执行结果传给Web浏览器端。如果该JSP页面不是第一次被请求,且没有被修改过
  4. 则直接由JSP引擎调用JAVA虚拟机执行已编译过的字节码.class文件,然后将结果传送Web浏览器端

不同点(区别)

jsp就是在html里面写java代码,servlet就是在java里面写html代码。

  1. JSP侧重视图,Sevlet主要用于控制逻辑
  2. Servlet中没有内置对象
  3. JSP中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值