tianke66 发表于 2013-2-7 14:35:38

Servlet简介&开发介绍

Servlet 是一种比JSP 更早的动态网页编程技术。在没有JSP 之前, Servlet 也是同时充当视图层、业务逻辑层及持久层角色。
Servlet 的开发效率非常低,特别是当使用Servlet 生成表现层页面时,页面中所有的HTML 标签,都需采用Servlet 的输出流来输出,因此极其烦琐。由于Servlet 是个标准的Java 类,因此必须由程序员开发,其修改难度大,美工人员根本无法参与Servlet 页面的开发。这一系列的问题,都阻碍了Servlet 作为表现层的使用。
自MVC 规范出现后, Servlet 的责任开始明确下来,仅仅作为控制器使用,不再需要生成页面标签,也不再作为视图层角色使用。
Servlet ,通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求。
Servlet 是个特殊的Java 类,这个Java 类必须继承HttpServlet 。每个Servlet 可以响应客户端的请求。Servlet 提供不同的方法用于响应客户端请求。
doGet: 用于响应客户端的get 请求。
doPost: 用于响应客户端的post 请求。
doPut: 用于响应客户端的put 请求。
doDelete: 用于响应客户端的delete 请求。
事实上,客户端的请求通常只有get 和post 两种; Servlet 为了响应这两种请求,必须重写doGet 和doPost 两个方法。如果Servlet 为了响应四个方法,则需要同时重写上面的四个方法。
大部分时候, Servlet 对于所有请求的响应都是完全一样的。此时,可以采用重写一个方法来代替上面的几个方法, Servlet 只需重写service 方法即可响应客户端的所有请求。
另外, HttpServlet 还包含两个方法。
init(ServletConfig config): 创建Servlet 实例时,调用的初始化方法。
destroyO: 销毁Servlet 实例时,自动调用的资源回收方法。
通常无须重写initO和destroyO两个方法,除非需要在初始化Servlet 时,完成某些资源初始化的方法,才考虑重写init 方法。如果需要在销毁Servlet 之前,先完成某些资源
的回收,比如关闭数据库连接等,才需要重写destroy 方法。
注意:如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用
super.init(config) 。该方法将调用HttpServlet 的init 方法。

<div style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; WIDTH: 95%; PADDING-TOP: 4px;">http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif//Servlet 必须继承HttpServlet 类
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifpublic class FirstServlet extends HttpServlet
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gifhttp://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif...{
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif             // 客户端的响应方法,使用该方法可以响应客户端所有类型的请求
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif            public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.Io,IOException
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gifhttp://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif            ...{
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        // 设置解码方式
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        request.setCharacterEncoding("GBK") ;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        // 获取name 的请求参数值
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        String name = request.getParameter("name");
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        //获取页面输出流
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        PrintStream out = new PrintStream(response.getOutputStream());
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        //输出html标签
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        out.println("标签");
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        // 输出请求参数的值: name
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        out .println ("您的名字: n + name + 11 <hr> " ) ;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        //输出html标签
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif                        out.println("标签");
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif}
页: [1]
查看完整版本: Servlet简介&开发介绍