Atitit mvc框架的实现 目录 1.1. class MvcCtrol { 1 1.2. MvcFilter 1 1.3. MvcUtil 2 /springboothelloword/sr
Atitit mvc框架的实现
目录
/springboothelloword/src/springboothtml/MvcUtil.java
- class MvcCtrol {
@MyComponent
public class MvcCtrol {
// http://localhost:8080/mvctest
@MyMapping("/mvctest")
public String mvctestMeth(HttpServletRequest req) {
return "data";
}
}
- MvcFilter
@WebFilter(urlPatterns = "/*", filterName = "mvcFilter")
public class MvcFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) {
try {
// get url out mapper
Map<String, MethodObj> url_method_maps = MvcUtil.get_url_out_mapper();
HttpServletRequest httpServletRequest = (HttpServletRequest) arg0;
HttpServletResponse httpServletResponse = (HttpServletResponse) arg1;
String uri = httpServletRequest.getRequestURI();
System.out.println(uri);
if(url_method_maps.get(uri)==null)
{
arg2.doFilter(arg0, arg1);
return;
}
MethodObj MethodObj1= url_method_maps.get(uri);
Object classObj = ConstructorUtils.invokeConstructor(MethodObj1.classProp, null);
Method meth = MethodObj1.methodProp;
Object[] args =MvcUtil.getArgs(meth,arg0,arg1); //new Object[] {};
String r = (String) meth.invoke(classObj, args);
outputHtml(httpServletResponse, r);
return; //not to next ,beirs springmvc show err,cause cant this mappering
- MvcUtil
package springboothtml;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
public class MvcUtil {
public static Object[] getArgs(Method meth, ServletRequest arg0, ServletResponse arg1) {
List li=Lists.newArrayList();
Parameter[] Parameters_arr= meth.getParameters();
for (Parameter parameter : Parameters_arr) {
Class<?> type1 = parameter.getType();
if ( type1 ==HttpServletRequest.class)
{
li.add(arg0);
}
}
return li.toArray();
}
public static Map<String, MethodObj> get_url_out_mapper() {
Map<String, MethodObj> url_method_maps = Maps.newLinkedHashMap();
ClassListForeach(new Consumer<Class<?>>() {
@Override
public void accept(Class<?> cls) {
MyComponent MyComponentAnno = (MyComponent) cls.getAnnotation(MyComponent.class);
if (MyComponentAnno == null)
return;
// 获取一个类的注解,根据注解名
Method[] methds = cls.getMethods();
for (Method method : methds) {
MyMapping anno1 = (MyMapping) method.getAnnotation(MyMapping.class);
if (anno1 == null)
continue;
String uri_mapping = anno1.value();
MethodObj MethodObj1 = new MethodObj();
MethodObj1.classProp = cls;
MethodObj1.methodProp = method;
url_method_maps.put(uri_mapping, MethodObj1);
}
}
});
return url_method_maps;
}
private static void ClassListForeach(Consumer<Class<?>> consumer) {
List<Class<?>> li_allclass = Lists.newArrayList();
li_allclass.add(MvcCtrol.class);
for (Class class1 : li_allclass) {
consumer.accept(class1);
}
}
}
阅读更多
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结
- Atitit 技术学习 的方法总结 attilax总结 目录 1.1. 跨框架 1 1.2. 跨语言学习法 1 1.3. 概念学习法 1 1.1 在比较中学习 多语言 2 1 1.3 .2 在历史
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结v2
- Atitit 数据库与存储引擎设计与实现 attilax总结 1.1. 数据库的实现有很多种, 遵循一些理论规范,如 Fix Rules、Write-Ahead Log、Force-log-at-
- Atitit图片复制父目录给你设计的实现 基于win 图片浏览器
- Atitit 架构师之道 attilax著 1.1. 认和评估系统需求, 2 1.2. 给出开发规范 2 1.3. ,搭建系统实现的核心构架, 2 1.4. 扫清主要难点的技术人员 2 1.5. 核
- Atitit图片复制父目录给你设计的实现 基于win 图片浏览器
- Atitit Elasticsearch6之elasticsearch5.x 新特性 目录 1.1. 其实,elasticsearch5.x 和 elasticsearch2.x 并不区别很大。 1
- 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException v2 q31无涯 - I
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结
- Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx
- Atitit etl之道 attilax著 1. ETL 1 1.1. (数据仓库技术) 2 1.2. ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性
- Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结
- Atitit 软件 开发 与互联网发展趋势 与一些原则 潮流就是社区化 o2o 各种服务化 xaas ##--------信息化建设的理念 1.1.兼容性(不同版本与项目兼容性有利
- word 多级目录实现
- Java---注解、类加载器-加强-实现运行任意目录下class中加了@MyTest的空参方法
- Google Python Class 之——带参数的WordCount 实现
- Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
- atitit 研发管理 要不要自己做引擎自己实现架构?.docx