Spring Portlet MVC開發入門示例

openkk 12年前發布 | 106K 次閱讀 Spring 門戶平臺Portal

本文通過一個簡單實例介紹一下Spring 的Portlet MVC框架.

Spring Portlet MVC和其Web MVC可以說是如出一轍,只是在Web MVC中處于核心的DispatcherServlet在Portlet MVC中換成了DispatcherPortlet,如下圖描述了Portlet request是如何被處理的.關于Spring 的Web MVC,請參照 http://blog.csdn.net/kkdelta/article/details/7274708

Spring Portlet MVC開發入門示例

圖片來源于Portlets inAction.

DispatcherPortlet配置在portlet.xml文件中,它繼承了Portlet標準中的GenericPortlet,所以它本 質上是一個能夠將Portlet Request dispatch到Spring框架中其它MVC組件的一個Portlet.配置如下:

    <portlet>  
        <portlet-name>helloWorld</portlet-name>  
        <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>  
        <supports>  
            <mime-type>text/html</mime-type>  
            <portlet-mode>view</portlet-mode>  
        </supports>  
        <resource-bundle>content.Language-ext</resource-bundle>  
        <portlet-info>  
            <title>Hello World</title>  
        </portlet-info>  
    </portlet>  

這 里以Render Request處理為例,當DispatcherPortlet接收到Request的時候,它會根據handermapping的配置找到相應的 Controler來處理請求.Controler處理完后返回一個ModelAndView,對于View的處理則和Web MVC類似了,這里不再做介紹.
xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" xmlns:xsi=" 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
;

<bean id="helloWorldController"  
    class="chapter07.code.listing.HelloWorldController"/>  

<bean id="portletModeHandlerMapping"  
    class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">  
    <property name="portletModeMap">  
        <map>  
            <entry key="view">  
                <ref bean="helloWorldController" />  
            entry>  
        map>  
    property>  
bean>  
<bean id="viewResolver"  
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="viewClass"  
        value="org.springframework.web.servlet.view.JstlView" />  
    <property name="prefix" value="/WEB-INF/jsp/" />  
    <property name="suffix" value=".jsp" />  
bean>  

beans>

public class HelloWorldController implements Controller {
public void handleActionRequest(ActionRequest request,
ActionResponse response) throws Exception {
//-- do nothing the Hello World portlet doesn't receive
//-- action requests.
}
public ModelAndView handleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
model.put("helloWorldMessage", "Hello World");
return new ModelAndView("helloWorld", model);
}
} </pre>
</div> 本文的例子參照了Portlets in Action,完整代碼可以從
http://download.csdn.net/detail/kkdelta/4125924下載.

這個例子可以運行在Liferay的Portal server上,關于Portlet和LifeRay的介紹可以參考 http://blog.csdn.net/kkdelta/article/category/1082877

Spring的Controller提供了處理Render request和Action request的方法,對于處理Event和resource類型的request可以分別實現EventAwareController和 ??ResourceAwareController.

同時通過注解的方式也可以mapping響應的request到具體的方法進行處理.Spring提供了@Controller,@RenderMapping和@ActionMapping等等.

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!