servlet技术介绍以及运行原理

上传人:M****1 文档编号:489504399 上传时间:2023-09-28 格式:DOCX 页数:8 大小:23.18KB
返回 下载 相关 举报
servlet技术介绍以及运行原理_第1页
第1页 / 共8页
servlet技术介绍以及运行原理_第2页
第2页 / 共8页
servlet技术介绍以及运行原理_第3页
第3页 / 共8页
servlet技术介绍以及运行原理_第4页
第4页 / 共8页
servlet技术介绍以及运行原理_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《servlet技术介绍以及运行原理》由会员分享,可在线阅读,更多相关《servlet技术介绍以及运行原理(8页珍藏版)》请在金锄头文库上搜索。

1、一、 ServletServlet是sun公司提供的一种用于开发动态web资源的技术为了方便web服务器对动态web资源的管理,sun公司在其api中定义了一个Servlet接口服务器针对接口进行调用,我们编写的应用程序针对接口进行实现习惯性地,我们把实现了Servlet接口的java类统称为Servlet1. javaweb 学什么用 java 语言开发动态的web资源,接下来就是介绍如何开发动态的web资源对于java程序员而言,所谓动态web资源就是可以运行在服务器上的java程序2. 实现服务器管理java程序开发人员写好一个java类,到底有哪些方法tomcat服务器是不可能知道的t

2、omcat服务器需要执行我们编写的java类就需要知道我们的java类有哪些方法,然后在适当的时间调用这些方法, 所以我们在写的java程序要想运行在服务器上就必须要实现一个特殊的接口 Servlet.javainterface Servlet . Servlet 接口中就定义了可以被tomcat服务器调用的java方法通常来讲,我们将实现了Servlet接口的java类称之为 Servlet编写好的Servlet需要web.xml文件中做配置才能供外界访问3. 实现第一个Servlet程序3.1 写一个java类实现Servlet接口package cn.itcast.servlet;imp

3、ort java.io.*;import javax.servlet.*;public class HelloWorldServlet extends GenericServlet/ 实现 service 方法public void service(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException / 向浏览器输出一句话PrintWriter out = response.getWriter();out.write(hello world!);public vo

4、id init()throws ServletException / 初始化 servlet 时被调用System.out.println(init();public void destroy() / 摧毁 servlet 时被调用System.out.println(destroy();3.2. 导入 servlet jar包set classpath=%classpath%;D:apache-tomcat-6.0.20libservlet-api.jar3.3. 编译带包的类javac -d . HelloWorldServlet.java3.4. 将包拷贝至 day05/WEB-INF/

5、classes 目录下 - 发布 web 工程3.5. 在 web.xml 文件中做映射HelloWorldServletcn.itcast.servlet.HelloWorldServletHelloWorldServlet/HelloWorldServlet注意: servlet 对象一旦创建就会驻留在内存中,为所有的请求服务,什么时候销毁直到服务器关闭时或web应用被移除才销毁3.6. Servlet 执行流程图4. 用 eclipse 工具开发 Servlet 4.1. 建一个 web project 4.2. 在src下建包,创建一个java类实现Servlet接口 4.3 在 We

6、brootWEB-INFweb.xml 做 servlet 映射4.4 配置 tomcat 服务器window- preferences - tomcat6.x4.5 将web工程发布至tomcat 服务器发布的web应用名称可以配置: web工程右键 选properties-myeclipse-web默认情况使用工程名作为发布后的web应用名4.6 启动tomcat服务器运行程序5. HttpServlet对象一般来讲我们开发一个Servlet会去继承 HttpServlet在 eclipse 下开发Servlet 可以直接新建一个Servlet, 覆写 HttpServlet 的 doGe

7、t和doPost方法继承 HttpServlet 的原因是: HttpServlet实现了service方法,将ServletRequst和ServletResponse强转为子类 HttpServletRequest和HttpServletResponse,让我们用起来更加方便,同时,在service方法中,它判断了请求方式,根据请求方式来调用 doGet 和 doPost6. servlet 生命周期Servlet 在首次被访问时,会初始化,调用 init 方法, 驻留在内存, 当服务器停止或当前web应用被移除时,servlet会被摧毁, 调用 destroy 方法浏览器发送请求 , s

8、ervice方法会被调用二、 Servlet 细节1. * 号统配符在映射 Servlet 路径时可以使用/* 或 *.扩展名 的形式注意: 两者不能同时使用/* 具有较高的优先级2. load-on-startup 元素元素下可以配置子元素,配置方式如下:1如果一个Servlet配置了该项,web容器会在web应用被加载时就初始化该Servlet,数字越小则越先初始化3. tomcatconfweb.xml服务器下所有web 应用中的web.xml 都会自动继承该文件中所有的配置http:/localhost:8080/day05/a.html a.html是资源名上面的url访问的url在

9、web.xml文件中并没有配置此时会去访问缺省的Servlet,在tomcatconfweb.xml文件中就配置了一个缺省的DefaultServlet DefaultServlet帮我们去web应用下读取 a.html 文件,并打给浏览器,如果没有发送 404 页面也就说,我们通过ie访问服务器访问的都是 Servlet4. Servlet线程安全问题解决Servlet线程安全问题: 加上同步的锁(lock) 实现SingleThreadModel接口的Servlet服务器会做判断,当有请求过来,如果Servlet对象忙着呢,服务器会再创建一个Servlet对象为用户提供服务,如果Servl

10、et闲置,就直接提供服务这样的方式实际上是回避了线程安全问题, 单线程访问Servlet, 这样的方式不可取三、 ServletConfig 对象作用 : 封装 Servlet 初始化参数1. 可以在 web.xml 文件中 Servlet 元素下 为Servlet配置初始化参数 name aaaa2. web 容器在初始化Servlet时,会将初始化参数封装到一个 ServletConfig 对象中,传给init方法3. 我们在Servlet 中覆写 init方法,就可以获得ServletConfig4. 父类 GenericServlet 中定义了一个成员变量用于记住此对象,并提供了 ge

11、tServletConfig 方法我们可以直接调用此方法 获得 config 对象5. 再调用 getInitParameter(name) 方法获得想要配置项/ 指定编码/ 获得ServletConfig 对象ServletConfig config = getServletConfig();String encoding = config.getInitParameter(encoding);System.out.println(encoding= + encoding);四、 ServletContext 对象ServletContext1. ServletContext对象代表整个we

12、b应用ServletContext也被称作Servlet的上下文,也就是Servlet的运行环境2. ServletContext对象是一个域对象(可以存储数据的对象)ServletContext对象的内部维护了一个map集合, key是String类型 value是Object类型class ServletContext private Map map ; 通常来讲,我们会将全局的数据存入 ServletContext 域对象3. ServletContext 作为域对象, 多个Servlet 可以共享数据Servlet6/ 1. 获得ServletContext 对象ServletCont

13、ext context = getServletContext();/ 2. 存入域context.setAttribute(“name”, “zhangsan”);Servlet7/ 获得 context 域, getAttributeString name = (String) getServletContext().getAttribute(name);4.获取web应用的初始化参数getContext().getInitParameter(“name”);5. 统计一个web应用的访问量 在 context 域中维护一个count变量 访问Servlet时,取出变量 加16. 实现请求转发实现请求转发需要用到 转发对象 RequestDispatcher 有一个 forward 方法能转发请求7. 如何读取工程中的文件7.1. 读取web工程下的资源文件/ 获得绝对路径 String realP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号