欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

myeclipse创建servlet_动力节点Java学院整理

程序员文章站 2023-12-21 14:54:16
现在我们来创建一个web应用,就叫【myservlet】好了,如下图所示: 可以从项目窗口中看出,只要创建web工程,就会自动帮我们创建【web-inf】目录,并在其...

现在我们来创建一个web应用,就叫【myservlet】好了,如下图所示:

myeclipse创建servlet_动力节点Java学院整理

可以从项目窗口中看出,只要创建web工程,就会自动帮我们创建【web-inf】目录,并在其下创建【lib】目录和web.xml文件。我们顺便来看一下刚创建的web.xml文件内容:

myeclipse创建servlet_动力节点Java学院整理

web.xml文件中只有设置主页而已,为什么先看这个,稍后会说到。

我们当然可以按照《servlet的学习(一)》中的方法来建立servlet,即创建一个类来继承servlet的实现类genericservelet,复写service()方法,并在web.xml文件中配置这个servlet。

但是!!!我们并不使用继承genericservelet类的方式,而是去继承genericservelet类的子类httpservlet类。这么做有什么好处呢?httpservlet是指能够处理http请求的servlet,它在原有servlet的接口上添加了一些http协议处理方法,比servlet接口的功能更加强大,所以我们只需要继承httpservlet类就可以了。如果你在myeclipse中对web工程建立servlet也是可以看到myeclipse是默认将你创建的servlet继承httpservlet的,如下图所示:

myeclipse创建servlet_动力节点Java学院整理

选择【servlet】,弹出,写好包名和我要创建的servlet名:secondservlet,如下图:

myeclipse创建servlet_动力节点Java学院整理

可以看到myeclipse自动将你要创建的servlet的父类选择为httpservlet。  

当我们选择了httpservlet类作为要继承的servlet父类,那么就该知道httpservlet类已经复写了service()方法,这个方法内的代码会自动判断用户的请求方式,如果为get请求,则调用httpservlet的doget()方法;如果为post请求,则调用dopost()方法,因此我们开发的时候,只需要复写doget()方法或dopost()方法,无需再去复写service()方法。具体可以看servlet的api文档中有关httpservlet的详细内容。

我们勾选doget方法和dopost方法,其他方法根据实际情况添加。接着点击【next】,会看到另一个设置窗口:

myeclipse创建servlet_动力节点Java学院整理

  【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文件中添加好了,为我们省事了不少。如下图所示:

myeclipse创建servlet_动力节点Java学院整理

我们来看看servlet中的内容:

myeclipse创建servlet_动力节点Java学院整理

  是的,有点乱,这是因为myeclipse在创建servlet时是按模板生成的,这里我们可以将这些不需要的代码先去除,最后的部分我们再来讲解如何修改myeclipse中的servlet模板。

  在这种继承httpservlet的servlet开发中,我们只关心doget方法和dopost方法,对于不知何时http请求是get方式何时是post方式来说,可以使用以下“小聪明”的方式来满足在一个方法中同时处理get请求或post请求:

myeclipse创建servlet_动力节点Java学院整理  

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

myeclipse创建servlet_动力节点Java学院整理

缺少servlet的jar包源码,这里我们有两种解决方式:

  一、到sun官网或oracle官网下载servlet源码;

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

myeclipse创建servlet_动力节点Java学院整理选择zip格式就可以(貌似tar.gz是给linux用的)。

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

myeclipse创建servlet_动力节点Java学院整理

那么我们就可以在myeclipse中点击“attach source”,因为是导入整个目录,所以选择“external folder”即可,导入之后我们就可以看到httpservlet的源码了,看到其service()方法,代码较长,这里就不附出,但思想就是先获取请求对象httpservletrequest的请求方式,然后用if判断来针对各个请求调用不同的方法,如doget方法或dopost方法。

  接下来我们就可以安心回到刚刚创建的servlet,在doget方法中编写代码,我们就写个简单的返回客户端一点数据好了:

public void doget(httpservletrequest request, httpservletresponse response)
      throws servletexception, ioexception {
    
    outputstream out = response.getoutputstream();
    out.write("hello servlet again !".getbytes());
    
  } 

  接着启动服务器,并将这个写好的servlet发布

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

  myeclipse创建servlet_动力节点Java学院整理

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: