J2EE学习笔记(4) 软件工程与系统框架

J道的老大banq曾经说过设计模式是衡量一个程序员水平高低最重要的标准。个人非常赞同这个观点,从这个角度看学好J2EE第一个要了解的就是作为一个庞大复杂的系统,它是如何由各个模块拼装并协同有效地运作。

先来几个定义暖暖身 Definitions of Different Dimensions in J2EE

Tiers: A logical or physical organization of components into an ordered chain of service providers and consumers. Components within a tier typically consume the services of those in an "adjacent" provider tier and provide services to one or more "adjacent" consumer tiers. Within a tier, services are grouped to like requirements, such as functionality, security, or load distribution.

Layers: The hardware and software stack that hosts services within a given tier. Physical, network, and software platforms and standard API sets support the components that provide a service. Layers, like tiers, represent a well-ordered relationship across boundaries that are mediated by interfaces. Whereas tiers represent processing chains across components, layers represent container/component relationships in implementation and deployment of services.

Tiers层的概念是我们最常听到的,一般来说它可以分为 (客户) <---交互---> [ Client Interface --- Presentation Tier --- BizLogic Tier --- Integration Tier --- Resource Tier ]

Client Interface 典型的客户界面为IE, Swing, Applet, WAP等,客户与之直接交互
Presentation Tier 负责接受客户请求并返回相应的处理结果。登陆,权限检查,会话管理在此进行,从技术角度就是JSP HTML等
Business Logic Tier 负责处理业务逻辑和数据,是J2EE的核心,它也同时管理事务Transaction,EJB等在这一层
Integration Tier 负责连接业务逻辑层与系统资源层,最常见的JDBC数据库连接就是一个例子
Resource Tier 负责提供上层所需要的资源,比如数据库, File System, Legacy System等等

结合实际应用和设计模式,我们可以将层次进一步划分。多层次会降低效率,也会导致出现很多看似“无用”的代码,但正是这些代码实现了低耦合从而降低了后期维护成本。
1) Presentation Tier应用MVC模式, 将程序流程控制器(Controller) 视图(View)和数据三者分离,如Struts就是其中一员大将。Filtering和User-Role-Priviledge-Resource也常在使用(具体还会开新贴细谈)
2) Business Logic Tier 和Presentation Tier的低耦合由Business Delegate层实现,很典型的例子 BusinessDelegate -> BusinessMgr (EJB) -> ...而Facade模式也经常在这里被用来做封装。

主要参考文献:软件体系架构模式在J2EE中的应用
主要参考项目:Medlog Logistic PACE2 SCS

--==欢迎大家跟贴就该文章和感兴趣的话题和我讨论问题==--

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
J2EE开发中,我们经常需要对字符串进行编码,以便在不同的系统之间传输数据时,能够正确地处理特殊字符。其中,URLEncoder.encode(String, enc)是一种常用的编码方式。 URLEncoder.encode()方法的作用是将指定的字符串进行编码,以便在URL中传输。它的语法如下: ``` public static String encode(String s, String enc) throws UnsupportedEncodingException ``` 其中,参数s是要编码的字符串,参数enc是指定字符集的名称,如果不指定,默认为UTF-8。 该方法的返回值是一个编码后的字符串。 例如,如果要将字符串“Hello World!”编码为UTF-8格式的字符串,可以使用以下代码: ``` String encodedStr = URLEncoder.encode("Hello World!", "UTF-8"); System.out.println(encodedStr); ``` 执行该代码后,输出结果为: ``` Hello+World%21 ``` 可以看到,空格被编码为“+”号,感叹号被编码为“%21”。 需要注意的是,如果字符串中包含特殊字符,如“&”、“=”等,也需要进行编码,否则在URL传输时会出现错误。例如,如果要将字符串“name=张三&age=18”编码为UTF-8格式的字符串,可以使用以下代码: ``` String encodedStr = URLEncoder.encode("name=张三&age=18", "UTF-8"); System.out.println(encodedStr); ``` 执行该代码后,输出结果为: ``` name%3D%E5%BC%A0%E4%B8%89%26age%3D18 ``` 可以看到,等号被编码为“%3D”,中文字符被编码为UTF-8格式的字符串。 总之,URLEncoder.encode()方法是J2EE开发中常用的编码方式,可以有效地处理特殊字符,确保数据在不同系统之间的传输正确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值