Spring Portlet MVC

来源:互联网 发布:大数据可视化软件 编辑:程序博客网 时间:2024/04/30 04:08

在简单学习了Spring Web MVC以后转向了Spring Portlet MVC的学习中.通过两天的学习基本上也能上手写一些东西了。下面就简单总结一下这两天的收获!

Portlet mvc知识点小结:
1、Portlet mvc和Spring Web mvc主要的差异在于Portlet的请求处理有两个独特的阶段:动作阶段(action)和显示阶段.
动作阶段会有"后台"数据改变或动作的代码.显示阶段会产生用户每次刷新时的看到的显示内容.重要的是,
在单个请求的整个处理过程中,action阶段只会被执行一次,而显示阶段可能会被执行多次.
2、Portlet mvc框架是围绕分发器DispatchPortlet设计的,分发器把请求转发给处理器.和Web框架的DispatchServlet一样,
Portlet mvc还有可配置的处理器映射和视图解析.
3、Controller 控制器
---------------------------------------------------------------------------------------
前端分发器--初始化时框架会在Web应用的WEB-INF目录下寻找[portlet-name]-portlet.xml
<portlet>
 <portlet-name>sample</portlet-name>
 <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
 <supports>
  <mime-type>text/html</mime-type>
  <portlet-mode>view</portlet-mode>
 </supports>
 <portlet-info>
  <title>Sample Portlet</title>
 </portlet-info>
</portlet>
---------------------------------------------------------------------------------------
Portlet MVC控制器构架的基础是 org.springframework.web.portlet.mvc.Controller 接口
a、ModelAndView handleRenderRequest(RenderRequest request, RenderResponse response)
        throws Exception;
b、void handleActionRequest(ActionRequest request, ActionResponse response)
        throws Exception;

常用的控制器**********************************************
PortletContentGenerator
AbstractController
ParameterizableViewController
PortletModeNameViewController -- 把当前的 Portlet的状态作为视图名
AbstractCommandController -- 这个类不提供表单功能,但它提供验证功能
AbstractFormController
SimpleFormController -- 指定command对象,表单的视图名以及页面对应的视图名
AbstractWizardFormController -- 向导式的接口 来编辑跨多个页面的command对象
---------------------------------------------------------------------------------------
处理器映射:通过映射可以把Portlet请求对应到合适的处理器上面
1、PortletModeHandlerMapping -- 基于当前Portlet模式like view、edit、help
<bean id="portletModeHandlerMapping"
      class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
    <property name="portletModeMap">
     <map>
            <entry key="view" value-ref="viewHandler"/>
            <entry key="edit" value-ref="editHandler"/>
            <entry key="help" value-ref="helpHandler"/>
        </map>
    </property>
</bean>
2、ParameterHandlerMapping -- 如果需要在不改变portlet模式的情况下而在多个控制器间切换, 最简单的方法是把一个请求参数作为key来控制映射
<bean id="parameterHandlerMapping"
class="org.springframework.web.portlet.handler.ParameterHandlerMapping"/>
    <property name="parameterMap">
        <map>
            <entry key="add" value-ref="addItemHandler"/>
            <entry key="edit" value-ref="editItemHandler"/>
            <entry key="delete" value-ref="deleteItemHandler"/>
        </map>
    </property>
</bean>
3、PortletModeParameterHandlerMapping -- 能够在每种portlet模式下进行不同的切换

<bean id="portletModeParameterHandlerMapping"class="org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping">
    <property name="portletModeParameterMap">
        <map>
            <entry key="view"><!-- view portlet 模式 -->
                <map>
                    <entry key="add" value-ref="addItemHandler"/>
                    <entry key="edit" value-ref="editItemHandler"/>
                    <entry key="delete" value-ref="deleteItemHandler"/>
                </map>
            </entry>
            <entry key="edit"><!-- edit portlet 模式 -->
                <map>
                    <entry key="prefs" value-ref="prefsHandler"/>
                    <entry key="resetPrefs" value-ref="resetPrefsHandler"/>
                </map>
            </entry>
        </map>
    </property>
</bean>

 

具体的细节还需要在实际应用中拓展提升............

原创粉丝点击