《J2EE核心模式》第四章——J2EE重构(表现层重构)

  1. 控制器的引入:
    问题的提出:
            在页面使用页面助手(高度抽象化集成化的页面标签)固然可以解决如访问限制这样的问题,但是不能解决所有的问题。比如当很多页面都(n>100)需要进行一种相同的访问控制,这时如果使用标签,那么这个标签就会出现在每一个页面,这时相当难于管理的。

    问题的解决:
            引入表现层控制器,来对这个权限进行控制。这样的控制器是经常使用的,如JSP过滤器Filter就可以当作表现层控制器使用。这样我们就不需要在多个页面使用同样的标签,而只需要在配置文件中稍微配置那些页面需要被过滤。

    什么时候使用标签什么时候使用控制器?
            其实我觉得完全可以把标签看作是一种特别的页面控制器,他可以做一些控制器没法做的事,比如对某个页面局部显示的控制,另外在少数特定的功能页面我宁愿使用标签。而正如“问题的提出”部分所述,当相同的标签使用过多时就应该改用表现层控制器了。
  2. 同步器令牌可以帮助我在以后的系统设计中解决在不增加系统负荷(主要指数据库查询)的前提下提供一种避免相同数据重复提交的问题。

    作者叙述的步骤大致如下
    a、在服务器获得一个将要新添数据,并向客户端响应一个新的添加表单时,将会运行一段代码(这一步可以由页面控制器来实现),生成一组令牌数据,并将这个令牌数据分别保存在将要填写的表单和服务器的session中。
    b、当用户提交表单的时候,服务器将获得这两组令牌,然后进行比较,如果两个令牌数据相同则表示数据是第一次被提交。这时由表现层控制器再生成一次令牌数据(这一次的令牌数据和上次的令牌是不一样的)

    需要注意的是,在P49上熊节先生是这样翻译的:“如果两个令牌值相匹配,我们就可以断定:本次请求不是重复的提交”。为什么会用:断定一次,说明这种令牌方式还是不能解决所有问题,那么不能解决的问题是什么呢?
  3. 控制器和视图助手的在表现层上的应用

    控制器和视图助手各有各的特点和使用环境,我们可以在视图层利用他们来做很多事情.在本书的P51到P66都是在描述如何灵活的使用这两者来实现表现层的功能.举个例子来说,在"对业务层隐藏表现细节"其实就是在说,我们可以利用表现层上的对象,在传送值时只向业务层传送业务层应该接收的数据,而不是传送应该在表现层活动的对象.

    在"对客户端隐藏资源"中,作者提到了如何在控制器和视图助手来限制页面访问权限,这个问题其实在本书中的前面章节中已经提到.在这里作者还提到了利用项目目录配置的方式来限制资源访问----------把限制资源放置到WEB-INF目录或其子目录中!
原文地址:https://www.cnblogs.com/liulaolaiu/p/11744351.html