Marmot Framework 1.x 配置手册

1系统主框架配置
1.1建立属于自己主框架
参考Marmot Framework中提供的示例应用,系统的主框架页面往往被放置在一个子文件夹中(这不是必须的,您也可以把它们放置在web的根目录中)。同时,在WEB-INF/configs/marmot-base-context.xml的org.marmot.ConfigureInitializer的配置当中,有一个view.defaultFrameStyle项用来配置此文件夹的位置。例如:
 
  
  
  
  
  1. <!-- Configure --> 
  2. <bean class="org.marmot.ConfigureInitializer" lazy-init="false" init-method="init"> 
  3.     <property name="properties"> 
  4.         <props> 
  5.             … … … 
  6.             <prop key="view.defaultFrameStyle">/sample/main/style1</prop> 
  7.             … … … 
  8.         </props> 
  9.     </property> 
  10. </bean> 

 Marmot Framework最终通过Mapping文件——marmot.map.xml中的authenticationmainFrame这两个Controller结合上面的"view.defaultFrameStyle"配置来定位,登录页面和主框架的相关界面。authenticationmainFrame的声明如下:

  
  
  
  
  1. <controller name="authentication" clazz="org.marmot.framework.main.AuthenticationController"> 
  2.     <action> 
  3.         <forward name="success" path="$pageRoot/login.jsp" /> 
  4.     </action> 
  5.     <action name="login"> 
  6.         <forward name="success" path="/mainFrame.d" redirect="true" /> 
  7.         <exception clazz="java.lang.Exception" path="/authentication.d" /> 
  8.     </action> 
  9.     <action name="logout"> 
  10.         <forward name="success" path="authentication.d" redirect="true" /> 
  11.     </action> 
  12.     <action name="getCaptchaImage" /> 
  13.     <action name="sessionExpired"> 
  14.         <forward name="success" path="$pageRoot/session-expired.jsp" /> 
  15.     </action> 
  16.     <action name="accessDenied"> 
  17.         <forward name="success" path="$pageRoot/access-denied.jsp" /> 
  18.     </action> 
  19. </controller> 
  20. <controller name="mainFrame" clazz="org.marmot.framework.main.MainFrameController" safe="true"> 
  21.     <action> 
  22.         <forward name="success" path="$pageRoot/main-frame.jsp" /> 
  23.     </action> 
  24.     <action name="welcome"> 
  25.         <forward name="success" path="$pageRoot/welcome.jsp" /> 
  26.     </action> 
  27.     <action name="about"> 
  28.         <forward name="success" path="$pageRoot/about.jsp" /> 
  29.     </action> 
  30. </controller> 

配置中的$pageRoot都将在运行时被替换成"view.defaultFrameStyle"设置的实际路径,因此在实际使用时一般不需要来调用authenticationmainFrame这两个Controller的配置信息。

 

建议您在构造系统时首先到Marmot Framework中提供的示例应用选择一种比较接近期望的主框架页面,把它们复制到自己的应用中,然后修改marmot-base-context.xml"view.defaultFrameStyle"项参数。最后再根据实际的需要来对各个jsp页面进行外观上的调整。在此过程中应当也不需要修改各个jsp的文件名。

authenticationmainFrame这两个Controller的说明如下:

l        authentication

§           <action> 显示登录界面。

§           login 登录的提交入口,即登录<Form>action属性。对于采用AJAX方式的登录界面此项可能没用。

§           logout 注销的提交入口。对于采用AJAX方式的登录界面此项可能没用。

§           getCaptchaImage 获取(下载)登录验证码的action

§           sessionExpired Session超时的错误页面。当系统超时后业务界面自动转向到的页面。

§           accessDenied 访问权限不足时的错误页面。

l        mainframe

§           <action> 主框架界面的入口action

§           welcome 工作区的默认页面。

§           about 关于页面。

 

1.2         配置登录功能

登录功能除了需要定制登录界面外,还需要自行实现具体的登录逻辑。具体的做法是实现org.marmot.framework.security.Authenticator接口,该接口的声明如下:

  
  
  
  
  1. package org.marmot.framework.security; 
  2.  
  3. /** 
  4.  * 登录功能的接口  
  5.  * @author Benny Bao 
  6.  */ 
  7. public interface Authenticator { 
  8.     /** 
  9.      * 登录系统. 
  10.      * 如果登录失败应抛出异常,否则框架会认为系统登录成功. 
  11.      * @param user 用户名 
  12.      * @param password 口令 
  13.      * @param attributies 附加的登录信息 
  14.      * @throws Exception 
  15.      */ 
  16.     public void login(String user, String password, Object attributies) 
  17.             throws Exception; 
  18.  
  19.     /** 
  20.      * 注销  
  21.      * @throws Exception 
  22.      */ 
  23.     public void logout() throws Exception; 

很多时候,在Authenticator的实现类中需要获得HttpServletRequest对象,以便于访问Session。如果您需要实现这样的功能,可以考虑继承AbstractHttpAuthenticator而不是直接实现AuthenticatorAbstractHttpAuthenticator的声明如下:

  
  
  
  
  1. package org.marmot.framework.security; 
  2.  
  3. import javax.servlet.http.HttpServletRequest; 
  4. import com.bstek.dorado.common.DoradoContext; 
  5. import com.bstek.dorado.common.HttpDoradoContext; 
  6.  
  7. /** 
  8.  * 支持获取HttpServletRequest对象的{@link org.marmot.framework.security.Authenticator}抽象实现类.  
  9.  * @author Benny Bao 
  10.  */ 
  11. public abstract class AbstractHttpAuthenticator implements Authenticator { 
  12.  
  13.     /** 
  14.      * 返回当前线程对应的HttpServletRequest对象.  
  15.      * @return HttpServletRequest对象. 
  16.      */ 
  17.     protected HttpServletRequest getRequest() { 
  18.         DoradoContext context = (HttpDoradoContext) DoradoContext.getContext(); 
  19.         if (context instanceof HttpDoradoContext) { 
  20.             return ((HttpDoradoContext) context).getRequest(); 
  21.         } 
  22.         else { 
  23.             return null
  24.         } 
  25.     } 

完成上述实现类之后,只要将该类配置到WEB-INF/configs/marmot-framework-context.xml的marmot.authenticator中就可以了。

事实上,在很多情况下并不是必须使用AbstractHttpAuthenticator,因为通过DoradoContext同样可以很简单的访问Session中的属性。DoradoContext的使用方法见dorado的相应文档。

1.验证逻辑类

WEB-INF/configs/marmot-framework-context.xmlmarmot.authenticator

2.登录的跳转逻辑(比如成功跳转到什么地方,失败跳转到什么地方)

marmot.map.xml中的authentication详细描述了跳转的整个过程;

疑问:

页面中的变量与验证逻辑类如何一一对应,比如用户名

 

 

 

 

 

 

 

1.3        设置系统默认页

很多系统都会使用登录界面作为系统的默认页。设置系统默认页最直接的方法就是在web.xml中增加welcome-file-list的设置。例如:

除了这个方法以外,您也可以考虑使用Marmot Framework中提供的JS缓存验证页(index.html)面作为系统默认页。

由于基于dorado的应用需要下载一些基础JS库文件,因此当用户第一次访问某dorado应用时,这些JS库文件在不开启ZGIP的情况下大致会产生280KB的下载数据量,在开启ZGIP的情况下大致会产生80KB的下载数据量。如此,在低速网络环境下,当用于第一次访问某dorado应用中的页面时,可能会面对一段时间的白屏已等待这些JS库文件被下载到本地。

index.html可以以进度条的方式提示用户dorado JS库文件当前的下载进度,以避免用户变得心烦气躁。当index.html完成了JS库文件的下载后会自动跳转到实际的应用首页中,在使用时您可能需要手工的修改index.html中跳转目标地址。例如:

 

  
  
  
  
  1. … … … 
  2. <script> 
  3. function openApp() { 
  4.   open("authentication.d", "_self"); 
  5. </script> 
  6. … … … 

1.4        动态改变框架风格

前面提到的"view.defaultFrameStyle"系统参数可以设置默认的主框架风格。不过,我们也可以利用org.marmot.framework.main.FrameStyleUtils在运行时动态的改变主框架的风格(需要页面刷新才能生效)。利用FrameStyleUtils甚至可以为每一个Session定义不同的框架风格,这样,就有可能实现让用户根据自己的喜好来选择框架风格的功能了。

 

你可能感兴趣的:(Marmot)