想起面试的时候的MVC模式的解释的题目了,开发中就是采用AOM开发,讲界面反转控制。。。貌似。
套用mvc的话。。
View是Model的观察者,当model变化后,View的显示对应改变。
例如下面的例子,点击按钮btn后,改变了output的值,将其变为“ok”显示在页面上。而在view这边,这种逻辑不是由页面控制的,由托管的bean控制了。
下面是xhtml代码
<?xml version="1.0" encoding="UTF-8"?> <f:view xmlns:f="http://java.sun.com/jsf/core" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:w="http://www.apusic.com/jsf/widget" xmlns:ajax="http://www.apusic.com/jsf/ajax" xmlns:layout="http://www.apusic.com/jsf/layout" renderKitId="AJAX"> <w:head> <w:stylesheet src="/css/example.css" /> </w:head> <w:page title="HelloWorld Example"> <p/> <h1>HelloWorld Example Using Dreamwaveaaa </h1> <hr noshade="noshade" /> <p/> <w:form> <w:textField id="txt"/> <label> </label> <h:outputText id="output" /> <w:button id="btn"/> </w:form> </w:page> </f:view>
控制其变化的托管bean:
@ManagedBean(name = "addBean", scope = ManagedBeanScope.REQUEST) public class AddBean { public AddBean(){ System.out.println("hello world"); } @Bind(id = "txt") private String txt="abcdef"; @Bind(id="output") private String output = "ccccc"; @Action(id="btn") @Label("aaa") public String btn(){ output = "ok"; return null; } }
output的初始值为ccccc,页面中的btn被点击后,执行了btn()方法,使页面中的output的值变为ok。
托管的这个AddBean中,将托管bean的范围制定为ManagedBeanScope.REQUEST,则每次点击btn按钮,都会执行其构造方法,可见每次请求,该托管bean都会被重新创建,因此每次刷新后,output的值又回到cccc。
而将该范围制定为SESSION时候,第一次请求该页面(非点击btn按钮),则会执行一次AddBean的构造方法。之后再刷新页面都不会再执行该方法了,因此点击btn之后再刷新页面,output的值也一直是ok。如果启动服务后,请求的别的页面,也不会立即构造该AddBean。它在被使用的时候才被构造出来。
Socpe的APPLICATION应该就是和应用启动时一起启动下面的两个状态简单看了金蝶的文档没查到,2天看到再补上。
CONVERSATION:
NONE: