在进行portlet开发的时候,比如基于liferay的portlet开发,ActionRequest RenderRequest 与 HttpServletRequest
有很大的差异的,最直接的就是session,在ActionRequest和RenderRequest中的Session有两种形式,一种是Application,这种方式可以
在JSP页面上得到,另外一种Session只是用于Portlet之间进行回话维持。 
 
我以前见过一个项目,是将需要的数据,比如用户登录的信息User写去到全局的Session里,对于这种方式,有什么比较好的提议,或者建议,那个项目使用到了HttpClient。如果想使用HttpSession,怎么样处理的方式比较好

解决方案 »

  1.   

    #1 找到tomcat\conf\server.xml配置文件,找到相应端口号的Connector元素。然后配置emptySessionPath="true"。 eg:<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" emptySessionPath="true" /> #2 在类中session.setAttribute时注意加上PortletSession.APPLICATION_SCOPE。 eg:request.getPortletSession().setAttribute(Constants.SESSION_ALERT,a,PortletSession.APPLICATION_SCOPE); request.getPortletSession().getAttribute(Constants.SESSION_ALERT,PortletSession.APPLICATION_SCOPE);
      

  2.   

    那个项目好像不是这样弄的,如果这样有几点弊端,首先,给用户提交的时候是用ant进行编译打包的,递交给用户的都是源代码,不会包含tomcat,而且,如果这样,那么每一个portlet都会将session放进全局的session里面,这也是不希望看到的。
      

  3.   

    我没什么好办法,但是有个建议,你可以去看源码,他那里面一般对用户,或者session这些东西都有它自己写的工具类,你可以找找,反编译出来,看懂了可以直接 去调用