Servlet的学习(三)

  本篇接上一篇《Servlet的学习(二)》 ,主要讲诉如何使用MyEclipse来开发Servlet,和导入Servlet所须要的源代码。html

  如今咱们来建立一个web应用,就叫【myservlet】好了,以下图所示:web

  

  能够从项目窗口中看出,只要建立web工程,就会自动帮咱们建立【WEB-INF】目录,并在其下建立【lib】目录和web.xml文件。咱们顺便来看一下刚建立的web.xml文件内容:浏览器

  

  Web.xml文件中只有设置主页而已,为何先看这个,稍后会说到。服务器

 

  咱们固然能够按照《Servlet的学习(一)》中的方法来创建Servlet,即建立一个类来继承Servlet的实现类GenericServelet,复写service()方法,并在web.xml文件中配置这个Servlet。oracle

  可是!!!咱们并不使用继承GenericServelet类的方式,而是去继承GenericServelet类的子类HttpServlet类。这么作有什么好处呢?HttpServlet是指可以处理HTTP请求的Servlet,它在原有Servlet的接口上添加了一些HTTP协议处理方法,比Servlet接口的功能更增强大,因此咱们只须要继承HttpServlet类就能够了。若是你在MyEclipse中对web工程创建Servlet也是能够看到MyEclipse是默认将你建立的Servlet继承HttpServlet的,以下图所示:app

  

选择【Servlet】,弹出,写好包名和我要建立的Servlet名:SecondServlet,以下图:jsp

  

能够看到MyEclipse自动将你要建立的Servlet的父类选择为HttpServlet。学习

  

  当咱们选择了HttpServlet类做为要继承的Servlet父类,那么就该知道HttpServlet类已经复写了service()方法,这个方法内的代码会自动判断用户的请求方式,若是为GET请求,则调用HttpServlet的doGet()方法;若是为POST请求,则调用doPost()方法,所以咱们开发的时候,只须要复写doGet()方法或doPost()方法,无需再去复写service()方法。具体能够看Servlet的API文档中有关HttpServlet的详细内容。url

  咱们勾选doGet方法和doPost方法,其余方法根据实际状况添加。接着点击【Next】,会看到另外一个设置窗口:spa

  

  【Generate/Map web.xml file】:将建立好的Servlet映射到web.xml文件中,这样能省咱们不少事,当咱们选择将Servlet映射进web.xml文件中时,就能够根据下面几个指定来设置映射到web.xml文件中哪些内容。

  【Servlet/JSP Class Name】:这是做为在web.xml文件中<servlet-class>标签中的内容。

  【Servlet/JSP  Name】:设置在web.xml文件中<servlet-name>标签中的内容。

  【Servlet/JSP Mapping URL】:设置web.xml文件中<servlet-mapping>标签下<url-pattern>标签的内容,也就是设置该Servlet的对外访问路径。

  【File Path of web.xml】:该web.xml的路径,通常不用设置。

 

  点击完成以后,咱们再来看看web.xml文件,是的,刚才设置的Servlet到web.xml文件的映射都已经被MyEclipse在web.xml文件中添加好了,为咱们省事了很多。以下图所示:

  

  

咱们来看看Servlet中的内容:

  

  是的,有点乱,这是由于MyEclipse在建立Servlet时是按模板生成的,这里咱们能够将这些不须要的代码先去除,最后的部分咱们再来说解如何修改MyEclipse中的Servlet模板。

  在这种继承HttpServlet的Servlet开发中,咱们只关心doGet方法和doPost方法,对于不知什么时候http请求是GET方式什么时候是POST方式来讲,可使用如下“小聪明”的方式来知足在一个方法中同时处理GET请求或POST请求:

  

  

  刚才说到在HttpServlet中的service()方法已经复写了其父类GenericServlet的service()方法,那咱们就来看一下HttpServlet中的service()方法,将光标点击HttpServlet,而后按下键盘“F3”键,会发现:

  

  

  多么熟悉的场景,这个问题曾在《Eclipse中导入第三方源码的问题和备用解决方案》中提到过,对,缺乏Servlet的jar包源码,这里咱们有两种解决方式:

  一,到sun官网或oracle官网下载Servlet源码;

  二,到Apache-Tomcat官网下载Tomcat的源码,这里我选择这种方式:

  选择zip格式就能够(貌似tar.gz是给Linux用的)。

  下载解压后,目录后面是带有“src”字样:

  

  那么咱们就能够在MyEclipse中点击“Attach Source”,由于是导入整个目录,因此选择“External Folder”便可,导入以后咱们就能够看到HttpServlet的源码了,看到其service()方法,代码较长,这里就不附出,但思想就是先获取请求对象HttpServletRequest的请求方式,而后用if判断来针对各个请求调用不一样的方法,如doGet方法或doPost方法。

  接下来咱们就能够安心回到刚刚建立的Servlet,在doGet方法中编写代码,咱们就写个简单的返回客户端一点数据好了,跟在《Servlet的学习(一)》同样:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException  {
        
        OutputStream out = response.getOutputStream();
        out.write("Hello servlet again !".getBytes());
        
    } 

  接着启动服务器,并将这个写好的Servlet发布,具体请看《Servlet的学习(二)

  最后,咱们就能在浏览器查看:

  

  记住,在地址栏中输入完主机地址和端口(若是有)后,若是web.xml没有另外设置的话,跟的是web项目名称和你在web.xml文件中为该Servlet设置的对外访问路径。

 

  最后谈一谈,在MyEclipse中建立Servlet时自带模板的问题,这个问题能够看看一篇很是好的博客,同时讲到了修改MyEclipse自带的Servlet模板和JSP模板:《修改MyEclipse默认的Servlet和jsp代码模板》

  同时建议,在修改模板以前,最好备份一份原来的文件。

相关文章
相关标签/搜索