JAVA5000行代码什么概念_GitHub - catstiger/mvc: 一个不超过5000行代码的,快速,简单,易用的MVC框架。...
一個不超過5000行代碼的,快速,簡單,易用的MVC框架。
我們的目的是:
讓MVC回歸其最初的目的。
因簡單而快速,超過目前各種主流MVC。
零侵入,零配置,易于測試,并且讓開發者感覺不到MVC的存在
可以單獨使用,也可以和Spring整合使用。
飛快的json解析,也支持jsp和freemarker(推薦)。
我們的目的不是:
各種標準,各種用法,20+ Annotations, 超強擴展.... SpringMVC做的足夠了。
Multipart, 上傳這樣的需求應該是單獨的、通用的,而不是和業務混在一起,郵箱用過吧...
驗證,簡單的非空驗證遠遠不能滿足實際需要,復雜的驗證框架做不到。驗證應該交給業務邏輯來做,而不是框架。
Getting Started
在此之前,請準備好:
Java JDK 8
Maven3
1.在您的POM中加入一個repository:
Honqun Nexus 3dp
Honqun Repository
http://115.28.55.60:8081/nexus/content/repositories/thirdparty/
true
2.POM中加入依賴
com.github.catstiger
catstiger-mvc
0.1
3.配置web.xml,加入MvcFilter:
MvcFilter
com.github.catstiger.mvc.MvcFilter
basePackage
org.honqun
MvcFilter
/*
4.寫一個Service,哦,Controller,隨便吧
@Domain //這個標注表示這個類可以響應HTTP請求,URL前綴為/user_service
public class UserService {
/**
* 連同類對應的URL,訪問這個方法的URL為/user_service/create
*/
@API
public User create(@Param("id") Long id, @Param("name") String name) {
return null;
}
}
手冊
URL映射規則
類用`@Domain`標注,方法用`@API`標注,只有這樣,方法才能響應一個URL。
被@Domain的類對應的URL為類名(駝峰命名)小寫,單詞之間用_分隔,例如:
//這個類的URL前綴為/employee_join_service
@Param
public class EmployeeJoinService{}
被@API標注的函數,對應的URL為:類名URL + / + 方法URL,方法URL為方法名小寫單詞之間用_分隔。例如:
@Domain
public class EmployeeJoinService{
//訪問這個方法的URL為/employee_join_service/join_on
@API
public Employee joinOn(@Param("emp") Employee emp) {
}
}
@Domain和@API都可以自定義URL,他們的value參數用于覆蓋缺省的URL規則:
@Domain("/emp")
public class EmployeeJoinService{
//訪問這個方法的URL為/emp/join
@API("join")
public Employee joinOn(@Param("emp") Employee emp) {
}
}
輸入參數轉換
能夠自動從HTTP參數轉換成各種常用的Java數據類型:
Primitive類型及其Wrapper
String
BigDecimal
BigInteger
java.util.Date,java.sql.Date,格式可以在web.xml中配置用inti-param配置(dateFormat)
普通Java Bean
由上述數據類型組成的數組。
java.util.List,java.util.Set,必須參數化
用@Param標注參數,可以自定義轉換規則。
//MyConverterz實現了ValueConverter接口
public User queryByDate(@Param(value= "date", converter = MyConverter.class) Date date){}
方法參數與請求參數對應關系
如果方法參數只有一個,并且是一個JavaBean,那么JavaBean的屬性名稱與parameter名稱一一對應。
如果方法有多個參數,則需要用@Param指出參數名稱和parameter名稱的對應關系。
如果方法參數是一個JavaBean,而parameter需要與JavaBeann中的某個Beand的屬性對應,則可以使用.分隔參數名稱。例如:?user.dept.id=1,對應的是User對象的dept屬性的id屬性。
例如:
@Domain
public class UserService {
/**
* 對應的URL:/user_service/query_user?id=0&username=a&dept.name=tech
*/
@API
public List queryUser(@Param("id") Long id, @Param("username") String username, @Param("dept") Dept dept){
}
}
解析響應
####缺省的解析規則(根據URL擴展名)
URL沒有擴展名或者擴展名為.json,直接輸出JSON格式的數據。
URL擴展名為.text,.txt, 則直接將方法執行的結果轉換為字符串,渲染到HttpServletResponse中。
URL擴展名為.html,.htm,.do,.action:
/WEB-INF/views/下,對應URL的目錄中如果有ftl文件,則解析freemarker,并渲染到HttpServletResponse中。
如果沒有ftl文件,重定向d(forward)到/WEB-INF/views/下對應的jsp文件。
例如:URL為/user_service/create.htm,對應的模板文件為/WEB-INF/views/user_service/create.ftl或者create.jsp
可以在web.xml中配置模板文件的目錄:
MvcFilter
com.github.catstiger.mvc.MvcFilter
pageFolder
/WEB-INF/ftl
####異常處理
可讀異常,通常用于處理用戶輸入錯誤等,使用com.github.catstiger.mvc.exception.ReadableException拋出。
請求json數據:渲染一個JSON,包括異常說明(message),異常標記(isFailed)等, 例如:
{"errorCode":"-1","failed":true,"msg":"可讀異常!"}
請求html數據,以errorMessage為Attribute Name保存在Request中。
后臺不會打印異常棧。
不可讀異常,通常是系統錯誤造成,使用RuntimeException拋出
直接返回505錯誤,異常對象以"javax.servlet.error.exception"保存。
后臺記錄日志,并打印異常棧。
####自定義解析規則
@API參數reolver指向一個ResponseResolver的實現類,即可實現自定義解析方式:
@API(resolver = MyResolver.class)
public User createUser(@Param("user") User model) {
}
總結
以上是生活随笔為你收集整理的JAVA5000行代码什么概念_GitHub - catstiger/mvc: 一个不超过5000行代码的,快速,简单,易用的MVC框架。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery ajax mysql登录_
- 下一篇: python执行时间长被kill_用py