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

         前言

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

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

         Servlet开发三种方式

                  在前面Servlet基础框架、源码学习中咱们知道了Servlet框架图。连接以下:web

                   http://blog.csdn.net/kiritor/article/details/8967528浏览器

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

             

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

               三种不一样的Servlet(Servlet、GenericServlet、HttpServlet)ide

              实现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方法中的。this

          

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协议的特色,url

                 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>
                   本次的总结也就到这里了。其详细配置后续在作总结。           
相关文章
相关标签/搜索