Jexus web server既支持ASP.NET,也支持URL Rewrite,是一款跨平台的WEB服务器程序。利用Jexus强大的URL重写功能,无需ASP.NET MVC 框架就能轻松实现非常标准的MVC功能,而且更简捷、更自由。示例如下:假设:
地址“http://xxx.xx/m/”是访问首页
地址“http://xxx.xx/m/list”是访问商品列表页
地址“http://xxx.xx/m/list/car”是访问列表页中car这个子项目物理路径:本例中所有文件放在网站根目录的mvc文件夹中。具体实现过程如下:
一、配置网站
在site.conf配置文件的某个子站(设站名为abc)中添加:
#首页的“路由”
abc.rewrite=^/m/$ /mvc/index.aspx#MVC“标准”路径的路由(全部指向/mvc/controller.aspx)
abc.rewrite=^/m/([\-/0-9a-zA-Z]{3,100}[^/])$ /mvc/controller.aspx?url=$1#图片等静态文件的“路由”
abc.rewrite=^/m/images/(.+?)$ /mvc/images/$1
abc.rewrite=^/m/(.+?)/images/(.+?)$ /mvc/images/$2二、“控制器”设计
文件名为:controller.aspx(当然也可以是其它文件名,只要与URL Rewrite所定义的文件名相同就行),放到mvc文件夹中
文件内容如下:
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%
    //分解MVC RUL路径
    string urlPath = Request.QueryString["url"];
    if (String.IsNullOrEmpty(urlPath) || urlPath == "")
    {
        Response.Write("Url Error!");
        Response.End();
    }
    string[] workList = urlPath.Split(new char[] { '/' });    //根据URL路径的实际内容,执行对应的操作
    if (workList.Length == 1)
    {
        switch (workList[0].ToLower())
        {
            case "list":
                Server.Execute("list.aspx");
                break;            default:
                Server.Execute("index.aspx");
                break;
        }
    }    if (workList.Length == 2)
    {
        string work = workList[0].ToLower();
        string qString = workList[1];        switch (work)
        { 
            case "list": // 如:/list/car
                Server.Execute("list.aspx?id=" + qString);
                break;
                
            /*.......*/
                
            default: //其它的
                Server.Execute("index.aspx");
                break;
        
        }    }
    
    Response.End();
    
%>三、针对“控制器”的中自定义的内容,建立“index.aspx”和“list.aspx”,全部放到mvc目录中。
index.aspx文件内容如下:
<%@ Page Language="C#" %>
<html><head>
<meta http-equiv="Content-Language" content="zh-cn" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>首页</title>
</head><body><p>这是首页</p>
<hr />
<p><a target="_blank" href="list">列表页</a></p>
<p><a target="_blank" href="list/car">列表页加参数</a></p></body></html>list.aspx文件内容如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web" %>
<html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>列表页</title>
</head><body>
<p>这是列表页</p>
<hr />
<p>
<%
    string q = Request.QueryString["id"];
    Response.Write("得到的参数是:" + q);
%>
</p>
</body></html>重启jexus,访问一下,试试。
怎么样,的的确确是非常标准的MVC吧,而且,在设计上一点难度也没有,还有比它更简单更自由的MVC框架吗!用Jexus实现MVC的最大优点如下:
1,对ASP.NET版本没有特殊要求,asp.net 1.1/2.0/3.0/3.5都可以用;
2,无需安装和学习asp.net mvc框架,不必改变asp.net编程习惯;
3,已经设计好的asp.net网站,仅需加一个“控制器”就基本上可以实现MVC格式的访问,除了对超链接等等内容作一些小的修改之外,根本不需要重新设计整个网站;
4,不用MVC名字空间和与之相关的程序集,MVC路由等功能在web服务器层面直接实现,因此,这种MVC实现方式较之其它实现方式的执行效率更高。
5,可以在网站设置中禁止用户访问真实的网站路径;
6,设计非常自由,布置非常灵活。注:Jexus下载地址:linux.j66.net 或 www.j66.net

解决方案 »

  1.   

    补充一点,以上示例,在linux和windows系统都已测试通过。
      

  2.   

    这个需要安装第三方软件包我觉得没有直接用Microsoft IIS7的扩展包好有一个就是URL重写的 扩展组件很好用
    可以访问 http://www.microsoft.com/web 瞅瞅
      

  3.   

    http://www.iis.net/extensions/URLRewrite
      

  4.   

    欢迎各位加入ASP.NET MVC框架超级群!让我们共同学习、进步!QQ群号:40985466 非常乐意为大家提供一个良好的交流平台!