Servlet原理解析及作用1
2015-09-18 22:48
295 查看
ServletAPI中的主要接口或类的核心类图(很重要)
一、Servlet定义
Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好像Java Applet对于Web浏览器。Applet装入Web浏览器并在Web浏览器内执行,而Servlet则是装入Web服务器并在Web服务器内执行。 Java
Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。
Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供Web服务。当客户机发送请求至服务器时,服务器将请求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端。
二、Servlet概述
1、Servlet是SUN公司制定的一套开发动态网页的技术。
2、JavaEE相关的类,包名一般都是以javax开头
图解:
三、Servlet的生命周期
当客户端服务器向进行请求的时候tomcate中的容器最终要调用service方法为客户进行服务,并且向客户端网页进行回应。
1、Servlet接口中的常用方法:
public void init(ServletConfig config):初始化。Servlet类被实例化后就执行,且执行一次。由容器进行 调用。
public void service() 作用是用来处理请求的
public void destroy():销毁Servlet对象。由容器进行调用在内存中一个Servlet只有一个实例。针对不同 的用户请求,容器采用多线程的机制调用service方法的。
Servlet实例对象和初始化方法,默认情况下,只有第一次访问时才执行,且只执行一次。
四、servlet运行过程
用户的所有请求都是找servlet
整个过程可以这样简略:
(1)web请求
(2) tomcate服务器调用servlet组件
(3)web项目下的xml文件中的<servlet-mapping>标签中的url-pattern地址
(4)然后再找到该标签中的servlet-name,从而找到<servlet>标签中的servlet-name,然后找到servlet类进行处理。
(5)然后通过servier的处理得到响应,通过服务器响应到web。
图文介绍:
举一个例子代码:
一个标准的web-servlet应用目录:
注:可以直接建立一个servlet类:直接new一个servlet类,勾选dopost及doget方法(没有指明走那个方法,默认执行该方法),最后下一步,勾选Generate/Map web.xml(将该servlet类映射到xml文件中。)
HttpServlet 中的service方法是典型的模板设计模式的具体应用。
映射:
注:<welcome-file-list>指默认走的页面
五、web.xml文件的映射的细节问题
、
当 <url-pattern>/</url-pattern>出现时,servlet将会成为这个应用程序的缺省servlet,在tomcat work space\apache-tomcat-6.0.24\conf中可以找到web.xml中可以找到设置的缺省。
如下图tomcate中web.xml文件:
最后值得一提的是:
servlet3.0之后,新建web应用就不会出现web.xml文件了,这里是新特性介绍:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#major3
一、Servlet定义
Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好像Java Applet对于Web浏览器。Applet装入Web浏览器并在Web浏览器内执行,而Servlet则是装入Web服务器并在Web服务器内执行。 Java
Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。
Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供Web服务。当客户机发送请求至服务器时,服务器将请求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端。
二、Servlet概述
1、Servlet是SUN公司制定的一套开发动态网页的技术。
2、JavaEE相关的类,包名一般都是以javax开头
图解:
三、Servlet的生命周期
当客户端服务器向进行请求的时候tomcate中的容器最终要调用service方法为客户进行服务,并且向客户端网页进行回应。
1、Servlet接口中的常用方法:
public void init(ServletConfig config):初始化。Servlet类被实例化后就执行,且执行一次。由容器进行 调用。
public void service() 作用是用来处理请求的
public void destroy():销毁Servlet对象。由容器进行调用在内存中一个Servlet只有一个实例。针对不同 的用户请求,容器采用多线程的机制调用service方法的。
Servlet实例对象和初始化方法,默认情况下,只有第一次访问时才执行,且只执行一次。
四、servlet运行过程
用户的所有请求都是找servlet
整个过程可以这样简略:
(1)web请求
(2) tomcate服务器调用servlet组件
(3)web项目下的xml文件中的<servlet-mapping>标签中的url-pattern地址
(4)然后再找到该标签中的servlet-name,从而找到<servlet>标签中的servlet-name,然后找到servlet类进行处理。
(5)然后通过servier的处理得到响应,通过服务器响应到web。
图文介绍:
举一个例子代码:
一个标准的web-servlet应用目录:
注:可以直接建立一个servlet类:直接new一个servlet类,勾选dopost及doget方法(没有指明走那个方法,默认执行该方法),最后下一步,勾选Generate/Map web.xml(将该servlet类映射到xml文件中。)
HttpServlet 中的service方法是典型的模板设计模式的具体应用。
package com.dp.java.Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletDom2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.flush(); out.close(); } }
package com.dp.java.Servlet; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletDom1 extends GenericServlet { @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getOutputStream().write("haha".getBytes()); } }
映射:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>ServletDom1</servlet-name> <servlet-class>com.dp.java.Servlet.ServletDom1</servlet-class> </servlet> <servlet> <servlet-name>ServletDom2</servlet-name> <servlet-class>com.dp.java.Servlet.ServletDom2</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDom1</servlet-name> <url-pattern>/ServletDom1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ServletDom2</servlet-name> <url-pattern>/servlet/ServletDom2</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
注:<welcome-file-list>指默认走的页面
五、web.xml文件的映射的细节问题
、
当 <url-pattern>/</url-pattern>出现时,servlet将会成为这个应用程序的缺省servlet,在tomcat work space\apache-tomcat-6.0.24\conf中可以找到web.xml中可以找到设置的缺省。
如下图tomcate中web.xml文件:
最后值得一提的是:
servlet3.0之后,新建web应用就不会出现web.xml文件了,这里是新特性介绍:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#major3
相关文章推荐
- SweetAlert-js应用
- Web API与AJAX:理解FormBody和 FormUri的WebAPI中的属性
- 汉字转换成拼音封装
- 怎样删除T型连接点?
- 常用的SQL语句
- Nginx安装
- Android中全局搜索(QuickSearchBox)详解
- 理解newid()和newsequentialid()
- PRML读书后记(一): 拟合学习
- Allegro Xnet属性删除
- iptables的用法【笔记】
- io流
- Ubuntu安装Python的包管理工具Pip
- iOS视频播放Demo VideoPlayerDemo
- 多个div并排显示的居中问题——来自腾讯的一道面试题
- 欢迎使用CSDN-markdown编辑器
- xjtu_001:寻找完全数,并对完全数分类
- 无法掌握也不要尝试掌握
- 【炫技帖】模拟用户中心下拉时背景放大效果
- 2015-09-18