知识大全 JSP设计模式中的两种常见模式

Posted

篇首语:蹉跎莫遣韶光老,人生唯有读书好。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP设计模式中的两种常见模式相关的知识,希望对你有一定的参考价值。

JSP设计模式中的两种常见模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  

  如果你经常去Servlet或JSP的新闻组或者邮件列表 那么一定会看到不少关于Model I 和Model II 方法的讨论 究竟采用哪一种 这取决于你的个人喜好 团队工作策略以及是否采用正统的OOP

  简单地说 Model I将事务逻辑(business logic)和表示代码(presentation code)融合在一起(如在HTML中) Model II则提倡最大限度地将所有的代码放到内容表示之外

  Model I 简单的单层次应用

  如果是在一个人人都精通Java和HTML的环境中 或者你独自做着所有的工作 假如每个人都有清晰的编程结构和思路 那么这种方法会很有效 不过这样的假设不在本文讨论范围之内 这种方法的第一个优点是如果你的应用改变了 你只需维护一个文件 而最大的缺陷是可读性!除非十分小心 否则你的HTML和Java代码会相互混杂 从而难以维护

  在下面这个例子中 我们将增加一个 TimeZone 元素 从而使它变成JSP文件 它会返回基于时间的所期待的TimeZone 如果没有提交 TimeZone 那么缺省的是服务器的缺省时间

  ======================================================================      ﹤xml version=  ?﹥      ﹤H ﹥Time JSP﹤/H ﹥      ﹤jsp:scriptlet﹥      //the parameter  zone  shall be equal to a number beeen   and   (inclusive)      TimeZone timeZone = TimeZone getDefault(); //returns the default TimeZone for the server      if (request getParameterValues( zone ) != null)            String timeZoneArg = request getParameterValues( zone )[ ];      timeZone = TimeZone getTimeZone( GMT+  + timeZoneArg +  : );      // gets a TimeZone  For this example we´re just going to assume      // its a positive argument  not a negative one             //since we´re basing our time from GMT  we´ll set our Locale to Brittania  and get a Calendar       Calendar myCalendar = Calendar getInstance(timeZone  Locale UK);      ﹤/jsp:scriptlet﹥      ﹤%= myCalendar get(Calendar HOUR_OF_DAY) %﹥:      ﹤%= myCalendar get(Calendar MINUTE) %﹥:      ﹤%= myCalendar get(Calendar SECOND) %﹥      ======================================================================  

  相应地 数据也可以从JavaBean取得并加以显示 在下一个例子中我们就可以看到

  Model II: 重定向请求(Redirecting Requests)

  在一个团队开发环境中 有些是HTML设计者 另一些则是Java程序员 这时这一方法显得非常重要 Java程序员可以集中精力创建可重用代码 而HTML设计师可以集中精力于内容表示 彼此相对对立 可以分别动态地修改自己的内容 只要总体的输入输出不变

  现在我们可以使用Model II来表示Model I的那个例子 这一方法遵循了Model View Controller (MVC) 范例 (cite Design Patterns book) 在这个例子中 我们只有一个类(页或者servlet) 处理请求(Controller) 取得TimeZone 设置所有用于表示的变量 并将控制传递到表示页(View) 作为如此简单的应用 可以没有 Model

  Controller: timeByZone jsp

  controller可以是一个servlet或一个JSP页 我推荐使用JSP 因为这样我不必担心每当我做修改时要对类重新编译 但是 你将因此失去granularity(颗粒性) 以后要扩展该类也比较困难

  ======================================================================      ﹤xml version=  ?﹥      ﹤! Worker Class  nobody should see me ﹥      ﹤jsp:scriptlet﹥      //the parameter  zone  shall be equal to a number beeen   and   (inclusive)      TimeZone timeZone = TimeZone getDefault(); //returns the default TimeZone for the server      if (request getParameterValues( zone ) != null)            String timeZoneArg = request getParameterValues( zone )[ ];      timeZone = TimeZone getTimeZone( GMT+  + timeZoneArg +  : );      // gets a TimeZone  For this example we´re just going to assume      // its a positive argument  not a negative one               TimeBean timeBean = new TimeBean();      timeBean setHours = myCalendar get(Calendar HOUR_OF_DAY);      timeBean setMinutes = myCalendar get(Calendar MINUTE);      timeBean setSeconds = myCalendar get(Calendar SECOND);      HttpSession mySession = request getSession();      mySession putValue( tempTimeBean  timeBean);      ﹤/jsp:scriptlet﹥      ﹤jsp:forward page= displayTime jsp  /﹥      ======================================================================  

  View: displayTime jsp

  同样地 这个view既可以是一个servlet也可以是一个jsp文件 这里我们从Session中取得并显示它的值 实际上我们会将这做两次 来示范Bean是如何被使用的

cha138/Article/program/Java/hx/201311/27100

相关参考