关键词:servlets是什么? servlets能干什么? servlets处理用户请求?
一、是什么?
servlet是MW, 有4个JAVA包:
javax.servlet
javax.servlet.http
javax.servlet.annotation(including Servlet, Filter,Listener)
javax.servlet.descriptor
二、能干什么?
1.
浏览器发送一个HTTP请求,HTTP请求由Web容器分配给特定的Servlet进行处理,Servlet的本质是一个Java对象,这个对象拥有一系列的方法来处理HTTP请求。常见的方法有doGet(),doPost()等。Web容器中包含了多个Servlet,特定的HTTP请求该由哪一个Servlet来处理是由Web容器中的web.xml来决定的。
作者:杨宇翔
链接:https://www.zhihu.com/question/21416727/answer/28555855
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.
Servlet本质就是javax.servlet包下的一个接口,广义上来说包含其子接口与实现类,像我们自己写的什么BaseServlet,LoginServlet;SpringMVC的Dispatcherservlet;Tomcat的HttpServlet都是Servlet。
工作原理就是反射+回调。目前所有的MVC框架的Controller基本都是这么个模式。
Servlet的执行是其容器如Tomcat通过web.xml的配置反射出Servlet对象后回调其service方法。
作者:戴帽子的狗
链接:https://www.zhihu.com/question/21416727/answer/167610518
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.
web服务器习惯处理静态页面,所以需要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet的本质是一个帮助程序。
作者:温学良
链接:https://www.zhihu.com/question/21416727/answer/82511153
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
自我补充:JSP与Servlet
JSP本质上就是Servlet,Web服务器把每个被访问的JSP文件先翻译成对应的Servlet,然后再编译运行。
servlet是用来做Web开发的,做为控制层来处理用户的请求信息的。Servlet是BS开发的基础,了解了Servlet,今后对你学习,JSP,以及后面的Struts2框架都有很大的帮助。正常工作 时,Servlet使用并不多,都是使用Struts2来代替Servlet完成的功能的。
你可以这样的理解,当你点击一个网页上的链接时,都会像服务器提交一个请求,这个请求分为两种,一种是post请求,一种是get请求。而对应的Servlet处理请求中,也有一个doget()和dopost()方法。Servlet处理完结果后,会往不同的作用域中放处理完的信息,返回到网页显示。
三、处理请求
针对 Servlet 的每次请求,Web 服务器在调用 service() 方法之前,都会创建 HttpServletRequest 和 HttpServletResponse 对象。其中,HttpServletRequest 对象用于封装 HTTP 请求消息,简称 request 对象。HttpServletResponse 对象用于封装 HTTP 响应消息,简称 response 对象。浏览器访问 Servlet 的交互过程如图 1 所示。
图 1 浏览器访问Servlet过程在图 1 中,首先浏览器向 Web 服务器发送了一个 HTTP 请求,Web 服务器根据收到的请求,会先创建一个 HttpServletRequest 和 HttpServletResponse 对象,然后再调用相应的 Servlet 程序。
在 Servlet 程序运行时,它首先会从 HttpServletRequest 对象中读取数据信息,然后通过 service() 方法处理请求消息,并将处理后的响应数据写入到 HttpServletResponse 对象中。最后,Web 服务器会从 HttpServletResponse 对象中读取到响应数据,并发送给浏览器。
需要注意的是,在 Web 服务器运行阶段,每个 Servlet 都只会创建一个实例对象,针对每次 HTTP 请求,Web 服务器都会调用所请求 Servlet 实例的 service(HttpServletRequest request,HttpServletResponse response)方法,并重新创建一个 request 对象和一个 response 对象。
网友评论