`

使用spring mvc portlet 3.0开发IBM WebSphere Portlet应用

    博客分类:
  • java
 
阅读更多

最近因工作需要使用IBM WebSphere Portlet,结合spring mvc portlet 3.x做了个例子,在此记录一下学习的过程。

功能描述:
    一个显示网站导航的portlet,在view模式下显示网站导航,在edit模式下编辑显示的网站数据,支持自定义图标

要用到的资源如下:
    1.spring mvc 3.x
    2.spring mvc portlet 3.x
    3.jstl 1.2
    4.commons-fileupload 1.2


1.首先新建一个portlet.xml配置

 

  <portlet>
    <portlet-name>SystemIndex</portlet-name>
    <display-name>系统首页链接</display-name>
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>view</portlet-mode>
      <portlet-mode>edit</portlet-mode>
    </supports>
    <supported-locale>zh</supported-locale>
    <resource-bundle>com.ibm.portlet.spring.demo.systemindex.nl.SystemIndexResource</resource-bundle>
  </portlet>
Portlet名字为SystemIndex,支持viet和edit模式

DispatcherPortlet:spring mvc portlet针对portlet标准实现类,它负责转发Portlet请求给具体的Controller

 

2.新建spring portlet配置文件SystemIndex-portlet.xml,这里注意,spring portlet靠配置文件的名字来与标准portlet配置文件对应,文件格式为[portlet名称]-portlet.xml,SystemIndex-portlet.xml对应的就是名字为SystemIndex的portlet。

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  <context:component-scan base-package="com.ibm.portlet.spring.demo.systemindex.controller" />
</beans>

   内容很简单,就是指定了Controller的目录

 

3.新建applicationContext.xml配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="cache" value="false" />
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
  </bean>

  <bean id="portletMultipartResolver" class="org.springframework.web.portlet.multipart.CommonsPortletMultipartResolver">
    <property name="maxUploadSize" value="100000" />
  </bean>
</beans>
 

    用过spring mvc 的应该很清楚这里面定义了什么,一个jsp解析器,一个让Controller支持附件上传的解析器(注:id名不能随便写必须是portletMultipartResolver这是spring mvc portlet约定的名字,自己在做这块的时候被坑了很久)

 

4.编写ViewController

 

@Controller
@RequestMapping("VIEW")
public class ViewController extends AbstractListController{

  @RenderMapping
  public ModelAndView view() {
    List<SystemIndex> list = SystemIndexDataUtils.getAll();
    ModelAndView modelAndView = new ModelAndView("systemindex/View");
    modelAndView.addObject("list", list);
    return modelAndView;
  }
}

     看着很眼熟对吧,标准的spring mvc 3.x的写法,不一样的地方是@RequestMapping("VIEW")指定ViewController负责处理View模式的请求,@RenderMapping指定view方法处理默认请求。

 

5.编写EditController

 

 

@Controller
@RequestMapping("EDIT")
public class EditController {

  @RenderMapping
  public ModelAndView view() {
    List<SystemIndex> list = SystemIndexDataUtils.getAll();
    ModelAndView modelAndView = new ModelAndView("systemindex/List");
    modelAndView.addObject("list", list);
    return modelAndView;
  }

  @RenderMapping(params="action=insert")
  public String insertView(){
    return "systemindex/Insert";
  }

  private void saveIcon(CommonsMultipartFile icon, SystemIndex index) throws IOException{
    if(icon.getSize() > 0){
      OutputStream out = new FileOutputStream(SystemIndexDataUtils.ICON_FOLDER + icon.getOriginalFilename());
      FileCopyUtils.copy(icon.getInputStream(), out);
      index.setIconName(icon.getOriginalFilename());
    }
  }

  @ActionMapping(params="action=insert")
  public void insert(@RequestParam("icon") CommonsMultipartFile icon, @ModelAttribute("entity") SystemIndex index) throws IOException{
    saveIcon(icon, index);
    SystemIndexDataUtils.add(index);
  }

  @RenderMapping(params="action=update")
  public ModelAndView updateView(@RequestParam("id") String id){
    SystemIndex index = SystemIndexDataUtils.get(id);
    ModelAndView modelAndView = new ModelAndView("systemindex/Update");
    modelAndView.addObject("entity", index);
    return modelAndView;
  }

  @ActionMapping(params="action=update")
  public void update(@RequestParam("icon") CommonsMultipartFile icon, @ModelAttribute("entity") SystemIndex index) throws IOException{
    saveIcon(icon, index);
    SystemIndexDataUtils.update(index);
  }

  @ActionMapping(params="action=delete")
  public void delete(@RequestParam("id") String id){
    SystemIndexDataUtils.delete(id);
  }
}

 @RequestMapping("EDIT")指定EditController负责处理Edit模式请求,里面的方法分别是Edit模式下的CRED处理,@RenderMapping注解对应的是标准portlet API里的doView方法,@ActionMapping注解对应标准portlet里的processAction方法,都可以根据参数action来做细化处理。

 

完整代码见附近

分享到:
评论

相关推荐

    spring+portlet+mvc

    Spring是Java企业级应用开发的开源框架,它提供了全面的基础设施支持,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问、远程服务等。Spring的模块化设计使得开发者可以选择性地使用所需功能,极大地...

    IBM portlet开发指南

    在IBM WebSphere Portal环境下搭建开发环境,以及在Apache Pluto Portal环境下搭建开发环境,是开发Portlet应用的先决条件。快速入门部分可能涉及了基础的配置和测试步骤。 #### Portlet概念 Portlet定义了Portal...

    spring_2.5_web.zip

    综合以上分析,这个压缩包包含的库展示了Spring 2.5 Web应用的典型组件和依赖,涵盖了MVC框架、文件处理、报表生成、HTTP通信、portlet支持以及PDF生成等多个方面,是一个完整的Web应用开发基础。开发者可以基于这些...

    Portlet

    Portlet是一种在Web应用程序中构建可重用、可组合组件的技术,尤其常见于企业级的portlet容器或门户应用中,如Liferay Portal、IBM WebSphere Portal等。Portlet允许开发者创建可嵌入到门户页面上的小型交互式应用,...

    jsr168 portlet(struts2+spring2.5+hibernate3.3)(转载)

    【描述】提到的"struts2+spring2.5+hibernate3.3"是一个经典的Java企业级应用开发框架组合,也被称为SSH框架。Struts2是一个MVC(Model-View-Controller)框架,用于处理HTTP请求并管理业务逻辑;Spring2.5提供了...

    websphere portal 上卷

    1. **portlet开发**:学习如何创建基于JSR286规范的portlet,包括使用EJB、Spring或Struts进行portlet后端逻辑开发,以及使用JSP、Freemarker或XSLT实现视图层。 2. **布局与主题**:了解如何设计和实现门户布局,...

    spring-framework-3.0.5.RELEASE-dependencies1

    3. **javax.portlet**:此依赖是portlet API,主要用于构建portlet应用,这些应用可以部署到portlet容器(如IBM WebSphere Portal)中。Spring Portlet MVC模块支持portlet开发,因此这个依赖对于构建portlet应用至...

    Simple-portlet:第一个在github上开始使用的portlet

    4. **MVCPortlet**:在Portlet 2.0中,Spring MVC Portlet提供了一种更现代的开发方式。如果"Simple-portlet"使用了Spring MVC,那么将会有控制器、模型、视图和视图解析器等组件。 5. **依赖管理**:由于是Java...

    Spring 2.0 开发参考手册

    9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用...

    spring-framework-3.1.0.M2

    总的来说,Spring Framework 3.1.0.M2版本的这些组件共同构建了一个强大的企业级应用开发平台,无论是在传统的Web应用、portlet应用还是消息处理、测试等领域,都能提供全面且高效的支持。开发者可以通过这些模块的...

    Spring2.5.6 参考文档

    Spring框架作为一款流行的Java开发框架,提供了全面的技术支持,包括但不限于依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)、数据访问/集成、Web应用开发以及事务管理等...

    upload-portlet:波形ECG V3.0的上传页面

    在IT行业中,Portlet是一种可重用的Web组件,常用于构建portlet容器,如IBM WebSphere Portal或Liferay Portal。标题“upload-portlet:波形ECG V3.0的上传页面”暗示我们正在讨论一个专门用于上传波形ECG数据的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行...

    spring reference2.5

    - **Web应用开发**:Spring MVC模块为构建高性能、可扩展的Web应用程序提供了强大的支持。 - **数据库访问**:Spring简化了JDBC、ORM等技术的使用,使得数据访问层的开发变得更加简单高效。 - **测试**:Spring框架...

    Spring API

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    Spring中文帮助文档

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

Global site tag (gtag.js) - Google Analytics