1.支持的注解(使用方式完全同spring-mvc):
MvcController
MvcRestController
MvcRequestBody(List、Map类型参数默认带有MvcRequestBody注解)
MvcResponseBody
MvcRequestMapping
MvcRequestHeader
MvcRequestParam
可自定义扩展,参考5.0和7.6
支持MvcRequestBody,MvcRequestHeader,MvcRequestParam注解解析和参数赋值
可自定义扩展(支持解析自定义注解,可扩展注解),方式参考7.6
thymeleaf(弃用)
jsp(后续支持)
默认静态文件
可自定义扩展,方式参考7.7
1.支持自定义扩展filter(javax.servlet.Filter),示例如下:
import com .dahuaboke .mvc .model .MvcFilter ;
import com .dahuaboke .mvc .web .filter .MvcFilterFactory ;
/**
* 需要注册一个MvcFilterFactory的bean,然后添加MvcFilter,可以是多个
* MvcFilter可以添加多个,但是MvcFilterFactory的bean只能有一个
*/
@ Bean
public MvcFilterFactory mvcFilterFactory () {
MvcFilterFactory mvcFilterFactory = new MvcFilterFactory ();
MvcFilter mvcFilter = new MvcFilter ();
mvcFilter .setName ("mvcFilter" );
mvcFilter .setOrder (1 );
mvcFilter .setPattern ("/*" );
mvcFilter .setFilter ((request , response , chain ) -> {
System .out .println ("filter go" );
chain .doFilter (request , response );
});
mvcFilterFactory .addFilter (mvcFilter );
return mvcFilterFactory ;
}
public class MvcFilter {
private String name ;
private String pattern ;
private Filter filter ;
private int order ;
}
2.支持自定义扩展listener(javax.servlet.ServletContextListener)
import com .dahuaboke .mvc .model .MvcListener ;
import com .dahuaboke .mvc .web .listener .MvcListenerFactory ;
/**
* 需要注册一个MvcListenerFactory,然后添加MvcListener
* MvcListener可以添加多个,但是MvcListenerFactory的bean只能有一个
*/
@ Bean
public MvcListenerFactory mvcListenerFactory (){
MvcListenerFactory mvcListenerFactory = new MvcListenerFactory ();
MvcListener mvcListener = new MvcListener ();
mvcListener .setListener (new Listener ());
mvcListener .setOrder (1 );
mvcListenerFactory .addListener (mvcListener );
return mvcListenerFactory ;
}
class Listener implements ServletContextListener {
@ Override
public void contextInitialized (ServletContextEvent sce ) {
System .out .println ("listener init" );
}
}
public class MvcListener {
private ServletContextListener listener ;
private int order ;
}
/**
* 容器类需要继承com.dahuaboke.mvc.server.MvcAbstractWebServer
* 重写init()方法
*/
@ Bean
public MvcWebServer mvcWebServer () {
return new MvcTomcatServer (8080 );
}
/**
* 解析器需要实现com.dahuaboke.mvc.config.parse.MvcResultParser
* 重写init()方法
*/
@ Bean
public MvcResultParser mvcResultParser () {
return new MvcResultFastjsonParser ();
}
/**
* 解析器需要实现com.dahuaboke.mvc.config.parse.MvcJsonParser
* 重写toJSONString()、toObject()、toArray()方法
*/
@ Bean
public MvcJsonParser mvcJsonParser () {
return new MvcFastjsonParser ();
}
/**
* 解析器需要实现com.dahuaboke.mvc.config.parse.MvcParamParser
* 重写parse()方法
*/
@ Bean
public MvcParamParser mvcParamParser () {
return new MvcDefaultParamParser ();
}
/**
* 解析器需要实现com.dahuaboke.mvc.MvcViewResolver
* 重写resolve()方法
*/
@ Bean
public MvcViewResolver mvcViewResolver () {
return new MvcThymeleafViewResolver ();
}
mvc.tomcat.port=8080(服务启动端口,参数值必须为数字,且理论应在0-65535之间)
mvc.view.prefix=web/(静态资源路径前缀)
mvc.view.suffix=.html(静态资源路径后缀)
mvc.view.debugPath=C:/Users (因为静态资源编译后无法动态刷新,这个参数指定到项目静态资源路径可以动态刷新)
@ MvcController
//@MvcRestController(使用次注解则下列a-f方法可以省略MvcResponseBody注解,但是g方法无法响应请求到指定页面,会返回字符串view)
@ MvcRequestMapping ("mvc" )
public class TestController {
@ Autowired
private TestService testService ;
/**
* 此方法要求body体中含有指定类型的json
*/
@ MvcRequestMapping ("a/" )
@ MvcResponseBody
public TestUser a (@ MvcRequestBody TestUser user ) {
return user ;
}
/**
* 此方法要求请求头含有对应字段
*/
@ MvcRequestMapping ("/b/" )
@ MvcResponseBody
public String b (@ MvcRequestHeader ("Content-Type" ) String type ) {
return type ;
}
/**
* 此方法要求请求参数含有对应字段
*/
@ MvcRequestMapping ("/c" )
@ MvcResponseBody
public String c (@ MvcRequestParam ("param" ) String param ) {
return param ;
}
/**
* List类型参数默认带有MvcRequestBody注解
* 此方法要求body体中含有指定类型的json
*/
@ MvcRequestMapping ("e" )
@ MvcResponseBody
public List e (List list ) {
return list ;
}
/**
* Map类型参数默认带有MvcRequestBody注解
* 此方法要求body体中含有指定类型的json
*/
@ MvcRequestMapping ("f" )
@ MvcResponseBody
public Map f (Map map ) {
return map ;
}
/**
* 此方法需要静态资源包含view.html(后缀可配置)
*/
@ MvcRequestMapping ("/g" )
public String g () {
return "view" ;
}
}