Servlet学习之一开发Servlet的三种方法

开发步骤:

1)在%TOMCAT_HOME%\webapps下WEB-INF的文件夹,写一个文件web.xml(该网站的配置信息。。。),建立一个classes的子文件夹,也可以从别的目录ROOT下拷贝

2)开发servlet(引入servlet.api.jar)

注:题主学习时用的JCreator开发环境开发的,安装JCreator时会设置绑定JDK,所以启动JCreator后,点击Configure再点击Options时,在JDK Profiles下可以看到JDK下的相关jar包。而这个servlet.api.jar(位于Tomcat5.0\common\lib下)要我们手动引入到环境中。

Servlet学习之一开发Servlet的三种方法_第1张图片

Servlet学习之一开发Servlet的三种方法_第2张图片

3)部署你的servlet,在web.xml文件中,添加如下代码:






  Welcome to Tomcat
  
     Welcome to Tomcat
  




    
	
        hello
	
        com.tsinghua.hello
    

    
	
        hello
	
        /sp
    




4、Servlet生命周期

1)装载servlet,由相应的容器来完成

2)创建一个Servlet实例

3)调用Servlet的init()方法,该方法只会在第一次访问该servlet时被调用一次

4)服务:调用servlet的destroy()方法,销毁该servlet实例。该方法在一下情况被调用:a:tomcat 重新启动  b:reload该Webapp c:重新启动电脑

三种实现方式

1、实现Servlet接口

package com.tsinghua;
import javax.servlet.*;
import java.io.*;
public class Hello implements Servlet{
	//该函数用于初始化该servlet(类似于类的构造函数)
	//该函数只会被调用一次(当用户第一次访问该Servlet时被调用)
    public void init(ServletConfig parml) throws ServletException{
    	System.out.println("init it");
    }
    //得到Servlet配置文件,不是很重要
    public ServletConfig getServletConfig(){
    	return null;
    }
    //这个函数用于处理业务逻辑
    //程序员应当把业务逻辑代码写在这里
    //该函数会被调用多次,当每次访问servlet时,都会被调用
    //req 用于获得客户端信息   res用于向客户端返回信息  客户端即浏览器
    public void service(ServletRequest req,ServletResponse res) throws ServletException{
    	//从res中得到PrintWriter
    	//控制台显示
    	System.out.println("service it");
    	try{
    		PrintWriter pw=res.getWriter();
    		//发回网页显示
    	    pw.println("hello,world");
    	}catch(IOException e)
    	{
    		
    	}
    	
    }
    public String getServletInfo(){
    	return "";
    }
    //销毁Servlet实例(释放内存)
    //什么情况被调用1.reload 该serlvet(webApps) 2.关闭tomcat  //3.关机
    public void destroy(){
    	System.out.println("destroy");
    }
}


2、继承GenericServlet

通过GenericServlet去开发Servlet,只需要重写Service相对来说要简单一些。

package com.tsinghua;
import javax.servlet.GenericServlet;
import java.io.*;
import javax.servlet.*;

public class HelloGen extends GenericServlet{
    //重写service方法即可
    public void service(ServletRequest req,ServletResponse res){
    	try{
    		PrintWriter pw=res.getWriter();
    		pw.println("hello world!generic");
    	}catch(Exception ex){
    		ex.printStackTrace();
    	}
    }
}

3、继承HttpServlet

需要重写doGet、doPost方法。这是目前用的最多的一种方法。

表单提交方法有两种,一种是get,一种是post;

两者区别:

安全性:getpost; get要求服务器立即处理请求,而post请求可能形成一个队列请求。

package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;

public class HelloHttp extends HttpServlet{

   //重写get请求
   public void doGet(HttpServletRequest req,HttpServletResponse res){
   	  try{
   	  	PrintWriter pw=res.getWriter();
   	  	pw.println("hello,http");
   	  }catch(Exception ex)
   	  {
   	  	ex.printStackTrace();
   	  }
   }
   
   //重写get请求
   public void doPost(HttpServletRequest req,HttpServletResponse res){
   	   this.doGet(req,res);
   }
}


你可能感兴趣的:(servlet)