servlet的相关知识总结
前言
在学习了第一个war包之后,浅浅记录一下其中所涉及到的知识点,学习的参考连接已放到最后。
一、Servlet
-
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 Servlet接口:Servlet接口有5种方法,分别为:init,service和destroy是servlet的生命周期方法,这些方法由web容器调用。
- public void init(ServletConfig config) 初始化servlet,它是servlet的生命周期方法,由web容器调用一次
- public void service(ServletRequest request,ServletResponse response) 为传入的请求提供响应,它由Web容器的每个请求调用。
- public void destroy() 仅被调用一次,并且表明servlet正在被销毁
- public ServletConfig getServletConfig() 返回ServletConfig对象
二、HttpServlet
-
HttpServlet是Servlet接口的一个实现类,并且它是一个抽象类,servlet.http包中定义了采用HTTP通信协议(一个无状态协议)的HttpServlet类。 HttpServlet中定义了很多方法:
- 处理GET请求:protected void doGet(HttpServletRequest req, HttpServletResponse res)
- 处理POST请求:protected void doPost(HttpServletRequest req, HttpServletResponse res)
- 处理HEAD请求:protected void doHead(HttpServletRequest req, HttpServletResponse res)
- 处理OPTIONS请求: protected void doOptions(HttpServletRequest req, HttpServletResponse res)
- 处理PUT请求:protected void doPut(HttpServletRequest req, HttpServletResponse res)
- 处理TRACE请求: protected void doTrace(HttpServletRequest req, HttpServletResponse res)
- 处理DELETE请求: protected void doDelete(HttpServletRequest req, HttpServletResponse res)
- 通过将请求和响应对象转换为http类型将请求调度到受保护的service方法: public void service(ServletRequest req,ServletResponse res)
- 从service方法接收请求,并根据传入的http请求类型将请求发送到doXXX()方法: protected void service(HttpServletRequest req, HttpServletResponse res)
三、如何为Servlet类配置url
-
方法一:使用@WebServlet(url) @WebServlet("/servletdemo01") 访问Servlet可以通过使用@WebServlet(url),给某个Servlet类配置个url 之后可以通过url来访问这个Servler类 方法二:在Servlet类里面配置url <servlet> <servlet-name>ServletDemo02</servlet-name> <servlet-class>com.zfh.ServletDemo02</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemo02</servlet-name> <url-pattern>/servletDemo02</url-pattern> </servlet-mapping> <servlet> <servlet-name>ServletDemo03</servlet-name> <servlet-class>com.zfh.ServletDemo03</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemo03</servlet-name> <url-pattern>/servletDemo03</url-pattern> </servlet-mapping> <servlet>,其中的中写的是servlet类名相同 <servlet-class>,其中写的servlet类的全名,加上package <servlet-mapping>,设置url连接 <url-pattern>中配置的项必须与url完全精确匹配 <servlet-name>中写的是servlet类名相同 运行过程:url-pattern 标签中的值是要在浏览器地址栏中输入的 url,这个 url 访问名为 servlet-name 中值的 servlet,通过 servlet 标签中的 servlet-name 标签映射到 servlet-class 标签中的值,最终访问 servlet-class 标签中的 class
