Servlet学习一

来源:互联网 发布:小甲鱼python百度云 编辑:程序博客网 时间:2024/04/29 04:33

1、Servlet体系结构
Servlet开始是一个接口
Servlet位于javax.servlet.*这个包中
2、开发Servlet的几种方法:
a、实现Servlet接口(Servlet发展初期)
b、继承GenericServlet(Servlet发展中期)
c、继承HttpServlet(Servlet发展现在)
3、实现Servlet接口编写Servlet
步骤:
①在tomcat主目录下面的webapps下新建WEB-INF文件夹、
在WEB-INF文件夹里面编写web.xml文件(web.xml文件中是该网站的配置信息)
在WEB-INF文件夹里面建立一个classes文件夹(存放Servlet)
在WEB-INF文件夹里面建立一个lib文件夹(lib文件夹下面存放该web项目用到的jar包,例如连接数据库的jar包)

我在webapps目录下面新建了一个文件夹myWebApp
在myWebApp新建了一个WEB-INF文件夹
WEB-INF文件夹下面新建了classes文件夹、lib文件夹、web.xml文件
在classes文件夹下面编写Servlet类实现Servlet接口必须实现5个方法
下面的Hello类是实现了Servlet接口的一个类,Hello.java代码如下
package test;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.PrintWriter;
import java.io.IOException;

public class Hello implements Servlet{
 //该函数用于初始化Servlet(类似于一般java类中的构造函数的功能)
 //该函数只会被调用一次(当用户第一次访问该Servlet时被调用,
 //以后再访问不会被再调用),init方法与Servlet生命周期密切相关
 public void init(ServletConfig parm1){
  System.out.println("init it");
 }
 //用于得到Servlet配置文件的信息,与Servlet生命周期无关
 public ServletConfig getServletConfig(){
  return null;
 }
 //这个函数用于处理业务逻辑,可以被调用多次
 //程序员可以把业务逻辑代码写到这里
 //当用户每访问一次Servlet,该方法就会被调用一次
 //req-->用于Servlet获得客户端(可以简单理解为浏览器)的请求信息
 //res-->用于Servlet向客户端返回处理请求后的响应信息
 public void service(ServletRequest req,ServletResponse res)throws IOException{
  System.out.println("service it");//向控制台输出
  //从res中得到PrintWriter
  PrintWriter pw = res.getWriter();
  pw.println("hello,world");//向浏览器页面输出
 }
 //与Servlet生命周期无关
 public String getServletInfo(){
  return null;
 }
 //销毁该Servlet(释放该Servlet所占用的内存空间)
 //①重新加载该Servlet所在的Web应用会调用destroy方法
 //②关闭Tomcat时
 //③关闭电脑会时调用该Servlet的destroy方法
 public void destroy(){
  System.out.println("destroy it");
 }
}
在Tomcat的\common\lib把servlet-api.jar放在jdk的jre下的lib下的ext目录下
就可以在命令行编译Servlet程序了
(我的目录是D:\Program Files\Java\jdk1.6.0_18\jre\lib\ext)
在命令行下切换到classes目录下使用
javac -d . Hello.java
web.xml代码如下
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true"> 

  <servlet>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hello</servlet-name>
  <!--指明Servlet的路径,(包名+类名)-->
    <servlet-class>test.Hello</servlet-class>
  </servlet>

  <!-- Define the Manager Servlet Mapping -->
  <servlet-mapping>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hello</servlet-name>
  <!--在浏览器中输入访问Servlet的url,此处的名字是任意的-->
      <url-pattern>/FirstServlet</url-pattern>
  </servlet-mapping>
</web-app>
启动Tomcat服务器后,在浏览器中输入http://localhost:8080/myWebApp/FirstServlet
在浏览器上就会显示hello,world

Servlet的生命周期总结:
Servlet部署在容器中(此处我们使用的是tomcat,也可以是别的如JBoss,WebLogic...)
Servlet的生命周期由容器来管理
Servlet的生命周期分为以下几个阶段
1、装载Servlet,由相应的容器来完成
2、创建一个Servlet实例
3、调用Servlet的init()方法。该方法只会在第一次访问Servlet时被调用
4、服务:调用Servlet的service方法,一般的业务逻辑在这里处理。
该方法在访问该Servlet时都会被调用
5、销毁,调用Servlet的destroy()方法,销毁该Servlet实例,该方法在以下情况下被调用
①tomcat重新启动②reload该WebApp③重新启动电脑