博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的mint mvc
阅读量:5844 次
发布时间:2019-06-18

本文共 2644 字,大约阅读时间需要 8 分钟。

  hot3.png

2014年的更新:

  1. 取消@Param注解,mint可以直接冲方法中获取参数名
  2. 取消@Post 和 @Get注解,请求方法的定义放在@Mapping注解里: @Mapping(value = "/confirm/{name}/", method="post")
  3. url参数不再使用参数的索引,而是采用参数名字
  4. 取消对guice的依赖
  5. 加入从包扫描action的功能,扫描路劲在web.xml里配

项目来源

mint mvc 并不是我原创的。她的基础是廖雪峰老师的webwind mvc。

webwind是廖老师模仿spring的一个 rest 风格的 mvc 框架,功能简单,但是mvc的核心功能基本具备了,我觉得它的设计思想也很好,很适合想了解mvc的学习者。
我是在这里了解到webwind的:
我是在这里下载到webwind的:
因为我平时工作用到的都是php,而我擅长的是java,怕长时间不用生疏了,下班回宿舍就找些java项目练手,所以就拿webwind来练手了。

我的修改

我的修改包括:
  1. 改善了url参数的匹配方式,原来支持9个url参数(1-9),现在支持是个url参数(0-9)。修改之后主要带来两个好处。第一:支持url参数个数增多一个;第二:符合计算机的计数方式,代码中的很多数组不用做特殊的处理,简化了代码. 
  2. 对一些逻辑较复杂的类进行了拆分.
  3.  支持自动获取请求参数并封装到bean内,供action方法使用.目前支持的类型包括:数组类型,基础类型的包装类,普通model类(包含的属性暂时只支持基础类型及其包装类,而且必须有对应的setter方法).如果一个action方法包含了基础类型(非包装类),该方法就不是合法的action方法,这是为了避免反射调用action方法时基础类型参数不能被赋予null值得权宜之举. 
  4.  可以声明一个action方法只能处理特定方法的请求,目前只支持GET和POST方法. 

例子

web.xml配置:

dispatcher
mint.mvc.core.ServiceServlet
actionPackages
demo;demo.me
template
Jsp
0
dispatcher
/

一个典型action类如下:

package demo;import javax.servlet.http.HttpServletRequest;import mint.mvc.annotation.Mapping;import mint.mvc.core.ActionContext;@Mapping("/user")public class UserAction {    @Mapping("/login")    public String hello(String phone, User user) {        return "

Hello, " + phone + "

"; } @Mapping(value = "/confirm/{name}/", method="post") public void confirm(String name,User u, String[] hobby, User user){ System.out.println(name); if( hobby != null){ for(String s : hobby){ System.out.println(s); } } System.out.println("name:"+user.getUsername()); System.out.println("name:"+user.getPassword()); ActionContext context = ActionContext.getActionContext(); HttpServletRequest req = context.getHttpServletRequest(); System.out.println(req.getParameterMap()); //System.out.println("user的类加载器"+user.getClass().getClassLoader()); }}
对应jsp如下:
<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8"%>
Insert title here
名字:
密码:
电话:
爱好:
读书
音乐
游玩
夏天

一些原理图

url匹配的正则表达式:

Action类->action方法->方法参数的层次结构,是构造参数注射器(我造的一个名词ParameterInjector)的一个根据:

根据请求参数为action方法初始化参数的原理:

源码下载

转载于:https://my.oschina.net/cnlw/blog/192848

你可能感兴趣的文章
博客园的找找看
查看>>
Android Bitmap 加载与像素操作
查看>>
(剑指Offer)面试题4:替换空格
查看>>
公众平台手机版来临 微信公众平台推出手机版运营中心
查看>>
SQL SERVER2005事务日志已满 解决方法
查看>>
iOS开发-automaticallyAdjustsScrollViewInsets属性
查看>>
Hadoop2源码分析-YARN 的服务库和事件库
查看>>
Canvas 图片灰度
查看>>
C#+无unsafe的非托管大数组(large unmanaged array in c# without 'unsafe' keyword)
查看>>
(第一天)包装对象、作用域、创建对象
查看>>
Storm入门教程 第五章 一致性事务【转】
查看>>
OC本学习笔记Foundation框架NSString与NSMutableString
查看>>
【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...
查看>>
【2014 Multi-University Training Contest 2 1002】/【HDU 4873】 ZCC Loves Intersection
查看>>
相片Exif协议
查看>>
2015第18本:从0到1,ZERO to ONE, Notes on startups, or how to build the future
查看>>
How to hide TabPage from TabControl
查看>>
Android 屏幕适配方式
查看>>
时间戳转换成Date
查看>>
Java得到的一周的最后一天的一段时间内
查看>>