您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > JavaWeb开发2
JavaWeb开发计算机系孙杰Servlet开发本章内容1.什么Servlet2.Servlet的主要方法3.Servlet运行原理4.Servlet开发流程5.MyEclipse中开发Servlet6.Servlet实例2.1什么是ServletServlet是用Java语言编写的运行在服务器端的小应用程序,能够接收Web客户端的请求,并能对Web客户端进行响应,通常是通过HTTP(HyperTextTransferProtocol)协议进行工作的。可以认为Servlet是服务器端的一个动态Java程序,用户通过访问这个程序获取服务器的服务。2.2Servlet的主要方法Servlet是一个Java类,通常会有3类方法,分别是:init方法,用于初始化。destroy方法,用于释放资源。service方法,服务类方法,对用户的请求进行处理,并对用户进行响应,几乎所有处理功能都在这里完成。这类方法可以有多个,最常用的是doGet和doPost方法。Servlet的生命周期装载Servlet:这项操作一般是动态执行。有些服务器提供了相应的管理功能,可以在启动的时候就装载Servlet,并能够初始化特定的Servlet:创建过程:创建一个Servlet实例;初始化过程:调用Servlet的init()方法;响应服务:如果容器接收到对此Servlet的请求,那么它调用Servlet的service()方法;销毁释放资源:实例被销毁,通过调用Servlet的destroy()方法销毁Servlet。2.3Servlet运行原理1.Servlet的工作过程如下①Servlet容器接收到客户端的请求时,先判断用户所请求的Servlet对象是否存在。如果不存在,则加载Servlet类、创建Servlet对象并实例化,然后调用init方法进行初始化。②容器创建request和response对象,并且创建一个线程,调用Servlet对象的service方法(间接调用doGet方法或者doPost方法)。③service方法产生响应,容器将响应发回客户端。④容器销毁reqeust和response对象以及相应的线程。注意:加载Servlet类、创建对象、调用初始化方法init和销毁方法destroy都只有一次。当Web应用被卸载或者服务器被关闭的时候,系统卸载Servlet,调用destroy方法释放资源。2.3Servlet运行原理2.Servlet的加载有两种方式:第一次请求的时候加载。服务器启动的时候加载。3.2.4开发Servlet基本流程由于MyEcilpse自身具有的强大功能,上面开发Servlet的过程中某些操作已经由MyEclipse自动完成,极大的方便了程序员开发程序。但当脱离集成开发工具时,对开发一个Servlet的基本流程也应有所了解。2.4开发Servlet基本流程开发一个Servlet程序基本包括以下几步:(1)编写Servlet引入用到的包,需要的导入的包有:javax.servlet.*,javax.servlet.http.*等定义类的基本框架并继承HttpServlet重写成员方法。如果需要对Servlet进行初始化,需要重写init方法。如果需要在卸载Servlet的时候执行一些功能,可以重写destory方法。一般情况下,根据需要完成的功能只需要重写服务类方法即可。服务类方法包括doGet方法和doPost方法等。importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassTestServletextendsHttpServlet{publicvoidinit()throwsServletException{}//ProcesstheHTTPGetrequestpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}1.Servlet中获取参数隐含对象RequestStringrequest.getParamter(参数名称);例子:StringuserName=“”;userName=request.getParameter(“username”);System.out.println(“userName”+userName);HttpServletRequest常用APIHttpServletRequest的常用方法有:获取单值请求参数的方法:getParamter();获取多值请求参数的方法:getParameterValues();获取请求参数名字的方法:getParameterNames();获取session对象的方法:getSession();获取Web应用根路径的方法:getContextPath();获取Servlet路径的方法:getServletPath();获取request中的属性的方法:getAttribute();设置request中的属性的方法:setAttribute();获取请求转发对象的方法:getRequestDispatcher();2.Servlet中处理返回结果隐含对象RequestStringrequest.getParamter(参数名称);例子:StringuserName=“”;userName=request.getParameter(“username”);System.out.println(“userName”+userName);2.4开发Servlet基本流程(2)编译Servlet在MyEcilpse中,.java文件会在保存后自动编译。若未安装MyEcilpse,则需要程序员手工编译Servlet。需要事先把位于%TOMCAT_HOME%\common\lib下的servlet-api.jar压缩包添加到环境变量中。使用JDK中的javac命令编译。2.4开发Servlet基本流程(3)配置ServletServlet编写完之后,作为Web应用的组成部分,需要在配置文件web.xml中进行配置。servletservlet-nameServlet的名称/servlet-nameservlet-classServlet类的全路径/servlet-classinit-paramparam-name参数名1/param-nameparam-value参数值1/param-value/init-paramload-on-startup启动时加载的顺序/load-on-startup/servletservlet-mappingservlet-nameservlet的名称/servlet-nameurl-pattern访问路径/url-pattern/servlet-mapping2.4Servlet的访问路径和url-pattern当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是,我的应用上下文是test,容器会将去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了,其匹配规则和顺序如下:1.精确路径匹配。例子:比如servletA的url-pattern为/test,servletB的url-pattern为/*,这个时候,如果我访问的url为,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。2.最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。2.4Servlet的访问路径和url-pattern3.扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action,*.do4.如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个defaultservlet,则容器会将请求丢给defaultservlet。2.4Servlet的访问路径和url-pattern在web.xml文件中,以下语法用于定义映射:1.以”/’开头和以”/*”结尾的是用来做路径映射的。2.以前缀”*.”开头的是用来做扩展映射的。3.“/”是用来定义defaultservlet映射的。4.剩下的都是用来定义详细映射的。比如:/aa/bb/cc.action2.4开发Servlet基本流程(4)部署ServletServlet编写完成之后,需要部署到服务器才能访问,编译好的文件需要放在Web应用的WEB-INF\classes下面。利用MyEclipse创建的Servlet,成功编译后其.class文件已自动放置到WEB-INF\classes目录下。2.4开发Servlet基本流程(5)测试Servlet测试方式:访问Servlet时,要使用在web.xml中配置的url地址格式进行访问。2.5MyEclipse中开发Servlet利用MyEclipse,可以在Web工程中非常方便地创建Servlet程序,并且可以根据需要为程序员自动生成其中的大部分方法。程序员只需在此基础上进行修改就可以快速开发出自己的程序。2.5MyEclipse中开发Servlet利用MyEclipse开发Servlet的步骤如下:(1)在创建的myweb工程的src目录上,右击鼠标,选择NewServlet。(2)在Name处输入Servlet名字,如MyServlet,单击Next按钮。2.5MyEclipse中开发Servlet(3)在Servlet/JSPMappingURL处配置Servlet的mappingurl信息,如:/test/MyServlet。此处配置的mappingurl即为将来访问Servlet时的地址格式。单击Finish按钮结束。2.5MyEclipse中开发Servlet(4)查看生成的Servlet源文件:在Eclipse环境中,创建Servlet时可以选择自动生成构造方法、init方法、destroy方法、doGet方法和doPost方法。(5)查看生成的Servlet源文件:MyEclipse会为新建的Servlet在web.xml中自动生成相应的配置代码。每个Servlet在web.xml中都对应一对servlet标签和一对servlet-mapping标
本文标题:JavaWeb开发2
链接地址:https://www.777doc.com/doc-6398516 .html