Java web-servlet

1. servlet概述

1.1.servlet是什么

Servletsun公司提供的一门用于开发动态web资源的技术。

按照这套规范写出来的Servlet可以放置到web应用中在Servlet容器中运行。

1.2.开发Servlet步骤

1)写一个类, 实现Servlet接口, 并实现其中的方法

2)在web.xml中为servlet配置对外访问路径。

2.使用myeclipse开发servlet

使用myeclipse开发Servlet程序时, 可以新建一个Servlet, 默认继承HttpServlet, Servlet内部会覆盖doGetdoPost方法, 分别来处理GETPOST请求。

2.1.新建项目

新建一个Web Project,给一个项目名称,其他保持默认即可,然后finish,弹出的对话框选择yes即可。

2.2.新建一个servlet

新建一个servlet,如果new中找不到servlet,注意视图是否切换到MyEclipse中,给一个包名和类名,下面对勾只留doGet()doPost(),其他去掉,下一步


这里将最后两行删掉,是一些xml中的提示,其他地方一般保持默认即可,也可以修改对外访问路径,其中nameURL会自动配置到xml中。最后finish


servlet中的注释以及方法中的默认实现全部删掉。

 

为什么要继承HttpServlet?

因为这是一个继承了GenericServlet的类,已经提供doGet()doPost()方法,可以方便我们开发web项目。

GenericServlet是一个基础的实现,如果要用此类,需要自己写doGet()doPost()方法,并且需要在service方法中对请求进行判断,会比较麻烦。

HttpServlet底层又是如何实现的?

可以打开HttpServlet源码,发现HttpServlet也是继承自GenericServlet,同时,HttpServlet会写各种方法,比如doGet()doPost(),然后在service方法中进行判断,不同的请求调用不同的方法。

注意:复制一个servletweb.xml中是不会自动生成配置信息的,所以一般不要复制,而是要新建!

2.3.web应用发布到自己的tomcat

这里注意项目名称是否是自己要发布的项目,然后finish,最后ok


也可以修改发布的项目名称,参见/resource/myeclipse中修改web应用发布到Tomcat中的应用的名称.pdf

 

MyEclipse中启动tomcat


启动后,可以通过浏览器访问servlet,比如:

http://localhost/day09/servlet/SecondServlet

 

可以查看serverstomcat如果是debug模式,则可以修改方法中的代码而无需重启服务器,但是若要新建一个servlet,则需要重启服务器。

3. Servlet的继承结构

Servlet接口 – 提供了一个Servlet应该具有的最基本的功能

|

|-- GenericServlet, 实现了Servlet接口, 并实现了其中大部分的方法, 但是service方法没有实现, 这个方法需要开发人员自己去实现

|

|-- HttpServlet, 继承了GenericServlet, 并实现了service方法, service方法中是根据不同的请求方式, 调用不同的doXxx方法, 我们在开发中, 只需要写一个类, 继承HttpServlet, 并覆盖 doGet()和 doPost()方法分别来处理Get请求和POST请求即可!!

4.修改servlet模版

方式一:

将\resource\修改Servlet模板\com.genuitec.eclipse.wizards_9.0.0.me201108091322.jar文件拷贝到:

[Myeclipse安装目录]\Common\plugins目录下,会提示是否替换文件,确定替换即可,如果未出现提示,则看是否进对目录,或者是其他版本的MyEclipse

 

方式二:

(1)[Myeclipse安装目录]\Common\plugins目录下找到文件:com.genuitec.eclipse.wizards.xxx.jar,在此文件中的Templates目录下可以看到Servlet.java源代码。

(2)打开源代码,将doGet()doPost()两个方法的注释和方法中的内容删掉,在doPost()中调用doGet()方法即可。

(3)修改之后保存

(4)重新启动Myeclipse即可以使用新的模板代码了

5.Servlet调用过程

5.1.调用过程


5.2.Servlet生命周期

Servlet实例在第一次被访问时创建, 创建之后服务器会立即调用init方法进行初始化的操作, 从此以后该实例会一直驻留在服务器的内存中, 为后续的请求服务, 只要有请求访问servlet, 服务器就会调用service方法来处理这个请求, 直到服务器关闭或者是web应用被移出容器时为止, 随着web应用的销毁, servlet实例也会跟着销毁, 在销毁之前, 服务器就调用destroy方法进行善后的处理.

6.servlet虚拟路径的配置

web.xml中的servlet对外访问的虚拟路径的配置, 可以直接写一个路径, 或者通过 * 号匹配符写一个路径.

方式一:直接写一个路径: /servlet/SecondServlet

方式二:通过*号匹配符写一个路径:

(1) / 开头, /* 结尾, : /servlet/* /a/*  /*

(2) *.后缀 的形式, : *.html *.servlet  *.do *.action

使用*号匹配符写路径, 路径的配置变得更加灵活, 但是也可能会造成, 一个url会被多个servlet Mapping所匹配

Urlhttp://localhost/day09/servlet/SecondServlet.do

Servlet1Test1: /servlet/*

Servlet2Test2: *.do

匹配规则:

*.后缀的优先级永远最低!!

哪一个更接近哪一个起作用!!

示例:

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1

当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应

Servlet引擎将调用Servlet3

当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1

当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet2

ServletRequest继承结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值