|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。asp.net|正则突然发明ASP.NET2.0自己就供应了对UrlMapping的自然撑持--web.config文件中的<urlMappings>节,叹息如今写程序真的不是甚么手艺活了。
<?xmlversion="1.0"?>
<configuration>
<system.web>
<urlMappings>
<addurl="~/2006/07"mappedUrl="~/Month.aspx?year=2006&month=01"/>
<addurl="~/2006/08"mappedUrl="~/Month.aspx?year=2006&month=02"/>
</urlMappings>
<compilationdebug="true"/>
</system.web>
</configuration>
这个设置可使ASP.NET程序在ASP.NETDevelopmentServer(就是建ASP.NET项目时选文件体系)间接撑持UrlMapping,不外它有几个不敷的地方:
1、只能映照流动的地点,以是只能一个地点一个地点的设置
2、ASP.NETDevelopmentServer中能够不必配甚么其余中央,在IIS中受哀求呼应模子所限,估量仍是要在IIS中设映照。如许的话,反而弄得我各处找材料,看怎样完成在ASP.NETDevelopmentServer设置映照,失掉的了局是不可。
针关于UrlMapping的不撑持正则表达式的缺点,我做了个撑持正则表达式的UrlMapping,惋惜因为UrlMapping是由HttpApplication挪用的,而HttpApplication是Internal的,不克不及对它做甚么举措,以是完成的东东和UrlMapping比拟做在Web.config中多做个<Section>
文件下载
(下载文件中包含RegexUrlMapping组件和一个示例ASP.NET,注重ASP.NET程序需部署在IIS中,而且要设置映照,办法是右击假造目次,选属性,选设置,在通配符使用程序映照中增加c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll的援用,并往失落确认文件是不是存在的钩,这里是为了偷懒才用通配符全体映照到ASP.NET2.0的ISAPI,实践开辟中最好酌情增加详细一点的映照)
Web.config中的设置举比方下:
<?xmlversion="1.0"?>
<configuration>
<configSections>
<sectionname="RegexUrlMappings"type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configSections>
<RegexUrlMappingsenabled="true"rebaseClientPath="true">
<addurl="(d+)$"mappedUrl="default.aspx?id=$1"/>
<addurl="(?<=/)(?<id>[a-z]+)$"mappedUrl="default.aspx?id=${id}"/>
<addurl="/$"mappedUrl="/default.aspx?id=0"/>
</RegexUrlMappings>
<system.web>
<httpModules>
<addname="RegexUrlMappingModule"type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpModules>
<compilationdebug="true"/>
<authenticationmode="Windows"/>
</system.web>
</configuration>
个中RegexUrlMapping的属性enabled用于翻开和封闭映照,rebaseClientPath拜见HttpContext.RewritePath中rebaseClientPath参数
<add>用于增加映照划定规矩,url为婚配路径的正则表达式pattern,mappedUrl是交换划定规矩,用法拜见Regex.Replace办法
上例中,第一个add在url顶用括号界说了组1,以是在前面援用$1
第二个add在url顶用(?<id>)界说了组id,前面用${id}援用了这个组
第三个是流动字符串交换
呵呵,看来正则表达式仍是很主要滴~~
简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |
|