开发Servlet的三种方式和Servlet配置详解

         前言

                  在前面的文章中笔者就Servlet整体的框架有了一个认知,基本了解了其运作的原理。这篇文章

            笔者将会对Servlet开发的方法和Servlet的配置做一个总结。

         Servlet开发三种方式

                  在前面Servlet基础框架、源码学习中我们知道了Servlet框架图。链接如下:

                   http://blog.csdn.net/kiritor/article/details/8967528

                   这里我们简要的看看其框架图:

             

                      根据上述框架图和对源码的简单阅读,可以看出的是开发Servlet的方式基础继承、实现上述

               三种不同的Servlet(Servlet、GenericServlet、HttpServlet)

              实现Servlet接口

                      第一种方式,不常用,实现Servlet接口开进行Servlet开发。此方法业务逻辑的划分不太明确。 

package com.kiritor.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.corba.se.impl.ior.WireObjectKeyTemplate;

/**
 * Servlet implementation class ServletImp
 */
public class ServletImp implements Servlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletImp() {
        super();
    }
    @Override
    public void destroy() {
    	
    }
	@Override
	public void init(ServletConfig config) throws ServletException {
		
	}
	@Override
	public ServletConfig getServletConfig() {
		return null;
	}
	/**
	 * service方面里面来处理业务的逻辑*/
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		PrintWriter writer = res.getWriter();
		writer.write("Imp Servlet!");
                writer.flush();
                writer.close();         
 }
	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

}

              继承GenericServlet

                 这种方式也是比较不常见的,对业务逻辑的处理也是集中在Servcice方法中的。

          

package com.kiritor.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * Servlet implementation class ExGenericServlet
 */
public class ExGenericServlet extends GenericServlet implements Servlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see GenericServlet#GenericServlet()
     */
    public ExGenericServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#service(ServletRequest request, ServletResponse response)
	 */
	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
		PrintWriter writer = response.getWriter();
		writer.write("Imp Servlet!");
                writer.flush();
                writer.close();
 }

}

                继承HttpServlet

                     这种方式是最常用的方式,HttpServlet是基于Http协议的。根据Http协议的特点,

                 HttpServlet提供了不同的业务逻辑的处理的方法,而不是将所有的业务逻辑堆积到

                 service方法里去处理。业务更加的清晰,最常用的方法就是doPost、doGet方法了。                    

package com.kiritor.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

/**
 * Servlet implementation class ExHttpServlet
 */
public class ExHttpServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ExHttpServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * 继承HttpServlet一般在doPost、doGet方法
     * 里面处理业务逻辑
     * 之后由service回调。*/
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter writer = response.getWriter();
		writer.write("Imp Servlet!");
                writer.flush();
                writer.close(); 
      }

}
                   以上就是servlet实际开发中用到的方法了,不过一般情况下采用第三种方式较多,因为我们

                的web应用基本都是通过Http协议进行通信的。

            Servlet的配置

                   了解了Servlet是如何开发的,接下来我们来看看Servlet是如何配置的吧。我们知道Tomcat

                 是通过web.xml文件得到Servlet的配置信息,从而生成ServletConfig对象传递给init方法的。

                 这里笔者只是对Servlet的配置做一个简单的描述,至于后续的监听器配置、过滤器配置。到时

                 在做总结。

                   好了,直接看看配置文件吧:

<servlet>
     
    <description></description>
    <display-name>HelloServlet</display-name>
    <!--名字任意,不过建议和类名一样-->
    <servlet-name>HelloServlet</servlet-name>
    <!--类名+包路径-->
    <servlet-class>com.kiritor.servlet.HelloServlet</servlet-class>
      <!--初始化是的参数,必须在这里进行配置-->
      <init-param>
      <description></description>
      <param-name>info</param-name>
      <param-value>this is a init message</param-value>
    </init-param>
  <!--映射配置-->
  </servlet>
  <servlet-mapping>
  <!--和上述的Servlet名一样-->
  <servlet-name>HelloServlet</servlet-name>
  <!--浏览器的访问路径-->
  <url-pattern>/HelloServlet</url-pattern>
  </servlet-mapping>
                   本次的总结也就到这里了。其详细配置后续在做总结。

          

               

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值