Servlet实现的三种方法

(1)方法一:

//这是第一个实现servlet的方法,使用时限servlet接口的方法来实现,使用的时候需要引用servlet-api.jar
package com.lc;

import javax.servlet.*;
import java.io.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class Hello implements Servlet{

	//该函数用于初始化该servlet(类似于类的构造函数)
	//该函数只会被调用一次(当用户第一次访问该servlet是被调用)
	public void init(ServletConfig parm1) throws ServletException {
		System.out.println("init it!");

	}

	public ServletConfig getServletConfig() {
		return null;
	}

	//这个函数用于处理业务逻辑
	//程序员应当那个当业务逻辑逻辑代码写在这里
	//当用户访问servlet时都会被调用
	//req用于获得客户端的信息
	//res用户想客户端返回信息 (可以认为是游览器)
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

		//从res中得到Printwriter
		System.out.println("service it!"); //在控制台显示
		PrintWriter pw = res.getWriter();
		pw.println("hello world!");//在游览器中显示
	}

	public String getServletInfo() {
		return "";
	}

	//三种情况导致destroy的调用:
	//1.reload 该servlet(webApps)
	//2.关闭tomcat
	//3.关机
	public void destroy() {
		//销毁servt实例 实际就是释放内存
		System.out.println("destroy it!");
	}

}

(2)方法二:

//第二个实现servlet程序,继承GenericServlet  这种方法很简单

package com.tsinghua;

import javax.servlet.GenericServlet;
import java.io.*;
import javax.servlet.*;

public class HelloGenericServlet extends GenericServlet{

	//重写service方法即可

	public void service(ServletRequest req,ServletResponse res){

		//返回hello world!generic

		try{
			PrintWriter pw =res.getWriter();
			pw.println("Hello world! generic!");
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}

}

(3)方法三:

//第三个servlet实现程序,通过继承HttpServlet

package com.tsinghua;

import javax.servlet.http.*;
import java.io.*;

public class HelloHttp extends HttpServlet{

	//处理get请求
	//req:用于获得客户端(游览器)的信息
	//res:用于向客户端(游览器)返回信息
	public void doGet(HttpServletRequest req,HttpServletResponse res){

		//业务逻辑
		try{
			PrintWriter pw = res.getWriter();
			pw.println("hello http!");
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}
	//处理post请求
	//req:用于获得客户端(游览器)的信息
	//res:用于向客户端(游览器)返回信息
	public void doPost(HttpServletRequest req,HttpServletResponse res){
		this.doGet(req,res);
	}
}

在实现上述三种方法的时候 需要配置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">

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

<!--JSP servlet mappings starts-->

  <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>/helloworld</url-pattern>
  </servlet-mapping>

   <servlet>
    <servlet-name>HelloGenericServlet</servlet-name>
    <servlet-class>com.tsinghua.HelloGenericServlet</servlet-class>
  </servlet>
   <servlet-mapping>
    <servlet-name>HelloGenericServlet</servlet-name>
    <url-pattern>/helloGeneric</url-pattern>
  </servlet-mapping>

   <servlet>
    <servlet-name>HelloHttp</servlet-name>
    <servlet-class>com.tsinghua.HelloHttp</servlet-class>
  </servlet>
   <servlet-mapping>
    <servlet-name>HelloHttp</servlet-name>
    <url-pattern>/helloHttp</url-pattern>
  </servlet-mapping>

<!--JSP servlet mappings end-->
</web-app>

ok!

时间: 2024-10-15 05:38:26

Servlet实现的三种方法的相关文章

struts2的action访问servlet API的三种方法

学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object get(Object key);可以获取request属性 Map getSession():可以得到session属性 Map getAppliction():可以得到ServletContext实例 2.action类实现 ServletContextAware,ServletRequestAwa

Action访问Servlet API的三种方法

一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器而言,不访问action是不行的,Struts提供了一种比较简单的方式来访问Servlet API . 二.通常我们需要访问的Servlet API 是 HttpSession.HttpservletRequest.ServletContext,分别对应了JSP内置对象 session,reques

Struts学习笔记(三)struts2中获得request、response和session的三种方法

struts2中获得request.response和session的三种方法   (1)非IoC方式 方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象. ActionContext ctx = ActionContext.getContext(); ctx.put("liuwei", "andy"); //request.setAttribute("l

SpringMVC的请求转发的三种方法

SpringMVC请求转发的三种方法 首先明白请求转发是一次请求,地址栏不会发生变化,区别于重定向.springmvc环境自行配置. 以下举例中存在如下文件/WEB-INF/pages/success.jsp 请求转发的第一种情况:请求转发经过视图解析器 前端页面 <a href="${pageContext.request.contextPath}/forwardMvcView">请求转发经过视图解析器</a> 后台代码 @RequestMapping(&qu

分区自动挂载的三种方法

一.修改/etc/rc.local配置文件追加类似命令:mount /dev/sda1  /sda1 到配置文件最后一行 二,修改/etc/fstab配置文件追加类似命令:/dev/sda1   /sda1  ext4   defaults   0  0 到配置文件中 三,安装autofs服务yum install autofs 追加类似命令:sda1   -fstype=ext4  :/dev/sda1 到配置/etc/autofs.misc文件中重启服务: service autofs re

VMWARE虚拟机不能上网三种方法分析

bridged(桥接模式). NAT(网络地址转换模式) host-only(主机模式). 理论理解: 1.bridged(桥接模式) 在这处模式下,虚拟机等同于网络内的一台物理主机,可对手动设置IP,子网掩码,DNS,且IP地址要和主机的IP在同一网段内.这样,虚拟机就和主机如同连在一个HUB上的两台计算机,只要主机能上网,虚拟机也会在这种模式下上网. 2.host-only(主机模式) 在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的. 提示:在

pdf文件怎么编辑 如何编辑pdf文件的三种方法

pdf文件越来越流行,工作中经常遇到需要修改pdf文件的情况.一般人的电脑上都为pdf文件安装了一个pdf阅读器,可它只能用来阅读查看pdf文件,并不能满足人们的编辑需求.那么pdf文件怎么编辑?下面小编给大家讲讲关于如何编辑pdf文件的三种方法.     方法一:直接编辑,一步到位     如果要对pdf文件进行编辑,我们则需要安装pdf编辑器.最新版的迅捷pdf编辑器可以编辑pdf文件中的任何内容,包括文字.图片.页眉页脚.添加注释等等.迅捷pdf编辑器如何编辑pdf文件?     首先需要

Android TextView里直接显示图片的三种方法

方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般如果字体是在图片上重叠的推荐这样写.时间关系,这个不付源码了. 方法二:利用TextView支持部分Html的特性,直接用api赋图片.代码如下: //第一种方法在TextView中显示图片 String html = "<img src='" + R.drawable.circle + "'/>"; ImageGetter imgGett

Linux更新内核的三种方法

Centos内核升级的三种方法 在基于CentOS平台的工作过程中,难免有时需要升级或者降级内核以验证功能.调试性能或者更新整个系统.如果从头重新编译一个内核,由于现在内核特性越来越复杂,依赖的库或者工具也不少,加之重新编译耗时不菲,了解更新内核的多种方式就显得尤为必要.下面根据笔者最近的工作,总结了三种方法,供大家参考. 方法一 如果机器不能联网,可以下载现有内核包到本地机器,直接在本地更新 1.从http://ftp.scientificlinux.org/linux/scientific/