资源说明:J2EE模式
Value Object(值对象) 用于把数据从某个对象/层传递到其他对象/层的任意Java对象。
通常不包含任何业务方法。
也许设计有公共属性,或者提供可以获取属性值的get方法。
JSP
1.JSP的基础知识
__
_____ | directive (指令)
| |-- scripting (脚本)
JSP -------| |__ action (动作)
|
|_____Template data :除JSP语法外,JSP引擎不能解读的东西
1)在JSP中使用的directive(指令)主要有三个:
a)page指令
b)include指令
c)taglib指令
在JSP的任何地方,以任何顺序,一个页面可以包含任意数量的page指令
2)Scripting(脚本)包括三种类型
a)<%!declaraction %>
b)<% scriptlet %>
c)<%= expression %>
3)action(动作)
标准的动作类型有:
a)
b)
d)
e)
f)
g)
h)
1.注释: <% -----jsp comment-------%>
2.<%@ page session = “true” import =”java.util.*” %>
session可以不赋值,默认为true,如果session=”false”,则在JSP页面中,隐含的变量session就不能使用。
3.请求控制器结构(Request Controller)
也被称之为JSP Model 2 Architecture
这种途径涉及到使用一个Servlet或一个JSP作为一个应用程序或一组页面的入口点。
为创建可维护的JSP系统,Request Controller是最有用的方式之一。
不是JSP,而是Java类才是放置控制逻辑的正确的地方。
请求控制器的命名模式为: xxxController.jsp
请求控制器类的命名模式为: xxxRequestController
2.JSP中的JavaBean
JSP三种bean的类型
1)页面bean
2)会话bean
3)应用bean
大多数的系统会使用一个会话bean来保持状态,而对每一个页面使用一个页面bean 来对复杂的数据进行表示。
页面bean是一个模型,而JSP是一个视图。
3.Custom tag
bean是信息的携带者,
而tag更适用于处理信息。
标记库包含一个标记库描述符(TLD)和用于实现Custom tag的Java类
在翻译阶段,JSP容器将使用TLD来验证页面中的所有的tag是否都被正确的使用。
标记处理程序只是一个简单的适配器,而真正的逻辑是在另一个类中实现的,标记处理程序只是提供了一个供其他的可复用的类的JSP接口
Servlet
1.ServletConfig
一个ServletConfig对象是servlet container在servlet initialization的时候传递给servlet的。
ServletConfig包涵 ServletContext 和 一些 Name/Value pair (来自于deployment descriptor)
ServletContext接口封装了Web应用程序的上下文概念。
2.会话跟踪
1) Session
当一个Client请求多个Servlets时,一个session可以被多个servlet共享。
通常情况下,如果server detect到browser支持cookie,那么URL就不会重写。
2) cookie
在Java Servlet中,如果你光 Cookie cookie = new Cookie(name,value)
那么当用户退出Browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。
如果要存储 cookie,需加一句 cookie.setMaxAge(200)
cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.
3) URL Rewriting
在使用URL Rewriting来维护Session ID的时候,每一次HTTP请求都需要EncodeURL()
典型的用在两个地方
1)out.print(“form action=\” ”);
out.print(response.encodeURL(“sessionExample”));
out.print(“form action=\” ”);
out.print(“method = GET>”);
2)out.print(“URL encoded ”);
3.SingleThreadModel
默认的,每一个servlet definition in a container只有一个servlet class的实例。
只有实现了SingleThreadModel,container才会让servlet有多个实例。
Servlet specification上建议,不要使用synchronized,而使用SingleThreadModel。
SingleThreadModel(没有方法)
保证servlet在同一时刻只处理一个客户的请求。
SingleThreadModel是耗费资源的,特别是当有大量的请求发送给Servlet时,SingleThreadModel的作用是使包容器以同步时钟的方式调用service方法。
这等同于在servlet的service()方法种使用synchronized.
Single Thread Model一般使用在需要响应一个heavy request的时候,比如是一个需要和数据库打交道的连接。
2.在重载Servlet地init( )方法后,一定要记得调用super.init( );
3.the client通过发送一个blank line表示它已经结束request
而the server通过关闭the socket来表示response已结束了。
4.一个Http Servlet可以送三种东西给Client
1)a single status code
2)any number of http headers
3)a response body
5.Servlet之间信息共享的一个最简单的方法就是
System.getProperties().put(“key”,”value”);
6.Post和Get
Post:将form内各字段名称和内容放置在html header内传送给server
Get: ?之后的查询字符串要使用URLEncode,经过URLEncode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。
Get是Web上最经常使用的一种请求方法,每个超链接都使用这种方法。
7.Web.xml就是Web Applicatin 的deployment descriptor
作用有:组织各类元素
设置init param
设置安全性
8.Request Dispatcher用来把接收到的request forward processing到另一个servlet
要在一个response里包含另一个servlet的output时,也要用到Request Dispatcher.
9.Servlet和Jsp在同一个JVM中,可以通过ServeltContext的
setAttribute( )
getAttribute( )
removeAttribute( )
来共享对象
10.利用request.getParameter( )得到的String存在字符集问题。
可以用 strTitle = request.getParameter(“title”);
strTitle = new String(strTitle.getBytes(“8859-1”),”gb2312”);
如果你希望得到更大得兼容性
String encoding = response.getCharacterEncoding();
//确定Application server用什么编码来读取输入的。
strTitle = new String(strTitle.getBytes(encoding),”gb2312”);
XML
1.XML基础知识
1.一个xml文档可以分成两个基本部分:
首部( header )
内容( content )
2.xml名字空间规范中指定:
xml文档中的每一个元素都处在一个名字空间中;如果没有指定的名字空间,缺省的名字空间就是和该元素相关联的名字空间。
3.A document that is well-formed obeys all of the rules of XML documents (nested tags, etc.)
" If a well-formed document uses a Document Type Definition (more on these in a minute), and it follows all the rules of the DTD, then it is also a valid document
4.A tag is the text between the
" An element is the start tag, the end tag,and everything (including other elements) in between
5.标签( tags ) 实际上包含了“元素”( elements ) 和 “属性”( attributes )两部分。
用元素( elements )来描述有规律的数据。
用属性( attributes ) 来描述系统数据。
如果你有一些数据要提供给某个应用程序,该数据就可能要用到一个元素。
如果该数据用于分类,或者用于告知应用程序如何处理某部分数据,或者该数据从来没有直接对客户程序公开,那么它就可能成为一种属性。
6.CDATA (读作:C data ) C是character的缩写。
7. org.xml.sax.Reader
/|\
org.xm.l.sax.XMLReader
/|\
org.apche.xerces.parsers.SAXParser