mvc

逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎

♀尐吖头ヾ 提交于 2020-04-18 08:32:57
更多背景参看 前传: Razor视图引擎浅析 后续: eLiteWeb框架MVC(Model-View-Command) 机制解析 为什么要这么做? 1. Asp.Net MVC 其实也不是太好 2. 我有自己的敏捷Web框架, 仍然想用Razor引擎 3. 动态编译很有意思,这也是将来的一个趋势,如果有人有兴趣,我倒是很想写写这方面的内容. 可是也有这些想法的人并不多,找来找去,这方面的资料和论述极其之少。与其临渊羡鱼,不如退而结网。自己动手,丰衣足食。 如Razor引擎浅析所述,Razor的两大主要功能,模板文件和动态编译器。我们能不能单纯就要而且只要这俩主要特性? 其它那些智能查找视图文件等,虽不能说是垃圾,也是束缚手脚的条条框框,我完全可以自己做,失去的是一条绳索,获得是整个世界。 保持模板功能,特别是设计时智能语法支持,很简单,创建项目时选择MVC项目,然后把其它MVC相关的引用删掉只剩下Razor就好了。 编译? 你根本就找不到这一段代码,被淹没在大量的辅助代码中。幸好,我这里已经找到了,简化修改之后,就剩下了了几行,你就可以直接使用在甚至不必是Web项目中。 (本文版权属于© 2012 - 2013 予沁安 | 转载请注明作者和出处 WangHaoBlog.com ) 首先, 用到的Razor域名空间。 using System.Web.Razor; using

maven搭建 springmvc+mybatis应用

余生颓废 提交于 2020-04-15 17:47:00
【推荐阅读】微服务还能火多久?>>> 最近研究maven,故而用maven搭建了springmvc+mybatis框架来实践一下,如有不足之处,望指正。 下面开始讲解,本人视读者已经掌握maven的使用或者队maven有一定的了解,如果不了解maven,请查看 小菜鸟的博客---maven详解 。 本文用的spring是 4.0.5.RELEASE版,日志框架用的是logback 1.1.2,数据库连接池用的是c3p0 0.9.1.2,mybatis 用的是 3.2.7。所用技术基本都是最新版本。多说一句,本文 mybatis-spring桥用的是mybatis提供的mybatis-spring,当然你也可以用spring orm配合mybatis使用,但是没有用mybatis提供的简单,这里不再赘述。 首先创建一个maven project,编写pom文件,将对应的jar包引用进来。编辑后的pom如下: Xml代码 < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache

spring3mvc集成velocity

青春壹個敷衍的年華 提交于 2020-04-10 16:49:19
1、导入velocity库 访问Velocity位于 http://jakarta.apache.org/velocity 的主页,到官网下载velocity库,解压后将里面的 velocity-1.7.jar拷贝到sping项目工程里面的web库里,另外,由于velocity还用到两个依赖库commons-collections-3.2.1.jar和commons-lang-2.4.jar,这两个在velocity下载包的lib里面有,将这两个也放在web项目环境即WEB-INF/lib/下; 2、 配置Velocity引擎 首先需要配置的是Velocity引擎自己。要做到这点,可以通过以下方式在Spring配置文件中声明一个VelocityConfigurer Bean: <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath"> <value>WEB-INF/velocity/</value> </property> </bean> 3、 解析Velocity视图 要使用Velocity模板视图,你必须做的最后一件事情是配置一个视图解析器。具体地说

joomla mvc架构, 原理

走远了吗. 提交于 2020-04-07 12:29:47
component基本结构与访问方式 如访问:http://example.com/index.php?option=com_ helloworld Joomla将定位到:/components/com_ helloworld ,并且加载里面的 helloworld .php helloworld .php的工作就是加载相应的 controller ,继而调用相应的 view 含view, task的访问方式 如访问:http://domain.com/index.php?option= com_helloworld &view= helloworld &task= display &layout= default joomla将定位到:看下面标红的,其实是先定位到 helloworld .php,然后调实例化 HelloWorldController,并调用指定的task方法,此处为display,在display里再去实例化 HelloWorldViewHelloWorld 类,继而调用其display方法。所以此处可以说直接定位到 components/com_helloworld/views/helloworld/view.html.php 注意这里的view和task不是必须的,但按以下默认规则: task 默认值:display 通过

ASP.NET MVC 5 -从控制器访问数据模型

≡放荡痞女 提交于 2020-04-07 06:01:57
在本节中,您将创建一个新的 MoviesController 类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。 在开始下一步前,先Build一下应用程序( 生成应用程序) (确保应用程序编译没有问题) 在 解决方案 上,用鼠标右键单击Controller文件夹,点击 新增 ,再选择 Controller 。 在 Scaffold 新增 对话框,选择 MVC 5 Controller with views, using Entity Framework , 点击 新增。 ・ 控制器(Controller)名称输入: MoviesController . ・ 模型类(Model class)选择: Movie (MvcMovie.Models) . ・ 数据上下文类(Data context class)选择: MovieDBContext (MvcMovie.Models) 下图显示了完成的对话框。 单击 添加( 如果你得到一个错误,则很可能 增加控制器前 ,没有生成该应用程序)。Visual Studio Express 会创建以下文件和文件夹: ・ 项目控制器文件夹中的 MoviesController.cs 文件。 ・ 项目视图文件夹下的 Movie文件夹。 ・ 在新的Views\Movies 文件夹中创建Create

ASP.NET MVC HtmlHelper如何扩展

為{幸葍}努か 提交于 2020-03-18 13:47:18
某厂面试归来,发现自己落伍了!>>> 一、ASP.NET 扩展方法三要素 (1)、静态类 可以从下图看出,InputExtension首先是一个静态类; (2)、静态方法 既然是静态类,那么其所有的方法必然都是静态方法,例如:public static MvcHtmlString CheckBox(); (3)、this关键字 可以从方法名定义中看出,第一个参数都是this HtmlHelper htmlHelper,代表对HtmlHelper类的扩展; 二、简单实例 扩展Submit using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace TestMvcHelper { public static class HtmlExtensions { public static MvcHtmlString Submit(this HtmlHelper helper, string value) { var builder = new TagBuilder("input"); //使我们创建的标签名字设为input builder.MergeAttribute("type", "submit"); //添加属性

Getting started with MVC(6)

我的未来我决定 提交于 2020-03-11 13:26:24
MVC and CDI In before posts, we have already use@Injectto inject bean into the Controller class. In fact, MVC embraced CDI internally. RedirectScoped There is a new CDI compatible scope namedRedirectScopedintroduced in MVC 1.0. A bean annotated with@RedirectScopedannotation can be transfered between two requests, conceptly, it is similar with JSF Flash. TheAlertMessageis an example. Declare a bean with@RedirectScopedannotation. @RedirectScoped @Named("flashMessage") public class AlertMessage implements Serializable {} Inject it into a Controller class. @Inject AlertMessage flashMessage; Access

JEE6 CDI 扩展实现 MVC (一)

自作多情 提交于 2020-03-11 13:16:19
就目前来说,CDI 基本还是和 JSF 结合使用的比较多,CDI 的扩展能力非常的出色,Seam3 就是完全基于 weld 的。当然我们也可以扩展 CDI 实现和 Spring MVC, .Net MVC 差不多的功能结合 JSP 一起使用。这里我是看到了老外的这篇 文章 ,然后对其已经实现的MVC功能做了一些扩展,添加了页面像 Controller 传值的功能,后面我还准备尝试添加表单实体的提交,还有 Controller 返回 JSon,Freemarker 等一些功能,这些功能都是借鉴于 RestEasy 。 对于MVC,我就不去介绍了,网上有很多。 添加 MVC 注解 JDK5 以后新增了自定义注解的功能,我们先为MVC添加好需要的一些注解,在 CDI 中的限定词都是通过扩展注解来做的。基本取消了配置文件用注解来代替,Spring 3 MVC 也是。下面是目前我们使用到的几个注解。 添加 @Controller 注解,这个注解表示这个类为 MVC 中的 Controller。 @Target({ ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Controller { } 添加 @RequestMapping 注解,它有两个参数

JEE6 CDI 扩展实现 MVC (三) 支持返回String,JSon,Freemarker

无人久伴 提交于 2020-03-11 13:15:19
前面我们实现了 MVC 的最基本的功能,视图跳转以及基本数据的传递。这部分我们对 Controller 的返回值进行扩展,支持返回 字符串, JSon 以及 对Freemarker模板引擎的支持。 添加注解 @ ResponseBody 当Controller的方法 ResponseBody 注解的时候说明放回的值既是为 String 的话,也不是跳转到View。它的 value 为 ResponseType 枚举,用来表示 Response 返回内容的类型。 @ResponseTemplate 表示Controller方法返回时调用模板引擎来返回静态页面。他的value的值为模板页面的路径,type值表示为哪一种模板引擎。 当然,为了方便处理,一个Controller 方法不能同时拥有 这两个注解。 @Target({ ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface ResponseBody { ResponseType value(); } @Qualifier @Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy

ASP.NET MVC 5-开始MVC5之旅

霸气de小男生 提交于 2020-03-07 19:29:57
本教程将使用 Visual Studio 2013 手把手教你构建一个入门的ASP.NET MVC5 Web应用程序。本教程配套的C#源码工程可通过如下网址下载: C#版本源码链接 。同时,请查阅 Building the Chapter Downloads 来完成编译源码和配置数据库。 在本教程中的源码工程,您可在Visual Studio中运行MVC 5应用程序。您也可以使Web应用程序部署到一个托管服务提供商上。微软提供免费的网络托管多达10个网站, free Windows Azure trial account 。本教程由Scott Guthrie (twitter @scottgu ), Scott Hanselman (twitter: @shanselman ), and Rick Anderson ( @RickAndMSFT )共同写作完成,由葡萄城控件团队翻译(新浪微博 @ 葡萄城控件 )。 入门 运行 Visual Studio Express 2013 for Web 或 Visual Studio 2013 开始这个实例。 Visual Studio是一个IDE集成开发环境。就像您使用Microsoft Word来编写文档,你可以使用集成开发环境(IDE)来创建一个应用程序。在Visual Studio中的一个顶部工具栏中显示了各种不同的选项来供您使用