开发Servlet的三种方式和Servlet配置详解
2013-05-27 09:11
573 查看
前言
在前面的文章中笔者就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>本次的总结也就到这里了。其详细配置后续在做总结。
相关文章推荐
- 开发Servlet的三种方式和Servlet配置详解
- Servlet的访问路径的配置的三种方式
- servlet-mapping的三种通用路径配置方式(Filter-mapping也一样)
- 【c3p0】 C3P0的三种配置方式以及基本配置项详解
- 通俗易懂解析stm32 (一) HAL库 标准库 直接配置寄存器 三种开发方式的区别
- Servlet——开发Servlet三种方法详解
- servlet三种实现方式之三通过继承HttpServlet开发servlet
- Java开发框架--spring-servlet.xml 配置详解
- Spark三种属性配置方式详解
- Http响应头字段详解,MyEclipse配置tomcat,servlet运行方式
- Servlet开发三种方式
- C3P0的三种配置方式以及基本配置项详解
- VMware WorkStation11的三种网络连接方式详解与NAT模式下静态IP配置(Ubuntu12.04版本)
- Servlet 访问路径的三种配置方式
- 学习笔记(3)-----servlet的三种开发方式
- 详解WMware Workstation的三种网络配置方式
- Servlet(6)Servlet三种开发方式之继承GenericServlet、HttpServlet及get和post提交表单方式的区别
- Spring 3.x中三种Bean配置方式比较详解
- 开发Servlet的三种方式
- Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet具体解释、Servlet的生命周期(2)