前两天写了几个注解和处理器的 Dmoe,然后发现可以写一个小框架。感觉 Springmvc 比较合适,之前也看过部分源码,然后就动手搞了一个。
代码没有抽取,设计也是一塌糊涂(比较菜,不会设计),代码不优雅。
实现了几个核心功能:注解式声明控制类,简单的数据绑定,返回 jsosn,支持使用 model 传递数据,Resultf 风格的跳转和重定向(准备添加文件上传功能)。
如果有志之士可以 fork 一份 添加功能,修复 bug。这里谢过了!
1,首先初始化的时候扫描指定的包,然后扫描类上的注解,生成一个 map。把注解上的值为 key,Java 类的全定限名为 value。
2,扫描方法上面的映射,维护映射 map,把 mapping 注解的值为 key,执行的方法为 value。初始化完成!
3,然后根据核心 servlet 去分发请求,然后解析返回字符串,进行跳转或者是重定向。
具体的思路就是这样
如果有志之士可以 fork 一份 添加功能,修复 bug.
留个邮箱,用于交流 [email protected] !不是广告!!!
首先在 action 类添加 @Action 注解,在方法添加 @Mapping 注解.
@Action("/index")
public class Controller {
@Mapping(value="/hello",RequestType=Type.get)
public String sayHello(Model model){
model.setParameter("root", "Hello");
return "welcome";
}
}
它会跳转到 /WEB-INF/jsp 下的 welcome.jsp(这里我写死的,前缀 /WEB-INF/jsp.后缀.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${root }
</body>
</html>
然后在项目的 web.xml 文件添加核心 servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>main</servlet-name>
<servlet-class>cn.xiuyu.servlet.MainServlet</servlet-class>
<!-- 设置最先启动保证初始化 -->
<load-on-startup>1</load-on-startup>
<init-param>
<!-- 自定扫描的包 -->
<param-name>package</param-name>
<param-value>cn.xiuyu</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
然后访问地址: http:localhost:8080/${项目名}/index/hello
更新一下,感谢评论同学提的意见,确实有几个错别字,demo
,json
,Result
。
添加了文件上传(目前仅支持单文件),上传过程可以通过接受json来获取上传状态。
github添加了 框架使用说明。
1
misaka19000 2017-06-19 19:15:57 +08:00
赞一个👍
|
2
0915240 2017-06-19 19:34:25 +08:00
赞一个。
以前准备撸一个 netty http router 的,不知道 url 地址匹配是怎么处理的,看了下 springmvc 中用的 antPattern,,还有有些 go web framwork 用的树结构,然后就弃了。 |
3
Sharuru 2017-06-19 19:34:43 +08:00 via Android
看到的只有满眼错别字...
|
5
redtea 2017-06-19 21:20:16 +08:00
造轮子
|
7
chenuu 2017-06-20 07:39:46 +08:00 via Android 1
@0915240 你可以参考下 GitHub 上我项目,bay1ts/bay。netty 撸的。有你需要的。我参考了 spark 和 be E go,spring MVC。设计不是很好
|
8
leaybc 2017-06-20 09:36:42 +08:00 1
所以... 你的 Dmoe ? jsosn ? Resultf ? 是啥玩意....
|
9
wyntergreg 2017-06-20 11:47:04 +08:00
@leaybc 手动喷血
|
10
gexyuzz OP @wyntergreg 小事小事。认真分析了一下原因,可能是输入法暂时性失忆。
|