EWeb4j-1.b.6.5 新的特性介紹—mvc action篇

(1) Controller支持以下約定:
action方法不填寫註解RequestMapping的時候,默認以方法名爲url-mapping值。
action 方法返回類型爲void的時候框架不做任何跳轉處理。
缺省返回值忽略大小寫。例如ajax。
類名如果以“Controller”,“Control”,“Action”結尾的話,可以不用添加@Controller註解,框架也能識別爲控制器。
這裏有個最新的例子:
package test.controller;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import test.po.Pet;
import com.cfuture08.eweb4j.mvc.annotation.Param;

/**
* this is a pojo action test
*
* 約定代替配置,可以看到整個action類真正實現0配置! 方法名——> URL訪問映射。 屬性名——>URL參數名
* 類名以Controller、Control、Action結尾的框架以控制器處理。
*
* 並且action類兼容Struts2和SpringMVC3的寫法。
*
* @author weiwei
*
*/
public class ZeroConfigAction {

/**
* 從當前會話中獲取輸出對象進行頁面打印。 只需要聲明即可,框架會自行注入。
* 返回類型爲void、返回值爲ajax(忽略大小寫)、null的時候,訪問action後,框架不會做任何跳轉。
*
* @param out
*/
public void sayHello(PrintWriter out) {
out.print("Hello!");
}

/**
* 重定向跳轉
*
* @return
*/
public String testRedirect() {
return "redirect:sayHello";
}

/**
* 服務端跳轉
*
* @return
*/
public String testForward() {
return "index.jsp";// or "forward:index.jsp"
}

/**
* pojo action 的屬性與url屬性綁定,同時方法參數傳遞(框架實現)
*
* @param out
*/
public void testPojoParam(PrintWriter out) {
out.print(info);
}

/**
* 當pojo action 的屬性是pojo的時候,支持無限嵌套的參數綁定。 當然,方法的參數是pojo這種情況也是一樣的。
*
* @param out
* @param fuck
*/
public void testPojoParamAndUrlParam(PrintWriter out,
@Param("fuck") String fuck) {
out.print("fuck-->" + fuck + "pet.master-->" + pet.getMaster());
}

/**
* pojo action 的屬性有四個缺省值,只要聲明+setter&getter方法。框架就會在運行時刻實例化它們,並且傳入當前會員的上下文。
* 這四個參數是:HttpServletRequest,HttpServletResponse,PrintWriter,HttpSession
*/
public void testOut() {
out.print("out-->" + info);
}

// ------------------------------------------------------
private Pet pet;
private String info;
private HttpServletRequest req;
private PrintWriter out;
public String getInfo() {return info;}
public void setInfo(String info) {this.info = info;}
public Pet getPet() {return pet;}
public void setPet(Pet pet) {this.pet = pet;}
public HttpServletRequest getReq() {return req;}
public void setReq(HttpServletRequest req) {this.req = req;}
public PrintWriter getOut() {return out;}
public void setOut(PrintWriter out) {this.out = out;}
}

(2)mvc中,爲了改進性能,將Class.forName(ActionBeanName),改爲緩存方式調用。這樣省去了lookup的過程,效能會提升。當系統需要應對高併發的時候,很有效。
(3)廢除了formBean的配置,框架自動識別pojo參數,並且支持無限嵌套pojo屬性。無需任何配置。

約定優於配置、零配置將會是這個版本較重要的關注點,但不是唯一的。

待續......
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章