当前位置: 首页 > news >正文

我的java mvc

mint mvc 并不是我原创的。她的基础是廖雪峰老师的webwind mvc。 webwind是廖老师模仿spring的一个 rest 风格的 mvc 框架,功能简单,但是mvc的核心功能基本具备了,我觉得它的设计思想也很好,很适合想了解mvc的学习者。我在他的基础上做了如下修改:
1、改善了url参数的匹配方式,原来支持9个url参数(1-9),现在支持是个url参数(0-9)。修改之后主要带来两个好处。第一:支持url参数个数增多一个;第二:符合计算机的计数方式,代码中的很多数组不用做特殊的处理,简化了代码. 
2、对一些逻辑较复杂的类进行了拆分.
3、支持自动获取请求参数并封装到bean内,供action方法使用.目前支持的类型包括:数组类型,基础类型的包装类,普通model类(包含的属性暂时只支持基础类型及其包装类,而且必须有对应的setter方法).如果一个action方法包含了基础类型(非包装类),该方法就不是合法的action方法,这是为了避免反射调用action方法时基础类型参数不能被赋予null值得权宜之举. 
 4、可以声明一个action方法只能处理特定方法的请求,目前只支持GET和POST方法. 
​1. [代码]一个典型action类如下     

package demo;
import annotation.Get;
import annotation.Mapping;
import annotation.Param;
import annotation.Post;
 
@Mapping("/user")
public class UserAction {
    @Mapping("/login")
    public String hello(@Param("phone") String phone,@Param("user")User user) {
        return "<h1>Hello, " + phone + "</h1>";
    }
     
    @Get
    @Mapping("/register")
    public String register(Integer a){
        return "<h1></h1>";
    }
     
    @Post
    @Mapping("/confirm/$0")/*$+paramindex*/
    public void confirm(String name, @Param("hobby")String[] hobby, @Param("user")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());
    }
}

​2. [代码]confirm方法对应的html页面如下     
<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8"%>
<!DOCTYPE html>http://www.5idesk.com/s/lol/​
<html>
<head>
<meta charset="utf8"/>
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="css/index.css" media="screen" />
</head>
<body>
    <form action='user/confirm/lw' method="post">
        名字:<input name="user.username" type="text" value=""/><br/>
        密码:<input name="user.password" type="text" value=""/><br/>
        电话:<input name="phone" type="text" value="梁威的电话"/><br/>
         
        爱好:<br/>
        读书<input name="hobby" type="checkbox" value="读书"/>
        音乐<input name="hobby" type="checkbox" value="音乐"/>
        游玩<input name="hobby" type="checkbox" value="游玩"/>
        夏天<input name="hobby" type="checkbox" value="夏天"/>
         
        <button type="submit">登陆</button>
    </form>
</body>
</html>

转载于:https://www.cnblogs.com/xkzy/p/4483153.html

相关文章:

  • 项目管理学习笔记三:项目管理一般知识
  • Markdown——入门指南
  • 项目管理学习笔记四:项目立项管理
  • 项目管理学习笔记五:项目整体管理
  • Extreme Learning Machine(ELM)的工程哲学
  • C++ VS C#(2):字符串,命名空间
  • URAL 2032 - Conspiracy Theory and Rebranding【本源勾股数组】
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之89——BREW中的测试工具...
  • uva 571 素数的性质
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之90——BREW中的调试信息...
  • C++中static用法
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之90——BREW中的日志接口功能...
  • cmd 控制台 提示:请求的操作须要提升!
  • eclipse-ADT安装失败经验
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之91——BREW手机中的调试模式...
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • egg(89)--egg之redis的发布和订阅
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java 网络编程(2):UDP 的使用
  • MySQL QA
  • PHP的Ev教程三(Periodic watcher)
  • QQ浏览器x5内核的兼容性问题
  • rc-form之最单纯情况
  • Swoft 源码剖析 - 代码自动更新机制
  • windows-nginx-https-本地配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 异常机制详解
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • nb
  • postgresql行列转换函数
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #AngularJS#$sce.trustAsResourceUrl
  • %check_box% in rails :coditions={:has_many , :through}
  • (2)STM32单片机上位机
  • (4)Elastix图像配准:3D图像
  • (poj1.2.1)1970(筛选法模拟)
  • (rabbitmq的高级特性)消息可靠性
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (蓝桥杯每日一题)love
  • (篇九)MySQL常用内置函数
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)甲方乙方——赵民谈找工作
  • (转)视频码率,帧率和分辨率的联系与区别
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net 4.0发布后不能正常显示图片问题
  • .NET 设计模式初探
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @DataRedisTest测试redis从未如此丝滑
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @SentinelResource详解