J2EE学习笔记

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 tagJava

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

 

 

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

     

Servlet

1ServletConfig

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

 

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

 

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

 

2.会话跟踪

1) Session

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

 

l 通常情况下,如果server detectbrowser支持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>”);

 

3SingleThreadModel

默认的,每一个servlet definition in a container只有一个servlet class的实例。

只有实现了SingleThreadModelcontainer才会让servlet有多个实例。

 

Servlet specification上建议,不要使用synchronized,而使用SingleThreadModel

 

SingleThreadModel(没有方法)

保证servlet在同一时刻只处理一个客户的请求。

SingleThreadModel是耗费资源的,特别是当有大量的请求发送给Servlet时,SingleThreadModel的作用是使包容器以同步时钟的方式调用service方法。

这等同于在servletservice()方法种使用synchronized.

 

Single Thread Model一般使用在需要响应一个heavy request的时候,比如是一个需要和数据库打交道的连接。

 

 

2.  在重载Servletinit( )方法后,一定要记得调用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.  PostGet

Postform内各字段名称和内容放置在html header内传送给server

Get: ?之后的查询字符串要使用URLEncode,经过URLEncode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。

     

GetWeb上最经常使用的一种请求方法,每个超链接都使用这种方法。

 

7.  Web.xml就是Web Applicatindeployment descriptor

作用有:组织各类元素

       设置init param

       设置安全性

 

8.  Request Dispatcher用来把接收到的request forward processing到另一个servlet

要在一个response里包含另一个servletoutput时,也要用到Request Dispatcher.

 

9.  ServletJsp在同一个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”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值