Servlet
创始人
2024-01-22 06:25:29
0

1.Servlet是什么

  • Servlet是java语言编写的运行在服务器端的程序
  • Servlet是javaEE规范之一,规范就是接口
  • Servlet是JavaWeb三大组件之一,三大组件分别是:Servlet,Filter,Listener

2.Servlet干什么

Servlet接受客户端发来的请求,并响应数据给客户端

 

3.servlet的声明周期

  1. 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet
  2. 创建:通过调用Servlet的构造函数来创建一个Servlet实例
  3. 初始化:通过调用Servlet的init()方法完成初始化,在向客户端提供服务之前调用
  4. 处理请求:Servlet创建之后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求,接着调用Servlet的Service()方法来响应客户端的请求
  5. 销毁:容器销毁Servlet之前调用destroy()方法,让Servlet释放资源

初始化阶段

Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法初始化,只会调用一次初始化方法

Servlet容器会在一下几种情况装载Servlet

  • 在Servlet容器启动后,客户首次向Servlet发送请求
  • Servlet类文件被更新后,重新装载

处理客户端请求阶段

每收到一个客户端请求,服务器会产生一个新的线程去处理,对于用户的Servlet请求,Servlet容器会根据不同的请求类型去调用不同的doXXX()方法

终止阶段

Web应用被终止时,或者Servlet容器终止运行,Servlet容器会调用destroy()方法

4.Servlet工作原理

客户发送一个请求,Servlet 调用 service() 方法对请求进行响应,service() 方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应。

但是 Servlet 接口和 GenericServlet 接口中没有 doGet(),doPost() 等方法,HttpServlet 中定义了这些,但是返回的都是Error 信息,所以每次定义 Servlet 都要重写这些方法。

Sertvlet 和 GenericServlet 是不特定于任何协议的,而 HttpServlet 是特定于 Http协 议的,所以 HttpServlet 中的 service()方法中将 ServletRequest,ServletResponse 强转为 HttpRequest 和 HttpResponse,最后调用自己的 service 方法去完成响应。

5.转发和重定向的区别

总结:转发是服务器行为,重定向是客户端行为。

转发-Forword

通过 RequestDispatcher 对象的 forward(HttpServletRequest request,HttpServletResponse response)方法实现的;RequestDispatcher 可以通过 HttpServletRequest 的 getRequestDispatcher() 方法获得。

request.getRequestDispatcher("login_success.jsp").forward(request, response);

重定向-Redirect

重定向是利用服务器返回的状态码来实现的,客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过 HttpServletRequestResponse 的 setStatus(int status) 方法设置状态码。如果服务器返回 301 或者 302,则浏览器会到新的网址重新请求该资源。

常用状态码:

  • 200(OK):表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
  • 301(Moved Permanently):永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
  • 302(Found):临时移动,与301类似,但资源只是临时被移动,客户端应继续使用原有 URI
  • 400(Bad Request):客户端请求的语法错误,服务器无法理解
  • 403(Forbidden):服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404(Not Found):请求失败,客户端请求的资源没有找到或者是不存在
  • 500(Internal Server Error):服务器内部错误,无法完成请求
  • 502(Bad Gateway):网关错误,作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
  • 503(Service Unavailable):服务不可用,由于超载或系统维护,服务器暂时的无法处理客户端的请求
     

从地址栏显示来说

  • forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
  • redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。
     

从数据共享来说

  • forward:转发页面和转发到的页面可以共享request里面的数据
  • redirect:不能共享数据


从运用地方来说

  • forward:一般用于用户登陆的时候,根据角色转发到相应的模块
  • redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等


从效率来说

  • forward:效率高
  • redirect:效率低

相关内容

热门资讯

京运通(601908)披露诉讼... 截至2025年11月21日收盘,京运通(601908)报收于3.71元,较前一交易日下跌8.17%,...
A股失守3900点,牛市行情结... 文/李悦 11月21日,A股市场遭遇大幅调整,三大股指集体低开低走。今日收盘,沪指失守3900点整数...
中国通号(688009)发布A... 截至2025年11月21日收盘,中国通号(688009)报收于5.24元,较前一交易日下跌1.5%,...
张瑞军,任上被查 据濮阳市纪委监委消息:濮阳市信访局党组成员、副局长张瑞军涉嫌严重违纪违法,目前正接受濮阳市纪委监委纪...
梁平:“一小时取证” 法官律师... “只用点几下手机,一个小时就拿到了关键证据!”11月19日上午,梁平区某律师事务所的荣律师忍不住通过...
特朗普沉默多天后,美国开始支持... 文/三玄 在日本首相高市早苗宣称“台湾有事”构成日本“存亡危机事态”,引发轩然大波之后,美国总统特朗...
第十五届全国运动会圆满落幕 四... 11月21日晚,第15届全国运动会闭幕式于深圳宝安欢乐港湾海滨剧场举行。这场历时13天的中国体坛盛会...
甘肃省人民政府关于张晶等同志免... 陇东报2025-11-21 19:55:48 关于张晶等同志免职的通知 各市、自治州人民政府,甘...
惠企政策系列解读|人社领域惠企... 济宁新闻网·更济宁讯 惠企政策系列解读,今天一起了解人社领域新获批省级以上技能大师工作室(站)经费资...