そうふくのスタジオ

ひとにとって たいせつなものは じぶんにじしんをもってるかどうかじゃないか。みんなはたいせつなものだった いらないものはありません。...

J2EE学习笔记(一)

J2EE模式

Value Object(值对象)  用于把数据从某个对象/层传递到其他对象/层的任意Java对象。

通常不包含任何业务方法。

也许设计有公共属性,或者提供可以获取属性值的get方法。

JSP

1JSP的基础知识   

               

               __ 

        _____ |   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)  <jsp:useBean>

b)  <jsp:setProperty>

d)      <jsp:getProperty>

e)      <jsp:param>

f)      <jsp:include>

g)      <jsp:forward>

h)      <jsp:plugin>

 

1.      注释: <% -----jsp comment-------%>

       <! -----html 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

 

2JSP中的JavaBean

JSP三种bean的类型

1)    页面bean

2)    会话bean

3)    应用bean

 

大多数的系统会使用一个会话bean来保持状态,而对每一个页面使用一个页面bean 来对复杂的数据进行表示。

 

页面bean是一个模型,而JSP是一个视图

 

3Custom tag

 

bean是信息的携带者,

而tag更适用于处理信息。

 

标记库包含一个标记库描述符(TLD)和用于实现Custom tag的Java类

在翻译阶段,JSP容器将使用TLD来验证页面中的所有的tag是否都被正确的使用。

 

 

   标记处理程序只是一个简单的适配器,而真正的逻辑是在另一个类中实现的,标记处理程序只是提供了一个供其他的可复用的类的JSP接口

     

Servlet

1.ServletConfig

l         一个ServletConfig对象是servlet container在servlet initialization的时候传递给servlet的。

 

ServletConfig包涵 ServletContext 和 一些 Name/Value pair (来自于deployment descriptor)

 

l         ServletContext接口封装了Web应用程序的上下文概念

 

2.会话跟踪

1) Session

l         当一个Client请求多个Servlets时,一个session可以被多个servlet共享。

 

l         通常情况下,如果server detect到browser支持cookie,那么URL就不会重写。

 

 

2) cookie

l         在Java Servlet中,如果你光  Cookie cookie = new Cookie(name,value)

那么当用户退出Browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。

 

如果要存储 cookie,需加一句   cookie.setMaxAge(200)

 

l         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(“<p><a href=\” ”);

out.print(response.encodeURL(“SessionExample?database=foo&datavalue=bar”));

out.println(“\” >URL encoded </a>”);

 

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 <angle brackets>

" 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

 

阅读更多
个人分类: JAVA编程
上一篇J2EE学习笔记(二)
下一篇什么是同步,如何在多线程间保持同步
想对作者说点什么? 我来说一句

J2EE学习笔记

2007年07月21日 367KB 下载

j2ee学习笔记

2007年09月24日 430KB 下载

J2EE学习笔记.

2008年04月18日 412KB 下载

J2EE学习笔记(J2ee初学者必备手册)

2011年03月28日 1.59MB 下载

j2ee笔记 J2EE学习笔记

2009年03月12日 356KB 下载

J2EE学习笔记(完整版)

2010年11月11日 364KB 下载

J2EE学习笔记 by dream

2007年07月18日 149KB 下载

j2ee学习笔记.rar

2008年10月08日 149KB 下载

没有更多推荐了,返回首页

关闭
关闭