Key Technologies Primer 读书笔记,翻译 --- Struct 学习 1

原本想写成读书笔记的,结果仍是变成翻译,谨做记录,学习。
 
1.HTML -- 见我前面文章
2.Internet 了解 http 请求和响应的循环 --- 见我前面文章
3.java 
    Reflection 和 Introspection
    反射和内省
     内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种缺省处理方法。
例如类A中有属性name, 那咱们能够经过getName,setName 来获得其值或者设置新的值。
经过getName/setName 来访问name属性,这就是默认的规则。
Java中提供了一套API 用来访问某个属性的getter/setter方法,经过这些API 可使你不须要了解这个规则,这些API存放于包java.beans 中。
    通常的作法是经过类Introspector的getBeanInfo方法获取某个对象的BeanInfo 信息,而后经过BeanInfo来获取属性的描述器(PropertyDescriptor),经过这个属性描述器就能够获取某个属性对应的getter/setter方法,而后咱们就能够经过反射机制来调用这些方法。
    反射是一个决定在一个对象中什么成员域和方法是可用的。而内省是一种特殊的反射,它被用在JavaBean Api中。
    Struct 使用内省来转换HTTP参数为javaBean 特性而且从javaBean中产生HTML字段。
    
Properties Files and ResourceBundles
java程序包括网络程序,经常须要配置Properties文件。
Java ResourceBundles 使用更多的Properties文件来提供国际化的信息。
ResourceBundles介绍:

JavaScript, AJAX, and SOAP

 
JavaScript AJAX 都是一些还不错的前端技术
SOAP能够平衡请求/响应循环。使用它,一个应用能够访问数据,处理业务逻辑。SOAP和AJAX应该有很好的结合。
SOAP:​ https://en.wikipedia.org/wiki/SOAP 一个特殊的应用层协议。是工做在HTTP或者SMTP之上的协议,使用XML来表示信息。
 

Servlets, Filters, and Web Containers

 
由于java是面向对象的语言, java Servlet 用来将http转为面向对象的形式。这样让开发者能够专一于它们应用开发须要的事情。
一个java-aware http server 能够传递一个请求到一个servlet 容器,这个容器能够实现请求或者它能够将请求传回给HTTP服务器。容器经过查找他的servlet列表来决定是否能够处理请求。若是有servlet是为这个请求注册的,就传递这个请求到servlet。
容器须要管理servlet的生命周期,容器创造,调用,而且最终有servlet。
Filters 让你组装一系列的组件来 处理一个请求或者回应。过滤器集中在一个链上,这样每个过滤器都有机会处理请求或者回应。
来 写下我目前的理解:servlet是在container的,container接收到请求后,经过注册列表来肯定是否有对应的servlet能够处理,而servlet能够对请求进行处理。最后就是过滤器,过滤器能够在处理请求过程当中对它们作一些处理,可是不太清楚和servlet 的差异。过滤器能够有多个,而servlet 只能有一个。感受入侵性更小些。
Sessions
HTTP一个很重要的特色是无状态的。这样是没有机制来分辨HTTP是一个同一个用户的下一个请求。这样让想要构建一个应用能够和用户对话有多个请求有些困难。
为此,servlet API经过了一个编程的概念,叫作 session,表示一个对象实现了  javax.servlet.http.HttpSession 接口 
containter 会使用两个技术之一(cookies 或者 URL重写)来保证同一个用户的下一个请求将会包括session id 对此次会话来讲,这样这个状态信息将会保存在session中和多个请求关联。状态信息将会保存在session 属性(  session attributes,在JSP中叫作:session scope beans
为了防止当用户不能完成一次交互时无期限的占用资源,session配置了超时时间。若是两个请求时间间隔超过了超时时间,这个session就会被删除。
 
知道Session 数据经常保存在RAM内存是很重要的。取决于你的容器,你也许有不一样的方式来避过它。
 

Web Applications

 
网页应用,就像一个HTTP服务器能够被用来做为不一样的网页的主机,一个servlet容器也能够用来包含多个网站应用。Java Servlet 平台提供一个很好定义的机制用来组织而且部署网页应用。一个应用能够被组装称为一个 Web Application Archive, 或者 WAR file。单个war能够被上传,而且自动部署。
你须要知道你怎么产生一个war文件,而且如何部署。也许须要一些构建工具的知识,好比:Maven: http://maven.apache.org/ 以及一些你服务器容器的阅读文档。
 

Security

在应用程序部署描述符中能够配置的是 容器管理安全。声明安全能够用来保护请求的URI要知足必定的模式。实用安全能够根据当天的时间,调用的参数,或者这个应用的组件的状态用来微调安全做受权决定。它也能够被用来限制受权根据数据库中的信息。
有一些项目,好比Apache Shiro 或者 Spring Security 能够帮助你保护你的应用。
 

JavaServer Pages, JSP Tag Libraries, and JavaServer Faces

若是你须要编写一个标准的网页应用,你也许须要一个视图组件。一种就是JSP。 http://www.oracle.com/technetwork/java/javaee/jsp/index.html
或者也能够是Velocity 或者 Freemarker,都是structs 支持的。
全部相同的是你要从编写HTML开始同时增长动态的特性使用JSP标签。不太推荐在JSP中使用java。JSTL和 Unified expression language 是推荐的。
http://www.oracle.com/technetwork/java/index-jsp-135995.html
这也就是说,你能够轻松的从你的视图来访问你的数据而且合适的展现它。若是你想要使用一个更加现代的方式,也许你会喜欢返回json,一般用来给AJAX做为展现页面。
提到了一些前端的技术,我也仍是列出来吧,若是也许我会去看了:
 

Extensible Markup Language (XML)

可扩展标记语言
这个框架提供的特性经常依赖于不少的对象,那些对象又的时候是经过一个由xml编写的配置文件来部署的。XML一样也能够部署java 应用程序。
幸运的是 Struct2将对XML的需求下降到0,若是你须要使用到它,能够查看:  Convention plugin.

Model View Controller (MVC)

基于JSP的网页应用有时会混合数据库代码,页面设计代码,流程控制代码。实践中,咱们发现除非这些被分离,不然大型的应用会很难被维护。
使用MVC架构能够分离这些问题。Model表明业务或者数据库代码。View表明页面设计代码,Controller表明导航的代码。
MVC这个单词来源于 SmallTalk Model-View-Controller 框架。在SmallTalk MVC中,View根据Model来更新经过观察中模式。原始的MVC模式就像一个封闭的循环,View和Controller 交谈,Controller和Model交谈,Model和View 交谈。
 
可是模式和页面的直接联系对于网页应用并不实际,咱们修改传统的MVC模式让他看起来少点像一个循环,而更像Controller是在中间的地位。
 
在MVC/Model2设计模式中,应用流是经过一个中心的控制器调解的。这个控制器委托请求到一个合适的handler中。这个handler和一个模式绑定,而后每个handler扮演一个请求和model之间的适配器。Model表明或者扮演一个应用的商业逻辑或者状态。一般控制会经过Controller传回给合适的页面。流向能够经过咨询一系列的mapping一般是从数据库或者配置文件载入的来肯定流向。这个提供一个视图和模型之间很宽松的链接,可使应用便于维护和创造。
 
因为MVC是一个便利的范式,不少工做者发现这个也许还有大于三层。好比,在Model层中,经常有独立的业务逻辑层和数据访问层。
这个框架提供控制层给Model2 网页应用。开发者经常使用这一层和其余的标准的技术来构建业务,数据和永久层。
更多关于MVC的事情能够查看:

Business Logic Frameworks

商业逻辑框架
不少团队在POJOs(plain old JavaBeans )构建它们本身的商业逻辑层。因此商业层框架开始出现,包括:
 

Data Access Frameworks

数据访问框架
大多数时候,业务层和数据访问层分离,有的团队会开发它们本身的数据访问对象,可是不少的团队转向使用下面的数据访问框架。一些流行的数据访问框架以下:
相关文章
相关标签/搜索