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下)要我们手动引入到环境中。



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

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>


<!-- JSPC servlet mappings start -->

    <servlet>
	<!-- 给你的servlet取名,任意的 -->
        <servlet-name>hello</servlet-name>
	<!-- 指明servlet的路径,包名+类名 -->
        <servlet-class>com.tsinghua.hello</servlet-class>
    </servlet>

    <servlet-mapping>
	<!-- 给你的servlet取名,任意的 -->
        <servlet-name>hello</servlet-name>
	<!-- 这是在浏览器中输入的访问该servlet的url,任意的 -->
        <url-pattern>/sp</url-pattern>
    </servlet-mapping>

<!-- JSPC servlet mappings end -->

</web-app>
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;

两者区别:

安全性:get<post   内容大小:get<post get   请求速度:get>post; 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);
   }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henry_Jing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值