精致的外观Request

简介:

为什么要说Request精致的外观?请注意,我们这里所说的并不总是理解含义的外观门面,事实上,它使用的立面设计图案。使用的主要考虑数据安全的门面。它涉及到一个更大的系统系统的多个子系统之间的互动沟通、相同的数据可能涉及多个子组件的一个系统之间的交互,但是,考虑到安全问题。己内部数据过多地暴露给其它子系统或子组件,这时就要门面模式出马了,将某一子系统或子组件设计成一个门面,把别的子系统或子组件感兴趣的数据进行封装。其它子系统子组件通过此门面完毕数据訪问。就例如以下图。其它系统或组件通过一个门面Façade去訪问子系统或子组件。Façade实现了对数据安全的控制,对于敏感数据不提供不论什么訪问通道,而非敏感数据则直接暴露供訪问。


依据门面模式往下看看tomcat中的请求对象为什么要讲究门面。直接用个类图说明更加清晰。上面两个请求ServletRequest与HttpServletRequest都是Servlet规范标准定义的接口,它们为继承关系,这些接口定义的方法专门暴露给web开发人员调用;RequestFacade就是门面了,它将实现全部HttpServletRequest接口定义的方法,详细的实现依赖于连接器的Request。连接器的Request主要是供tomcat内核使用,考虑到安全问题并不可把全部数据暴露给web开发人员。最后到最底层的请求对象,(coyote)Request封装的是最底层的数据。即Socket通信的全部字节数组。连接器Request是对此请求对象进行一定加工处理后的对象。


给出一个简单的样例:

①   CoyoteRequest类,如果它拥有http协议头部属性的contentLength,此属性可暴露给web开发者。

public final class CoyoteRequest {

   private int contentLength = 200;

   public int getContentLength(){

             return contentLength;

   }

}

 

②   ConnectorRequest类,当中的connector是tomcat内部组件。不可暴露给web开发者。

public class ConnectorRequest implements HttpServletRequest{

       protected CoyoteRequest coyoteRequest;

       protected Connector connector;

 

       public void setCoyoteRequest(CoyoteRequestcoyoteRequest) {

                this.coyoteRequest =coyoteRequest;

       }

       public Connector getConnector() {

                return connector;

       }

       public void setConnector(Connectorconnector) {

                this.connector = connector;

       }

       public int getContentLength() {

                return coyoteRequest.getContentLength();

       }

}

 

③   RequestFacade类,充当门面类,屏蔽不可暴露的方法getConnector(),保证了Connector组件不被web开发者获取。

public class RequestFacade implements HttpServletRequest{

       protected ConnectorRequestconnectorRequest;

 

publicRequestFacade(ConnectorRequest connectorRequest) {

                this.connectorRequest =connectorRequest;

       }

       public int getContentLength() {

                returnconnectorRequest.getContentLength();

       }

}







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4886959.html,如需转载请自行联系原作者


相关文章
|
2月前
404错误页面简约清新源码 非常好看
404错误页面简约清新源码 非常好看,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
14 0
404错误页面简约清新源码 非常好看
|
5月前
二次元风格引导页HTML源码
二次元风格引导页HTML源码
89 1
二次元风格引导页HTML源码
|
4月前
|
前端开发 数据安全/隐私保护 容器
简约渐变色登陆布局html+css代码
这是一段包含HTML和CSS代码的摘要。HTML部分定义了一个基本的网页结构,包括`<html>`、`<head>`、`<body>`标签,以及一个简单的登录界面,由一个容器`.container`包含一个登录框`.login-wrapper`,登录框内有输入框和登录按钮。CSS部分设置了全局样式,如字体、边距,并为HTML元素添加了样式,如背景渐变色、文字对齐、输入框和按钮的样式等。整个代码展示了创建一个具有响应式布局和特定视觉效果的简洁登录页面。
47 0
|
5月前
二次元风格404页面源码
二次元风格404页面源码
124 10
二次元风格404页面源码
|
5月前
|
前端开发 开发者 UED
CSS:塑造网页外观的艺术
CSS(层叠样式表)是前端开发的核心技术之一,它负责网页的样式设计和布局。通过CSS,开发者能够控制网页元素的外观、位置以及交互效果,从而打造出美观、易用的网页界面。本文将探讨CSS的基本概念、使用技巧以及在前端开发中的重要性。
|
5月前
|
前端开发 JavaScript 小程序
轻量级骨架屏设计,让你的页面“薄荷清新”
轻量级骨架屏设计,让你的页面“薄荷清新”
|
前端开发 JavaScript
SVG + 动画 实现一个有个性的404页面
我正在参加 码上掘金体验活动,详情:[show出你的创意代码块],我们的博客网站有时候 404页面比较普通,我们可以通过SVG 加动画来实现一个有个性的页面。
187 0
|
JavaScript 前端开发
9套迷人精致的CSS3 3D按钮动画
9套迷人精致的CSS3 3D按钮动画
349 0
|
运维 前端开发 安全
简约而不简单的通用错误页面
线上某个项目由于后端 controller 层代码异常, 没有执行到渲染页面模版, 造成前端 Web 页面展示出来是一个空白的页面,俗称白屏。