servlet的三种实现方式

一般来说,写一个servlet,有三种实现方式:

1、实现Servlet接口。

2、继承GenericServlet。

3、继承HttpServlet。

第三种方式是现在比较常用的。

第一种:

package com.tsinghua;
//这是我的第一个servlet,使用实现servlet接口的方式来开发。

import javax.servlet.*;

import java.io.*;


public class Hello implements Servlet{

	/**
	 * 销毁servlet实例,释放内存
	 * 3种情况:
	 * 1.reload 该servlet(所在的webapps)
	 * 2.关闭tomcat
	 * 3.关机
	 */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy it");
		
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return "";
	}

	/**
	 * 初始化该servlet,类似于构造函数。
	 * 该函数只会被调用一次。当用户第一次访问该servlet时被调用。
	 */
	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init it");
	}

	
	/**
	 * 这个函数用于处理业务逻辑
	 * 程序员应该把业务逻辑代码写在这里
	 * 这个函数会被调用多次,当用户每访问该servlet时都会被调用。
	 * req:用来获得客户端的信息
	 * res:用来对客户端返回信息
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		System.out.println("service it");
		//从res中得到PrintWriter
		PrintWriter pw=res.getWriter();
		pw.println("hello,world");
		
		
		
	}
	
}

第二种:

package com.tsinghua;
//这是我的第二个servlet,通过继承GenericServlet来开发

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.*;

import java.io.*;


public class HelloGen extends GenericServlet{

	/**
	 * 重写service方法即可。
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//返回HelloWorld!generic
		PrintWriter pw=res.getWriter();
		pw.println("HelloWorld!generic");
		
		
		
	}

	
	
}

第三种:

package com.tsinghua;
//这是我的第3个servlet,通过继承HttpServlet来开发

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.*;


public class HelloHttp  extends HttpServlet{
	
	/**
	 * 处理get请求
	 * req:客户端的请求信息
	 * resp:客户端的返回信息
	 */
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	{
		//业务逻辑在这里写。
		try {
			PrintWriter pw=resp.getWriter();
			pw.println("Hello,Http");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 处理post请求
	 * req:客户端的请求信息
	 * resp:客户端的返回信息
	 */
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
	{
		//post和get请求一样
		this.doGet(req, resp);
	}

}

web.xml中配置servlet

<?xml version="1.0" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<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_2_5.xsd"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>hello</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.Hello</servlet-class><!-- 指明servlet的包名+类名 -->
  </servlet>
  <!-- 映射关系配置 -->
  <servlet-mapping>
  	<servlet-name>hello</servlet-name><!-- servlet的名字,和上面一样 -->
  	<url-pattern>/hello</url-pattern><!-- 这是在浏览器中输入的访问该servlet的url -->
  </servlet-mapping>
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>helloGen</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.HelloGen</servlet-class><!-- 指明servlet的包名+类名 -->
  </servlet>
  <!-- 映射关系配置 -->
  <servlet-mapping>
  	<servlet-name>helloGen</servlet-name><!-- servlet的名字,和上面一样 -->
  	<url-pattern>/helloGen</url-pattern><!-- 这是在浏览器中输入的访问该servlet的url -->
  </servlet-mapping>
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>helloHttp</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.HelloHttp</servlet-class><!-- 指明servlet的包名+类名 -->
  </servlet>
  <!-- 映射关系配置 -->
  <servlet-mapping>
  	<servlet-name>helloHttp</servlet-name><!-- servlet的名字,和上面一样 -->
  	<url-pattern>/helloHttp</url-pattern><!-- 这是在浏览器中输入的访问该servlet的url -->
  </servlet-mapping>
  
  
  

</web-app>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值