利用servlet将数据和模板显示出来,servlet的设计模式
爪哇的开源给了我们更多机会,去了解组件内部的实现。从事服务应用开发详解开发,大家都会跟直接或间接的跟小型应用程序打交道。今天我们就来谈谈Servlet。
我们在手写小型应用程序时,会继承HttpServlet类。在HttpServlet类中,有几个重要的方法:doPost()方法、doGet()方法、服务()方法。当我们调用自己写的小型应用程序时,系统会默认调用多吉特()方法;或者说,当我们指定一种传输方式,系统会自动调用我们重写的方法。这是采用设计模式中模板模式实现的。
小型应用程序是由雄猫之类的小型应用程序容器来调用处理浏览器请求的,并需要集成基类HttpServlet。反编译出HttpServlet的班级文件,我们可以看出,该类中存在两个服务()方法:
1、
受保护的空的服务(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException,IOException{……}
公共空的服务(ServletRequest请求,ServletResponse响应)
抛出ServletException,IOException{……}
公众的修饰的服务方法,其实是重写了父类父类中的服务()方法,它主要完成的功能是接收客户端请求,并将重新请求和反应传递给服务()方法。父类父类中,则是服务()方法的最高级抽象,给出的是服务()抽象方法。
1、
公共抽象空的服务(servlet请求参数servlet请求,servlet响应参数servlet响应)
抛出ServletException,IOException
而保护修饰的服务方法,雄猫容器实际调用的是这个服务()方法服务()方法的实现就是根据超文本传送协议(超文本传输协议的缩写)求情的类型(get、post),将处理委派给doGet、doPost等方法,由这些子类的方法来最终处理浏览器的求情。
由此可知:HttpServlet定义了一个处理的框架,或者说是模板,实现小型应用程序只需要继承HttpServlet并重写doPost()和多吉特()方法就可以了。
下面看看模版模式的实现:
//父类HttpServlet
公共抽象类HttpServlet扩展了父类
实现可序列化
受保护的空的服务(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException,IOException
{……}
公共空的服务(ServletRequest请求,ServletResponse响应)
抛出ServletException,IOException
对象请求;
响应响应;
request=(http servlet请求)req
response=(http servlet response)RES;
} catch (ClassCastException e) {
抛出新的ServletException(“非超文本传送协议请求或响应");
//调用受保护的服务
服务(请求、响应);
//自己写的Servlet,继承HttpServlet
导入Java。io。io异常;
导入Java。io。printstream
导入Java。io。版画家;
导入javax。servlet。servlet异常;
导入javax。servlet。http。http servlet
导入javax。servlet。http。http servlet请求;
导入javax。servlet。http。http servlet响应;
公共类实例三扩展HttpServlet
//重写父类中的调用方法
公共void doGet(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException,IOException
string strOne=请求。getparameter(“用户名”);
string strTwo=请求。getparameter(“password”);
系统。出去。println( username= strOne);
系统。出去。println( password= strTwo);
回应。设置内容类型(“文本/html”);
response.getWriter().println(登录成功!);
//重写父类中的发布者方法
公共void doPost(http servlet请求请求,HttpServletResponse响应)
抛出ServletException,IOException
doGet(请求,响应);
}
总结,这种实现,重复的代码都上升到了父类中去,而变化的部分在子类中具体实现。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。