|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)要重写,起首是截获url哀求,然后剖析事先的url,最初跳转到响应的页面.以是我们第一步是要截获url哀求.
比来有个伴侣要做url重写的器材,我帮他弄了弄,转头看昔时本人写的谁人文章,事先觉得本人写的很简单了解.但如今再看却以为写的欠好.现在天百度了一下urlrewriter发明我这个文章居然排第二.为了便利更多伴侣,我再写点器材增补下.
一样平常用百度搜的伴侣都是对这个不懂得但又急必要用的,我想,再多的言语也比不外一句代码.因而我把明天帮伴侣时分写的一个小例子传了下去.这个小例子的目标是完成对恣意url的重写(但不包含二级域名的,有必要二级域名的也能够先懂得下url重写的观点).这个小项目标制造历程以下
必要对诸如http://song2.cn/viewnews/2009/3/2.html的url举行重写.将其重写为http://song2.cn/viewnews.aspx?id=2&year=2009&month=3
下载微软的谁人URLRewriter.dll,利用这个对url举行重写.
我们来看这个url,http://song2.cn/viewnews/2009/3/2.html(固然也多是3.html,6.html,7.html).要重写,起首是截获url哀求,然后剖析事先的url,最初跳转到响应的页面.以是我们第一步是要截获url哀求.为此新建一个类库叫URL,在该类库中援用URLRewriter.dll.新建一个类myrewritter.cs,代码以下
namespaceURL
{
publicclassmyrewritter:URLRewriter.BaseModuleRewriter
{
protectedoverridevoidRewrite(stringrequestedPath,HttpApplicationapp)
{
if(requestedPath.Contains("viewnews/2009/3/2.html"))
app.Context.RewritePath("/viewnews.aspx?id=2&year=2009&month=3");
else
app.Context.RewritePath("/here.aspx");
}
}
}
能够看到该类承继了URLRewriter.BaseModuleRewriter,然后在Rewrite办法中到场了我们本人的逻辑.如今,只需以后的url哀求是viewnews/2009/3/2.html,我们就会将页面重写到/viewnews.aspx?id=2&year=2009&month=3.
这只是一个复杂的例子,实践上关于url的判别,通常为用正则表达式来完成.而页面和页面间的对应干系,大概必要经由过程查询数据库完成.
接上去在网站项目中援用这个类库.然后修正下web.config,上面是我的web.config
<?xmlversion="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<httpModules>
<addtype="URL.myrewritter"name="URL"/>
</httpModules>
<compilationdebug="true"/>
<authenticationmode="Windows"/>
</system.web>
</configuration>
人人能够看到我新加了个httpModules.这个的感化是,假如有url哀求,asp.net会先把哀求传到你指定的这个类中来.add那一行了,后面的是要吸收哀求的类,前面的是这个类地点的dll的名字.
增加完这一句后,统统就快停止了.因为我们要处置的是.html的页面,以是必要设置下iis.由于默许asp.net的处置引擎不会管.html.我们要做的是用途理asp.ent的谁人程序来处置html页面.翻开iis.找到你的网站,点右键翻开属性.找到主目次(HomeDirectory),翻开设置(Configuration)对话框.在Applicationextensions(抱愧我不晓得这个在中文体系里叫甚么)列内外找到.aspx,点击编纂(Edit...),复制Executable框的内容.好比我的是:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll.然后点击Add,在翻开的对话框里,Executable把方才复制的路径粘贴到这里,extension填写html,然后断定保留.如许我们就把对.html页面的哀求交给了asp.net.
全体完成了,编译下项目(中文情况叫天生),翻开urlhttp://localhost/mytest/viewnews/2009/3/2.html,看会不会重写到http://localhost//viewnews.aspx?id=2&year=2009&month=3
上面是我的例子的全体文件,人人能够下载然后看看.看一句代码比看十句话都管用,对吧
要注重的是,我的例子中,web网站的url设置成了http://localhost:8011,你大概必要变动下这个设置.办法是在网站项目上点右键,翻开属性.然后在Web页面中修正.
作为一个初学者,大概对这些器材感到挺烦的.假如你不想看长篇年夜论,那最好的举措就是看下我的代码.我比来在学flex,对有些新器材也是处于忍辱负重的形态.春季到了,人人都对照急躁,以是,静下心来,渐渐来.
刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。 |
|