JavaWeb开发2_第1页
JavaWeb开发2_第2页
JavaWeb开发2_第3页
JavaWeb开发2_第4页
JavaWeb开发2_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java Web开发开发 计算机系计算机系孙杰孙杰Servlet开发开发2n本章内容1.什么Servlet2. Servlet的主要方法3. Servlet运行原理(生命周期)4. Servlet开发流程5. MyEclipse中开发Servlet6. Servlet实例2.1 什么是什么是ServletnServlet是用Java语言编写的运行在服务器端的小应用程序,能够接收Web客户端的请求,并能对Web客户端进行响应,通常是通过HTTP(HyperText Transfer Protocol)协议进行工作的。n可以认为Servlet是服务器端的一个动态Java程序,用户通过访问这个程序获

2、取服务器的服务。2.2 Servlet的主要方法的主要方法nServlet是一个Java类,通常会有3类方法,分别是:init方法,用于初始化。destroy方法,用于释放资源。service方法,服务类方法,对用户的请求进行处理,并对用户进行响应,几乎所有处理功能都在这里完成。这类方法可以有多个,最常用的是doGet和doPost方法。Servlet的生命周期的生命周期n装载Servlet:这项操作一般是动态执行。有些服务器提供了相应的管理功能,可以在启动的时候就装载Servlet,并能够初始化特定的Servlet:n创建过程:创建一个Servlet实例 ;n初始化过程:调用Servlet的

3、init()方法 ;n响应服务:如果容器接收到对此Servlet的请求,那么它调用Servlet的service()方法 ;n销毁释放资源:实例被销毁,通过调用Servlet的destroy()方法销毁Servlet 。2.3 Servlet运行原理运行原理n1.Servlet的工作过程如下的工作过程如下 Servlet容器接收到客户端的请求时,先判断用户所请求的Servlet对象是否存在。如果不存在,则加载Servlet类、创建Servlet对象并实例化,然后调用init方法进行初始化。 容器创建request和response对象,并且创建一个线程,调用Servlet对象的service方

4、法(间接调用doGet方法或者doPost方法)。 service方法产生响应,容器将响应发回客户端。 容器销毁reqeust和response对象以及相应的线程。n注意:加载Servlet类、创建对象、调用初始化方法init和销毁方法destroy都只有一次。当Web应用被卸载或者服务器被关闭的时候,系统卸载Servlet,调用destroy方法释放资源。 2.3 Servlet运行原理运行原理n2.Servlet的加载有两种方式:的加载有两种方式:第一次请求的时候加载。服务器启动的时候加载。3.2.4开发开发Servlet基本流程基本流程n由于MyEcilpse自身具有的强大功能,上面开发

5、Servlet的过程中某些操作已经由MyEclipse自动完成,极大的方便了程序员开发程序。但当脱离集成开发工具时,对开发一个Servlet的基本流程也应有所了解。2.4开发开发Servlet基本流程基本流程n开发一个Servlet程序基本包括以下几步:(1)编写Servletn引入用到的包,需要的导入的包有:javax.servlet.*,javax.servlet.http.*等n定义类的基本框架并继承HttpServletn重写成员方法。如果需要对Servlet进行初始化,需要重写init方法。如果需要在卸载Servlet的时候执行一些功能,可以重写destory方法。一般情况下,根据需

6、要完成的功能只需要重写服务类方法即可。服务类方法包括doGet方法和doPost方法等。 nimport javax.servlet.ServletException;nimport javax.servlet.http.HttpServlet;nimport javax.servlet.http.HttpServletRequest;nimport javax.servlet.http.HttpServletResponse;npublic class TestServlet extends HttpServlet npublic void init() throws ServletExce

7、ption n n n/Process the HTTP Get requestnpublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException n n npublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException n n nServlet中获取参数n隐含对象Reque

8、stString request.getParamter(参数名称);例子:String userName=“”;userName=request.getParameter(“username”);System.out.println(“userName”+userName);HttpServletRequest常用常用APInHttpServletRequest的常用方法有:获取单值请求参数的方法:getParamter();获取多值请求参数的方法:getParameterValues();获取请求参数名字的方法:getParameterNames();获取session对象的方法:getS

9、ession();获取Web应用根路径的方法:getContextPath();获取Servlet路径的方法:getServletPath();获取request中的属性的方法:getAttribute();设置request中的属性的方法:setAttribute();获取请求转发对象的方法:getRequestDispatcher();2.4开发开发Servlet基本流程基本流程(2)编译Servletn在MyEcilpse中,.java文件会在保存后自动编译。n若未安装MyEcilpse,则需要程序员手工编译Servlet。需要事先把位于%TOMCAT_HOME%commonlib下的s

10、ervlet-api.jar压缩包添加到环境变量中。 使用JDK中的javac命令编译 。2.4开发开发Servlet基本流程基本流程(3)配置ServletnServlet编写完之后,作为Web应用的组成部分,需要在配置文件web.xml中进行配置。nn Servlet的名称n Servlet类的全路径n n 参数名1n 参数值1n n 启动时加载的顺序n nn servlet的名称n 访问路径n2.4 Servlet的访问路径和的访问路径和url-pattern 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访

11、问的是http:/localhost/test/aaa.html,我的应用上下文是test,容器会将http:/localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了,其匹配规则和顺序如下:1. 精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http:/localhost/test ,这个时候容器就会先 进行精确路径匹配,发现/test正

12、好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。2. 最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http:/localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。2.4 Servlet的访问路径和的访问路径和url-pattern n3. 扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action,*.

13、don4. 如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet。2.4 Servlet的访问路径和的访问路径和url-pattern 在web.xml文件中,以下语法用于定义映射:n1. 以”/开头和以”/*”结尾的是用来做路径映射的。n2. 以前缀”*.”开头的是用来做扩展映射的。n3.“/” 是用来定义default servlet映射的。n4.剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action2.4开发开发Servlet基本流程基本流程(4

14、)部署ServletnServlet编写完成之后,需要部署到服务器才能访问,编译好的文件需要放在Web应用的WEB-INFclasses下面。n利用MyEclipse创建的Servlet,成功编译后其.class文件已自动放置到WEB-INFclasses目录下。2.4开发开发Servlet基本流程基本流程(5)测试Servletn测试方式: n访问Servlet时,要使用在web.xml中配置的url地址格式进行访问。2.5 MyEclipse中开发中开发Servletn利用MyEclipse,可以在Web工程中非常方便地创建Servlet程序,并且可以根据需要为程序员自动生成其中的大部分方

15、法。程序员只需在此基础上进行修改就可以快速开发出自己的程序。 2.5 MyEclipse中开发中开发Servletn利用MyEclipse开发Servlet的步骤如下:(1)在创建的myweb工程的src目录上,右击鼠标,选择NewServlet。(2)在Name处输入Servlet名字,如MyServlet,单击Next按钮。2.5 MyEclipse中开发中开发Servlet(3)在Servlet/JSP Mapping URL处配置Servlet的mapping url信息,如:/test/MyServlet。此处配置的mapping url即为将来访问Servlet时的地址格式。单击F

16、inish按钮结束。2.5 MyEclipse中开发中开发Servlet(4)查看生成的Servlet源文件:在Eclipse环境中,创建Servlet时可以选择自动生成构造方法、init方法、destroy方法、doGet方法和doPost方法。 (5)查看生成的Servlet源文件:MyEclipse会为新建的Servlet在web.xml中自动生成相应的配置代码。每个Servlet在web.xml中都对应一对标签和一对标签。其中:标签用于声明Servlet。其中的子标签又包括:n用于声明Servlet的名字,是web.xml中内部使用的名字。n标签:用于声明Servlet所对应的类名。标

17、签用于进行Servlet映射。其中的子标签又包括:n标签:表示Servlet的名字,需要和上面标签的子标签中声明的名字保持一致。n标签:用于配置Servlet的访问地址。2.5 MyEclipse中开发中开发Servlet(6)测试Servlet的运行:可以通过以下3种方式进行:通过在浏览器中直接输入地址访问::8080/myweb/test/MyServlet通过超链的形式访问:第一个Servlet通过表单提交的方式访问:2.5 MyEclipse中开发中开发Servletn启动Tomcat服务器,使用第一种方式,即在浏览器地址栏中直接输入地址访问:http:/

18、localhost:8080/myweb/test/MyServlet运行效果如下:2.6 Servlet实例实例1.HelloWorld程序1)引入包 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;2.6 Servlet实例实例1.HelloWorld程序2)处理GET请求 public class HelloWorld extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException1.HelloWorld程序3)返回结果 response.setContentType(text/html);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论