一、实现Servlet接口 通过实现Servlet接口来了解Servlet的生命周期 (1)以规范的形式创建一个web应用(即在webapps目录下创建一个web应用) 创建web应用 (2)classes目录下创建一个.java(该java文件为实现Servlet接口) 创建文件夹MyFirstServlet.java 代码如下: package com.focus; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class MyFirstServlet implements Servlet { //Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。(初始化servlet,把servlet装载到内存中) //该函数只会被调用一次 public void init(ServletConfig config) throws ServletException{ } //Servlet引擎调用这个方法以允许Servlet响应请求。这个方法在Servlet未成功初始化之前无法调用。(业务逻辑代码都将写在这个函数中) //在被卸载后,还没初始化时,service不被调用,其余可重复调用 public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{ System.out.println('Hello World!'); response.getWriter().println('Hello World!'+new java.util.Date()); } //卸载servlet public void destroy(){
} //得到servlet的配置信息 public ServletConfig getServletConfig(){ return null; } //纯文本的servlet信息 public String getServletInfo(){ return null; } } 编译后出现错误,导入的程序包找不到。 PS:使用dos编译时,该Java有包是 需要输入的命令行格式为 Javac -d . name.java (3)配置CLASSPATH 即指定到tomcat的lib目录下的servlet-api.jar(其中有servlet-api.jar就是上面所引入的javax.servlet.*;javax.servlet.http.*;)。 在配置CLASSPATH时得指定到特定.jar 不能设置*.jar ,只能一个个写,所以一般大的工程会配置一个启动脚本,专门计算出所有的jar包,然后导入启动环境中... 重启cmd.exe,再重新编译。即可 (4)配置与部署Servlet (5)最后效果: 补充:当Tomcat启动的时候首先会启动一个server.xml,当servlet映射找不到对应的,tomcat启动直接就报错。 二、配置与部署Servlet 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上。 // //指定该servlet类放在哪个包中 形式 包/包/.../类(包名+类名) // // // 一个注册好了的servlet可以被多次映射 如: 即输入的Web资源不管是/My或 /Servlet/My或/Servlet/My.html都可以访问到com.focus.MyFirstServlet这个类 当映射一个servlet时候,可以是多层,后缀名为html不一定就是html文件。 进行Servlet映射时,可使用通配符 有两种格式: 第一种格式 *.扩展名 如:*.html *.abc 第二种格式 以“/“开头 同时以”/*“结尾 如:/abc/* /* 例:1. 2. 3. 4. 当浏览器的URL的servlet名 输入/abc时 匹配 2 当浏览器的URL的servlet名 输入/hellobaby时 匹配 1 当浏览器的URL的servlet名 输入/abc/hellobaby时 匹配 3 当浏览器的URL的servlet名 输入/hello.gogo时 匹配 1 匹配标准: (1)匹配度高的选择映射那个 (2)*.扩展名 的优先级最低 load-on-startup元素标记 1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。 2)它的值必须是一个整数,表示servlet应该被载入的顺序 2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet; 3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。 4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。 5)当值相同时,容器就会自己选择顺序来加载。 所以, 补充:怎样更好的管理tomcat中的web应用,即进入tomcat Manager Reload:即重载的意思,重新装载该web应用。 Stop:停止该web应用 好处:单独对某个web应用做相应的处理,不用对整个服务器进行操作 |
|