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框架吗!

名字:

个人主页地址:

E-mail:

评论列表