设为首页 收藏本站
查看: 1073|回复: 0

[经验分享] 使用spring mvc portlet 3.0开发IBM WebSphere Portlet应用

[复制链接]

尚未签到

发表于 2017-5-27 09:14:15 | 显示全部楼层 |阅读模式
  最近因工作需要使用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来做细化处理。
  完整代码见附近

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-381567-1-1.html 上篇帖子: 使用 Java Socket 编程实现开放平台与 IBM 主机的文件传输 下篇帖子: IBM AIX V5.3 系统管理 -- 问题的确定与解决二
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表