分类: 后端

  • Liferay Portlet to Portlet Communication

    Introduction

    The first version of the portlet specification, JSR-168/portlet1.0, did not include any support for Inter Portlet Communication. The second version, JSR-286/ portlet2.0, which is supported for IPC  Mechanism.

    IPC is made easy  with JSR-286 to share the data between two portlets. Using IPC mechanisms, we can share the data from ACTION to VIEW phase and  VIEW-VIEW Phase.

    There are 3  ways  to  share  the  data   between  2  portlets.

    1. Portlet session

    2. IPC  Mechanisms

    2.1            Public Render Parameters

    2.2            Event

    2.3             Client-Side IPC

    3. Cookies

    (更多…)

  • Servlet 3.0

    今个看DWR的做测试的时候,下了Tomcat7,新建servlet的时候,发现Eclipse居然没有在web.xml中添加配置信息还能正常运行servlet,查找一番后才发现这是servlet3的新特性,增添了对annotation的支持,无须更改配置文件,只需添加注解即可。

    其新特性如下:

    1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
    2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
    3. 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。 (更多…)
  • filter 命中匹配却出现404的问题

    在web.xml文件中,以下语法用于定义映射:

    l 以”/’开头和以”/*”结尾的是用来做路径映射的。

    l 以前缀”*.”开头的是用来做扩展映射的。

    l “/” 是用来定义default servlet映射的。

    l 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action 所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

  • 面向接口编程详解(二)——编程实例

    通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。

    问题的提出


    定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。

    上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。各个存储设备间读、写的实现方法不同,U盘和移动硬盘只有这两个方法,MP3Player还有一个PlayMusic方法。

    名词定义:数据交换={读,写}

    看到上面的问题,我想各位脑子中一定有了不少想法,这是个很好解决的问题,很多方案都能达到效果。下面,我列举几个典型的方案。

    解决方案列举


    方案一:分别定义FlashDisk、MP3Player、MobileHardDisk三个类,实现各自的Read和Write方法。然后在Computer类中实例化上述三个类,为每个类分别写读、写方法。例如,为FlashDisk写ReadFromFlashDisk、WriteToFlashDisk两个方法。总共六个方法。

    方案二:定义抽象类MobileStorage,在里面写虚方法Read和Write,三个存储设备继承此抽象类,并重写Read和Write方法。Computer类中包含一个类型为MobileStorage的成员变量,并为其编写get/set器,这样Computer中只需要两个方法:ReadData和WriteData,并通过多态性实现不同移动设备的读写。

    方案三:与方案二基本相同,只是不定义抽象类,而是定义接口IMobileStorage,移动存储器类实现此接口。Computer中通过依赖接口IMobileStorage实现多态性。

    方案四:定义接口IReadable和IWritable,两个接口分别只包含Read和Write,然后定义接口IMobileStorage接口继承自IReadable和IWritable,剩下的实现与方案三相同。 (更多…)

  • 面向接口编程详解(一)——思想基础zz

    我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。

    1.面向接口编程和面向对象编程是什么关系

    首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一

    2.接口的本质

    接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:

    interface InterfaceName
    {
    void Method1();
    void Method2(int para1);
    void Method3(string para2,string para3);
    }

    那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: (更多…)

  • TOMCAT 连接出现 位于 XDB 的服务器 localhost 要求用户名和密码

    同时安装了tomcat和oracle9i后,调试jsp出现–连接到localhost 提示:位于 XDB 的服务器 localhost 要求用户名和密码,原因是端口冲突,调整如下 机器上装了oracle,是oracle自带的http server占了8080端口,oracle的tomcat端口冲突,要么改tomcat端口,要么把http server停掉。改tomcat端口的方法如下: (1)、在Tomcat安装根目录下的字文件夹conf中找到文件server.xml (2)、将其用记事本程序打开,找到这段文字:

    将以上文字中的Connector port=”8080″中的8080更改为8888即可,重新启动Tomcat,使用http://localhost:8888登录,发现问题已解决。 或者: 产生原因:8080端口被其他服务占用 一般装了Oracle的系统都会产生这种问题,解决的方法有两种: 1、 更改Tomcat的端口,这个比较简单,我们在Tomcat 5.5conf下的server.xml更改默认的端口8080即可。 2、 禁用Oracle服务。我们在“计算机管理”中的“服务”中找到OracleServiceORCL,停止掉就OK了。不过这并不是一种完美的做法,因为很多时候我们是同时需要用到Tomcat和Oracle两种服务的! 在myeclipse中,如果使用自带得tomcat,则在选择运行服务器时,选择tomcat的config–>port number改为其他端口即可. 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jsship/archive/2008/06/14/2546670.aspx

  • 小谈ResultSet用法

    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.

      结果集读取数据的方法主要是getXXX(),他的参数可以使整型表示第几列(是从1开始的),还可以是列名.返回的是对应的XXX类型的值.如果对应那列时空值,XXX是对象的话返回XXX型的空值,如果XXX是数字类型,如Float等则返回0,boolean返回false.使用getString()可以返回所有的列的值,不过返回的都是字符串类型的.XXX可以代表的类型有:基本的数据类型如整型(int),布尔型(Boolean),浮点型(Float,Double)等,比特型(byte),还包括一些特殊的类型,如:日期类型(java.sql.Date),时间类型(java.sql.Time),时间戳类型(java.sql.Timestamp),大数型(BigDecimal和BigInteger等)等.还可以使用getArray(int colindex/String columnname),通过这个方法获得当前行中,colindex所在列的元素组成的对象的数组.使用getAsciiStream(int colindex/String colname)可以获得该列对应的当前行的ascii流.也就是说所有的getXXX方法都是对当前行进行操作.

    (更多…)

  • 密码保护:jsp之session对象

    此内容受密码保护。如需查阅,请在下方输入密码。