自己写一个java的mvc框架吧(一)】的更多相关文章

自己写一个mvc框架吧(五) 给框架添加注解的支持 一段废话 上一章本来是说这一章要写视图处理的部分,但是由于我在测试代码的时候需要频繁的修改配置文件,太麻烦了.所以这一章先把支持注解的功能加上,这样就不需要经常地修改配置文件了. 至于视图处理的地方,就还是先用json吧,找时间再写. 项目地址在:https://github.com/hjx601496320/aMvc . 测试代码在:https://github.com/hjx601496320/amvc-test . 怎么写呢? 因为在之前…
自己写一个mvc框架吧(四) 写一个请求的入口,以及初始化框架 上一章写了获取方法的入参,并根据入参的参数类型进行数据转换.这时候,我们已经具备了通过反射调用方法的一切必要条件.现在我们缺少一个http请求的入口,就是一个servlet.现在我们开始写吧- 在这一章我们要做的事情有 定义一个配置文件,用来描述什么样的请求映射到哪一个class的哪一个方法上面. 在servlet初始化后,根据上面定义的配置文件加载mvc框架. 在一个http请求进入后,根据其请求路径,找到相应的方法,获取参数,使…
自己写一个mvc框架吧(三) 根据Method获取参数并转换参数类型 上一篇我们将url与Method的映射创建完毕,并成功的将映射关系创建起来了.这一篇我们将根据Method的入参参数名称.参数类型来获取参数,并转换参数类型,使其能够符合Method的定义. 事先说明 因为这里只是一个mvc框架的简单实现,仅仅只做到了基本数据类型和基本数据类型包装类的转换,没有做到spring那样的很复杂的数据绑定功能.所以我在代码上面加了比较强的校验. 现在开始写吧 我们从一次http请求中获取参数的时候,…
自己写一个mvc框架吧(二) 自己写代码的习惯 写一个框架吧,如果这个框架会用到一些配置上的东西,我自己习惯是先不用考虑这个配置文件应该是怎样的,什么形式的,先用一个java对象(比如叫 Config.java) 都给放进去.等到功能写的差不多了,需要考虑到使用配置文件了,就可以写一个工厂类,根据不同的配置(可能是xml,可能是json,甚至是注解)把刚才说的 Config.java 对象生成出来. 现在开始写- 我们先写URL与Method的映射关系 装模做样的分析一下 因为一个mvc的框架个…
自己写一个mvc框架吧(一) 目录 自己写一个mvc框架吧(一) 自己写一个mvc框架吧(二) 自己写一个mvc框架吧(三) 自己写一个mvc框架吧(四) 写之前的一些废话 废话 1 (总是要先随便说点啥) 写了好几年的java程序,基本上每个项目都有用到mvc的框架,可能是spring mvc也可能是struts.这些框架怎么用相信大家也都很熟悉了,但是有没有想过自己写一个属于自己的mvc的框架呢?有没有想过为啥你请求一个http的地址,你的一个class里的方法就能被执行了呢?现在咱们开始写…
一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司的前台小姐,她负责带你(请求)找到跟你面试的面试官(控制器Controller),面试官可能会面试不同的职位(Action),你(请求)也会拿到不同的结果(ActionResult): 二.开始DEMO:单一处理程序入口 2.1 创建一个空白Web程序,移除所有默认引用 无论是ASP.NET Web…
一.ASP.NET MVC核心机制回顾 在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件. 在这个System.Web.Routing.dll中,有一个最重要的类叫做UrlRoutingModule,它是一个实现了IHttpModule接口的类,在请求处理管道中专门针对ASP.NET MVC请求进行处理.首先,我们要了解一下UrlRoutingModule是如何起作用的. (1)IIS网站的配置可以分为两个块:…
当初看了<从零开始写一个Java Web框架>,也跟着写了一遍,但当时学艺不精,真正进脑子里的并不是很多,作者将依赖注入框架和MVC框架写在一起也给我造成了不小的困扰.最近刚好看了一遍springMVC的官方文档,对过去一段时间的使用做了一下总结,总结了一些MVC的使用需求,打算自己开坑写一个MVC框架,虽然是重复造轮子的过程,但也是学习提高的过程. 1.我们可能需要一个什么样的MVC框架 (1)用户一:我讨厌配置文件,最好能用注解的全用注解注解,能扫描直接扫描 (2)用户二:最好我导入一个j…
Summer--从头开始写一个简易的Spring框架                ​ 参考Spring框架实现一个简易类似的Java框架.计划陆续实现IOC.AOP.以及数据访问模块和事务控制模块.项目持续维护中...欢迎Star!Thanks~~~ ​ 本项目参考自Spring,但又做出了自己的创新,最大的创新点在于解决循环依赖的问题,引入了自己的解决方案,具体方法可以参考更新日志中Version 0.5(Pre-release)的更新记录. 项目计划: [x] IOC容器 [x] AOP切…
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI(Web Server Gateway Interface)定义了Web服务器与Web应用(或Web框架)之间的标准接口.在WSGI的规范下,各种各样的Web服务器和Web框架都可以很好的交互. 由于WSGI的存在,用Python写一个简单的Web框架也变得非常容易.然而,同很多其他的强大软件一样,要…
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口.代理内容,生成代理. 抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既加深了对于这些类的理解.提升了自己的写代码水平,也可以在写完之后对比一下自己的实现有哪些写得不好…
go server框架学习之路 - 写一个自己的go框架 用简单的代码实现一个go框架 代码地址: https://github.com/cw731/gcw 1 创建一个简单的框架 代码 package https import "net/http" // 创建自己的引擎 type Engine struct { } // 实现engine的ServeHTTP 有了这个方法 engine就属于一个http的handle了 func (e *Engine)ServeHTTP(w http…
动手写一个简单的Web框架(模板渲染) 在百度上搜索jinja2,显示的大部分内容都是jinja2的渲染语法,这个不是Web框架需要做的事,最终,居然在Werkzeug的官方文档里找到模板渲染的代码. 关于模板渲染即render_template,简单实现代码其实只有几行,下面是我的代码: def render_template(path, template, **kwargs): # 获取模板文件夹位置 template_path = os.path.join(path, 'templates…
动手写一个简单的Web框架(Werkzeug路由问题) 继承上一篇博客,实现了HelloWorld,但是这并不是一个Web框架,只是自己手写的一个程序,别人是无法通过自己定义路由和返回文本,来使用的,所以在这篇博客中,将实现一个简单的路由自定义功能 首先引入werkzeug中的两个工具,分别是Map,和Rule,需要通过以下代码引入 from werkzeug.routing import Map, Rule 这两个可以完成路由定义和匹配的基本实现,其次,还引入到werkzeug中的Reques…
动手写一个简单的Web框架(HelloWorld的实现) 关于python的wsgi问题可以看这篇博客 我就不具体阐述了,简单来说,wsgi标准需要我们提供一个可以被调用的python程序,可以实函数或者是类,他需要接受两个参数environ(WSGI 的环境信息) 和 start_response(开始响应请求的函数),并且返回可以被迭代 environ是一个字典,我用print打印出来可以看到里面存储着关于请求的各种信息 start_response:一个发送HTTP响应的函数,接受两个参数…
1. 介绍 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 我们今天就来搭建一个自己的从URL访问到JAVA控制器的简单框架. 附加:在我的 github上有…
本文内容 涞源于  罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ; 本文将介绍 1: 网络爬虫的是做什么的?  2: 手动写一个简单的网络爬虫; 1: 网络爬虫是做什么的?  他的主要工作就是 跟据指定的url地址 去发送请求,获得响应, 然后解析响应 , 一方面从响应中查找出要查找的数据,另一方面从响应中在解析出新的URL路径, 然后继续访问,继续解析;查找需要的数据和继续解析出新的URL路径  . 这就是网络爬虫主要干的工作.  下面是流程图: 通过上面的流程图 能…
写之前的说明 其实吧. 这个东西已经写好了,地址在:https://github.com/hjx601496320/JdbcPlus 这系列文章算是我写的过程的总结吧.(恩系列,说明我可能会写好久,╮(╯▽╰)╭) 现在有很多的现成的orm框架,为什么还要自己写一个? 框架这种东西个人认为想要了解其中的原理,还是要自己尝试实现一个来的比较快.我是那种不爱看源码的程序员,除非是有些地方实在没有思路或者网上也找不到相关的文章,否则是不会去看源码的.懒--~ 写这个的目的是什么? 现在流行的orm比如…
生成sql:where 上一篇里我们实现了生成insert的sql,下面要开始实现update,delete,select的sql语句了.但是这些语句有一个比较麻烦的地方是:它们一般后面都会有where条件,因为在执行的时候不能把表里所有的数据都进行操作. 所以这里我们需要先生成条件的sql.大概是这样的: WHERE id = ? AND name != ? OR age >= ? where 后面的参数继续用 "?" 代替.值就放在一个有序的集合中就好了.类似上一篇提到的in…
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境. 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的. 那么两者到底有什么区别呢? 在部署方式上: 热部署是在服务器运行时重新部署项目. 热加载是在运行时重新加载 class. 在实现原理上: 热部署是直接重新…
` 创建一个Hello.java文件使用记事本打开 public class Hello{ public static void main(String [] args){ System.out.println("hello world"); } } ` 在文件所在目录使用cmd命令行工具 javac *.java 编译刚才写的Hello.java 编译完成后产生了一个Hello.class文件,然后使用java Hello运行即可在命令行看到输出的hello world(大前提是配置…
到眼下位置.afinal开发框架也是用了好几个月了,还记得第一次使用凝视完毕控件的初始化和事件绑定的时候,当时的心情是多么的兴奋- -代码居然能够这样写!然后随着不断的学习,也慢慢的对IOC框架和注解反射等东西有了一点简单的了解.之前的一篇文章简单的介绍了一下Java的反射机制.今天的文章.就完毕一个简单的,基于IOC的小Demo.让大家慢慢的对IOC有一点简单的了解. 首先.什么是IOC呢? 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来…
在.Net中有两种常用的Web开发方式,一种是Asp.Net WebForm,另一种是Asp.Net MVC.我先简单的给大家介绍下这两种开发方式的特点,然后再应用自定义脚本映射,反射,json2template.js,htm等技术演示一个纯静态的Web框架. Asp.Net WebForm 在Asp.Net WebForm中,请求大都以.aspx为后缀,那么.Net是如何处理.aspx请求呢? 打开.Net的配置文件, .Net4.0配置文件地址(64位):C:\Windows\Microso…
用IDEA Intellij,本来创建的是SpringMVC项目,但是下载的时候,太慢了.所以还是用的Maven项目. 选择Maven 项目->Archetype->Web application. 本来需要增加参数-DarchetypeCatalog=internal, 但是发现也不用了,应该是已经下载了. 首先将webapp->WEBINF->web.xml,改一下: <?xml version="1.0" encoding="UTF-8&q…
spring对于java程序员来说,无疑就是吃饭到筷子.在每次编程工作到时候,我们几乎都离不开它,相信无论过去,还是现在或是未来到一段时间,它仍会扮演着重要到角色.自己对spring有一定的自我见解,所以参考网上的视频和文章,整理出一套简单的SpirngMVC. 项目地址先贴出来,接下来大概讲下流程. 手写简单的SpringMvc框架. 主要分为几个步骤: 1. 扫描包下面的文件. 2. 根据扫描到到文件,初始化bean工厂. 3. 根据@Controller @RequestMapping 注…
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! fast-framework 轻量级 Java Web 框架 – https://github.com/JeffLi1993/fast-framework 基于 JDK 8 规范 基于 Servlet 3.0 规范 零配置 REST 服务接口 基于 JSON 传输 目前提供 MVC … 解决方案 一.作者与学习乐园 源码地址:我的GitHub地址作者: 李强强 也叫 泥瓦匠QQ群:编程之美 3…
1.@Action注解声明 package com.togogo.webtoservice.annotations; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotatio…
环境准备 >>>>>>java JDK和tomcat,eclipse 1.创建项目 2.项目名称自定义,这边为demo 3.我们已经创建完一个动态网站的项目,还得下载Spring MVC相关的jar包,Spring MVC有很多版本,下面提供的是3.2.8的版本,如果需要其他不同版本,自行网上搜索下载,或者到官网 http://projects.spring.io/spring-framework/ http://repo.springsource.org/libs-r…
生成sql:select 上一篇讲了怎样生成一个sql中where的一部分,之后我们要做事情就简单很多了,就只要像最开始一样的生成各种sql语句就好了,之后只要再加上我们需要的条件,一个完整的sql就顺利的做好了. 现在我们开始写生成查询语句的sql.一个查询语句大致上是这样的: SELECT name, id, create_date, age, mark, status FROM user 这里可以看出来,一个基础的查询语句基本上就是一个 SELECT 后面加上需要查询的字段,跟上 FROM…
使用反射解析class 上一篇我们完成了class到表映射关系的建立,但是这个并不能被代码正确处理,我们还需要让程序能够正确的识别这些映射关系. 这一篇主要讲的是建立一个从class到表的模型,使我们在class上添加的注解能够正确的被识别并处理.这里主要用到的是java中的反射相关的知识.不了解的同学请自行百度一下,不是很难-,另外这一篇也会稍微的提到一点反射的用法. 现在开始. 我们主要的需求是根绝我们添加的注解,生成各种类型的sql语句,所以我们首先要能够获取添加在java类名,属性,方法…