Liferay 6.1开发学习:基于注解的SpringMVC portlet开发

转自: http://www.huqiwen.com/2013/01/10/liferay-6-1-development-study-17-springmvc-portlet/

SpringMVC使用起来是简单易懂,方便快捷。springmvc 在很早之前就开始提供对于JSR168的支持,同样的liferay的这个portal是实现了JSR 168和JSR268规范的,理论只要是提供对JSR 168或JSR268规范支持的MVC框架都可以用来开发Liferay portlet,像Struts1/struts2/SpringMVC等。

对于SpringMVC在portlet中的使用,在Spring的官方文档中已经有说了详细的说明(在spring-framework-reference中的19章。),这里参考官方文档进行配置。

环境准备

Liferay版本:6.1.1 CE版本

Spring版本:3.2.0 GA

Liferay IDE: 1.6.1

开发步骤

一、导入SpringMVC portlet所需要的jar包。

  • spring-beans-3.2.0.RELEASE.jar
  • spring-context-3.2.0.RELEASE.jar
  • spring-core-3.2.0.RELEASE.jar
  • spring-expression-3.2.0.RELEASE.jar
  • spring-web-3.2.0.RELEASE.jar
  • spring-webmvc-3.2.0.RELEASE.jar
  • spring-webmvc-portlet-3.2.0.RELEASE.jar

二、新建一个Portlet插件开发的工程,可以使用Liferay IDE中的portlet创建向导建立一个普通的插件工程。

三、修改web.xml,在里面添加如下内容:

 
  1. <servlet>  
  2.     <servlet-name>ViewRendererServlet</servlet-name>  
  3.     <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6.     <servlet-name>ViewRendererServlet</servlet-name>  
  7.     <url-pattern>/WEB-INF/servlet/view</url-pattern>  
  8. </servlet-mapping>  

四、portlet.xml中的内容修改,portlet.xml中的主要内容如下,主要为portlet-class的内容,要使用spring的dispatcherPortlet,下面的init-param为非必须的,他配置的内容为当前portlet所对应的mvc配置信息的xml地址,如果不配置,则自动的在web-inf目录下面寻找名称和当前portlet-name一样的xml文件。

 
  1. <portlet-name>SpringMVC</portlet-name>  
  2. <display-name>SpringMVC</display-name>  
  3. <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>  
  4. <init-param>  
  5.     <name>contextConfigLocation</name>  
  6.     <value>/WEB-INF/SpringMVC-portlet.xml</value>  
  7. </init-param>  
  8. <expiration-cache>0</expiration-cache>  
  9. <supports>  
  10.     <mime-type>text/html</mime-type>  
  11.     <portlet-mode>view</portlet-mode>  
  12. </supports>  

五、springmvc的配置XML信息如下:SpringMVC-portlet.xml

 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd   
  8.         http://www.springframework.org/schema/context   
  9.         http://www.springframework.org/schema/context/spring-context-3.2.xsd   
  10.         http://www.springframework.org/schema/mvc    
  11.         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">  
  12.            
  13.     <context:component-scan base-package="com.huqiwen.portlet" />  
  14.     <bean id="viewResolver"  
  15.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  16.         <property name="viewClass"  
  17.             value="org.springframework.web.servlet.view.JstlView" />  
  18.         <property name="prefix" value="/WEB-INF/jsp/" />  
  19.         <property name="suffix" value=".jsp" />  
  20.     </bean>  
  21. </beans>  

可以看到这里和普通的SpringMVC的配置没有什么区别。

六、编写SpringMVC的controller类,如下:

  1. @Controller  
  2. @RequestMapping(value = "VIEW")   
  3. public class SpringPortlet {   
  4.        
  5.     @RenderMapping  
  6.     public String view(Model model){   
  7.         model.addAttribute("username""huqiwen");   
  8.         return "view";   
  9.     }   
  10.        
  11.     @RenderMapping(params = "action=edit")   
  12.     public String edit(Model model){   
  13.         model.addAttribute("edit""action=edit");   
  14.         return "edit";   
  15.     }   
  16. }   

说明:

@RequestMapping中的VIEW,代表当前的是portlet的VIEW模式,如果是EDIT模式,则将这里的VIEW换成edit即可。

@RenderMapping 默认对应的是portlet进入的时候执行的方法。

@RenderMapping(params = "action=edit")   这个请求的是对应于用户在页面中的请求,如JSP中有如下的portlet请求,则会进入到这个方法里面,这里param name可以自定义,不一定叫action,可以叫cmd,op等均可

 
  1. <portlet:renderURL var="edit">   
  2.     <portlet:param name="action" value="edit"/>   
  3. </portlet:renderURL>  

一个简单的SpringMVC portlt示例下载:点击我

你可能感兴趣的:(springMVC)