现在我们来创建一个web应用,就叫【myservlet】好了,如下图所示:
可以从项目窗口中看出,只要创建web工程,就会自动帮我们创建【web-inf】目录,并在其下创建【lib】目录和web.xml文件。我们顺便来看一下刚创建的web.xml文件内容:
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的,如下图所示:
选择【servlet】,弹出,写好包名和我要创建的servlet名:secondservlet,如下图:
可以看到myeclipse自动将你要创建的servlet的父类选择为httpservlet。
当我们选择了httpservlet类作为要继承的servlet父类,那么就该知道httpservlet类已经复写了service()方法,这个方法内的代码会自动判断用户的请求方式,如果为get请求,则调用httpservlet的doget()方法;如果为post请求,则调用dopost()方法,因此我们开发的时候,只需要复写doget()方法或dopost()方法,无需再去复写service()方法。具体可以看servlet的api文档中有关httpservlet的详细内容。
我们勾选doget方法和dopost方法,其他方法根据实际情况添加。接着点击【next】,会看到另一个设置窗口:
【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”键,会发现:
缺少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方法中编写代码,我们就写个简单的返回客户端一点数据好了:
1
2
3
4
5
6
7
|
public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { outputstream out = response.getoutputstream(); out.write( "hello servlet again !" .getbytes()); } |
接着启动服务器,并将这个写好的servlet发布
最后,我们就能在浏览器查看:
记住,在地址栏中输入完主机地址和端口(如果有)后,如果web.xml没有另外设置的话,跟的是web项目名称和你在web.xml文件中为该servlet设置的对外访问路径。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。