在简单学习了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>
具体的细节还需要在实际应用中拓展提升............