servlet学习入门
servlet到底是什么?
其实你可以把一个servlet理解成一个动态web资源,在一个web应用中可以有多个servlet,每一个servlet都有一个对外访问路径,也就是你在浏览器中输入的URL。而哪个请求对应那个servlet则是由web应用下的web.xml进行配置。
web应用的结构图:
原理如下:
servlet的生命周期:
- 1)通常情况下,服务器会在Servlet第一次被调用时创建该Servlet类的实例对象(servlet出生),创建出对象后立即调用init()方法做初始化操作;
- (2)一旦被创建出来,该Servlet实例就会驻留在内存中,为后续对这个Servlet的请求做服务,每次对这个Servlet的访问都会导致Servlet中Service方法执行;
- (3)当web应用被移除容器或者关闭服务器时,随着web应用的销毁,Servlet也会被销毁(servlet死亡)。在销毁之前服务器会调用Servlet的destroy方法做一些善后的工作。
有3个方法代表了Servlet的生命周期:
- init方法,负责初始化Servlet对象。
- service方法,负责响应客户的请求(调用doGet或doPost等方法)。
- destroy方法,当Servlet对象退出生命周期时,负责释放占用的资源。
注:在Servlet的整个生命周期内,Servlet的init方法只有在servlet被创建时被调用一次,每次对这个Servlet的访问都会导致Servlet中Service方法执行。
在eclipse中创建web项目
首先你要确定自己安装的是eclipse for j2ee,理论上j2se版本也可以建,但是比较麻烦,这里不做赘述。
本文以eclipse 4.7.2,也就是eclipse oxygen,tomcat 8.5.7为例
1.File-New-other-Dynamic web Project,点击next
这里注意要点next,不要直接点finish。
2.出现工程设定窗口中设定工程的名字( 对应工程的名字 )和Dynamic web module version(版本),我使用的是tomacat8.5,对应的是3.1)单击next
上面的working sets是工作集的意思,暂时不用管,以后用到再说。
3.点击next,进行下一步
4.上面的src即class文件的存放位置。继续点next进行下一步。
注意上面画红框的部分,这个意思是是否生成web.xml文件,如果画上✔,那么会在WEB-INF文件夹下生成一个web.xml文件。但是因为sevlet3.0以后可以通过注解来配置servlet的对外访问路径等等其他设置。这里我们采用两种方式,一种是选择web.xml,一种是通过@WebServlet注解来配置。
5.在java Resources下src下新建servlet,主要extends的superclass选择httpservlet。
点击next
继续点击next
红框内是需要选择继承的方法,一般选择doGet()跟doPost()。然后点击Finish,生成如下:
6.这样就可以编辑servlet了。编辑完之后,一定要记得配置web.xml或者是@WebServlet注解。
在web.xml中进行如下配置
<servlet>
<servlet-name>Demo03</servlet-name>
<servlet-class>cn.shenqueying.Demo03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo03</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
<servlet>元素就是填写servlet的name跟从包名开始的class name。servlet-mapping标签则是填写映射,即对外的访问路径,url-pattern就是外部浏览器访问的文件名。但是在浏览器输入时,要从项目名开始,加上url-pattern
如果是通过注解来配置,就是在@WebServlet注解中加入name=,urlPatterns=,两个属性,效果跟上面一样。
其实@WebServlet注解,可以配置很多其他别的东西,日后在详细了解。也可以把urlPatterns改为value,效果一样。
7.我们将servlet编辑完成后,通过ctrl+f11进行运行,其实这时就是将开发的web应用自动的部署在了tomcat服务器上了,打开tomcat-conf-server.xml的<host>标签的<context>下可以找到已经配置上的应用。当然我们也可以手动配置。
8.
https://www.ibm.com/developerworks/cn/java/j-lo-servlet/这个文章讲的是servlet的底层实现,暂时看不懂,以后再看吧
9.我在访问时出现出现了如下错误
- web.xml中< servlet-class >路径配置错误,检查servlet类是否在该路径***意要包含package名
- web-inf/classes目录下没有XXXX.class文件,应该编译把classes作为输出目录
- servlet类同时在web.xml中配置并加上了@webservlet的注解,去掉其中之一即可
- tomcat并没有成功部署项目,检查servlet是否初始化,即在init方法里输出日志或断点,看是否进入