自己写的简单版的MVC的Framework
- 使用说明
- web.xml 中添加如下servlet
<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>com.mvc.ServletDispatcher</servlet-class> <init-param> <param-name>scanPackage</param-name> <!-- 项目的总包名,包含所有需要的类的包名 --> <param-value>com.jiabo.taskmanager</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
- 继承Application类。
- web.xml 中添加如下servlet
- 注解支持
@Autowired -- 自动填充 @Controller -- 类似spring mvc controller @PathVariable -- 类似spring mvc PathVariable @RequestMapping -- 路由映射 目前只支持路径映射 @ResponseBody -- 类似spring mvc ResponseBody @Service -- 类似spirng mvc Service
- 工具类支持
- BaseUtil
- getMethodParamsName
- ClassUtil
- getClasses
- PropertiesUtil
- isDevMode
- UploadUtil
- getFiles
- getFileName
- BaseUtil
- 接口支持
- Application
- 必须要实现的类,项目启动类
package com.mvc; import java.util.List; /** * the class for the detail application to implement. * * @author jialong * */ public abstract class Application { private ViewResolver viewResolver; private List<HandlerInterceptorAdapter> interceptor; /** * get application name * * @return name */ public abstract String getAppName(); /** * application init */ public abstract void start(); public List<HandlerInterceptorAdapter> getInterceptor() { return interceptor; } public void setInterceptor(List<HandlerInterceptorAdapter> interceptor) { this.interceptor = interceptor; } public ViewResolver getViewResolver() { return viewResolver; } public void setViewResolver(ViewResolver viewResolver) { this.viewResolver = viewResolver; } }
- 必须要实现的类,项目启动类
- ViewResolver
- 只需要一个实现类
package com.mvc; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * view resolver * @author jialong * */ public interface ViewResolver { /** * call the method when the application start * @param context */ void init(ServletContext context); /** * resolver the view * @param hreq * @param hres * @param path */ void resolve(HttpServletRequest hreq, HttpServletResponse hres, String path); }
- 只需要一个实现类
- HandlerInterceptorAdapter
- 实现该接口的类按照扫描到的顺序执行
-
package com.mvc; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Interceptor for this framework * @author jialong * */ public interface HandlerInterceptorAdapter { /** * call the method before controller * @param request * @param response */ void postHandle(HttpServletRequest request, HttpServletResponse response); /** * call the method after view resolver * @param request * @param response */ void afterHandle(HttpServletRequest request, HttpServletResponse response); }
- Application