疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

怎么学习Servlet呢


 

 
一个Servlet程序要按照以下的步骤进行开发:
 
* 创建一个Java类并继承HttpServlet类,重写其中的doGet等方法
 
* 配置web.xml文件,其配置代码如下:
 
<!--配置Servlet,tomcat服务器会读取其中的内容--><servlet><!--Servlet内部名称,可以自定义,但是最好不要乱写,尽量保证有意义--><servlet-name>写创建的类的名字</servlet-name><!--Servlet类全名,包名+简单类名--><servlet-class>写创建的类的全名(包名+简单类名)</servlet-class></servlet><!--Servlet映射配置--><servlet-mapping><!--Servlet内部名称,可以自定义,但是最好不要乱写,尽量保证有意义,一定要和上面的servlet-name保持一致--><servlet-name>写创建的类的名字</servlet-name><!--Servlet映射路径,也称为访问Servlet的名称--><url-pattern>访问该servlet程序时的URL(例如/first)</url-pattern></servlet-mapping>
 
配置tomcat服务器,tomcat启动时会加载webapps目录下的每个web应用的web.xml配置文件
将class文件拷贝到tomcat的WEB-INF/classes目录下(拷贝时包括包名),MyEclipse会自动的加载这些内容到指定的目录中,如果不使用工具,则需要手动的加载。
访问方式: //localhost:8080/Servlet工程名/first 成功访问说明配置正确。
在Servlet工程中的web.xml中的url-pattern中查找是否有/first内容,如果有就成功的加载。
首先匹配servlet-mapping中url-pattern中查看,接着得到servlet-mapping中的servlet-name,从而去Servlet中查找servlet-name,从而得到servlet-class,servlet-class才是整个执行过程中最重要的部分。得到servlet-class文件的全名(实际上是一个字符串)之后,构造HttpServlet子类的对象,然后调用子类里面的方法(这个过程使用反射技术,只能通过反射才能实现)。
为什么访问URL会执行到自定义的Servlet类中的方法呢?//localhost 会到C:WindowsSystem32driversetchosts文件中去寻找localhost的对应ip地址127.0.0.1,接着找到8080端口,进入tomcat服务器,接着进入webapps下的Servlet工程下,关键是怎么着/first呢?
如果对反射的知识点不明确,请自行找资料解决。
Servlet映射路径
Servlet的映射路径有servlet-mapping中的url-pattern(注意url-pattern要么要以/开头,要么要以*开头)决定,那么url-pattern究竟怎么写,怎么去匹配呢?有两种匹配方案:
 
精确匹配:/first(url-pattern) //localhost:8080/Servlet工程名/first (浏览器中输入)
精确匹配的要点是:url-pattern以/开始,并且必须将url-pattern中的内容精确的写上。在精确匹配时要注意坚决不能漏掉/,否则会报错,一定要带有/
模糊匹配,下面三种方式,但是在一个url-pattern中不能组合下面的模糊匹配方式
/* 或者直接使用/ 在浏览器中输入://localhost:8080/Servlet工程/任意路径(不写都行) 但是请注意,在实际写url-pattern时不要使用这两个方式,这两个方式是Servlet的缺省(default)(tomcat服务器内置)路径,该路径可以在conf/web.xml中找到。缺省的Servlet是用于解析web的静态资源文件。
/jpzhu/* 在浏览器中输入://localhost:8080/Servlet工程/jpzhu/任意路径(不写都行)
*.后缀名(后缀名可以随便取) 在浏览器中输入: //localhost:8080/任意路径.后缀名
注意模糊匹配不能组合起来用,只能单个使用,例如:/jpzhu/*.do
如果在浏览器中输入的url有多个Servlet同时被匹配,也就是说模糊匹配和精确匹配都能找到对应的Servlet资源,精确匹配的优先级高(长得最像的优先被匹配),但是要尽量避免这种情况的发生。当以后缀名结尾的模糊匹配,优先级最低。
Servlet重要的生命周期方法
构造方法:创建Servlet对象时调用,所谓的创建Servlet对象是指第一次访问Servlet的时候。Servlet在tomcat服务器中是单实例对象。
init:创建完Servlet对象时调用
service:每次发出请求时调用
destroy:销毁Servlet对象时调用。停止服务器或者重新部署web应用时调用销毁Servlet对象。