URL Mapping in Action
动态中的URL 映射(Mapping)
让我们用Widgets页面作为例子。
图1展示了一个非常简单的ASP.NET 2.0 应用程序
默认的,Widget.aspx页面将可以用~/Products/W/Widget.aspx(在这里的第一个字符~代表了网站根目录的路径)问的。在ASPNET 2.0中的新特性就是你可以通过程序中的 web.config 文件来改变你的路径。为了做到这个程序,你需要在<system.web>中添加一个<urlMappings> 部分。这里有你做MAPPING过程中想要的代码。
<system.web>
<urlMappings enabled="true">
<add url="~/Widget/aspx" mappedUrl="~/Products/W/Widgets.aspx"/>
</arlMappings>
</system.web>
<system.web>
<urlMappings enabled="true">
<add url="~/Widget/aspx" mappedUrl="~/Products/W/Widgets.aspx"/>
</arlMappings>
</system.web>
在<urlMappings>部分,你可以有很多的<add>部分,每个这样的部分都有一个URL属性,这个属性指定了用户将要输入的URL,还有一个mappedUrl的属性,这个属性指定了实际的URL。这个实际的URL是代替用户输入URL的,是应用程序要传递的,
图2展示了在这样的情况下用户输入指定的URL的结果。
注意通过asp.net 的事件已经传递了映射的URL,那个用户输入的URL仍然显示在浏览器的地址栏上。
The Limits of URL Mapping
URL映射的局限性
URL映射的主要局限,就像运行在ASP.NET 2.0 中一样,是一个纯粹的静态技术,不带任何的通配符。你可以包含一个查询在URL中(例如,有可能映射~/Products/Widget.aspx 到 ~/Products.aspx?ProductID=widget)。可是你不能设置一个映射,然后用正则表示式去改变相所有的相似URLs 到相似的映射的URLs。对于许多应用程序来说,这是很严格的,绝大多数的决定性的局限相当地削弱了URL映射的效用。
为什么会有这样的局限? 微软的Scott Guthrie在他的博客中解释,公司计划在IIS 7.0中提供全面的URL重写的特性。IIS 7.0 将预定做为Longhorn Server (操作系统)的一部分装载。随着未来几年内的Longhorn Server的完成,微软不会为了这个系统的发布,而让ASP.NET 2.0 的队伍去解决可测量性跟安全性方面的问题。
灵活的URL 重写
幸运的是,你不用因为得到更多的灵活的URL重写而去等Longhorn Server的发布。今天,这里有几种的解决方安可以帮助你如果你需用正则表达式去做ASP.NET 2.0 URL重写。
为了那些初学者,很多ASP.NET的开发人员已经完成了他们自己的,针对带着RegEx 支持的URL 重写的HTTP模块。我已经看了其中的一个,它对于的ASP.NET 2.0的其它特性(像 THEMES)的大部分支持可以在Albert Weinert and Thomas Bandt的UrlRewritingNet namespace中找到。这个开源的部件仍然要在web.config文件的规则去配置,但现在,这个规则可以使用正则表达式去匹配或者替代。例如,这儿有几个有正在使用这个构件的有效规则
<rewrites>
<add virtualUrl="^~/(.*)/(.*).aspx"
rewriteUrlParameter="StoreInContextItems"
destinationUrl="~/$2.aspx?language=$1¶meter=$2"
ignoreCase="true" />
</rewrites>
这个规则将映射一个URL ~/English/Add.aspx到一个~/Add.aspx?language=English&meter=add
要拥有更多的灵活性,你可以去看看商业ISAPI_rewrite URL 处理机制。 带HTTP模式的解决方安的问题之一就是只对ASPX文件有效(或者其他的一些可以传递给ASP.NET机制的文件)。因为它是作为一个ISAPI的过滤器。 ISAPI_rewrite可以任何发给IIS的URL。这个可以允许你去应用基于正则表达式的重写技术到任何的文件类型,例如,如果你需要带着查询参数重定位图像文件或者映射 .html URL 到 .aspx页面,这个工具可以做这样的工作。ISAPI_rewrite 有测试版跟商业版($69),可以解决大多熟运行在单个服务器上的网站所遇到的问题。
一个值得知道的技术
URL rewriting 是一个很有用的工具,你最好把它想成一个可以使你网站从给网站用户的逻辑表达到你网站的物理布局简单化。有了WURL rewriting技术,你可以像你的用户提交一个友好的,简短的URLs到浏览器。 可以在你的源代码树中仍然使用很长,详细的,有组织的URLS。
你可以用Microsoft的原来自带的ASP.NET 2.0 的URL解决方法,或者你需要更灵活的,已经在本文中指出的,经过评估的那些软件,这取决于你对URL rewriting的需要的复杂度。你将觉得这些软件对你很有帮助。
分享到:
相关推荐
### ASP.NET 2.0 中的 URL 重写与 urlMappings 概述 在ASP.NET 2.0中,URL重写(URL Rewriting)和urlMappings是两个重要的概念,它们可以帮助开发者创建更加用户友好、搜索引擎友好的URL,同时也可以用于实现更...
首先,URL映射的配置文件通常位于`grails-app/conf/UrlMappings.groovy`。在这个文件中,开发者可以定义一系列规则来处理不同的URL模式。例如,以下映射将"home"路径指向`MainController`的`index`动作: ```groovy...
在ASP.NET中,URL映射是通过`<urlMappings>`配置节来实现的,位于Web.config文件中。基本语法如下: ```xml <urlMappings enabled="[true|false]"> <add url="String" mappedUrl="String" /> </urlMappings> ``` ...
<urlMappings enabled="true"> <add url="~/Info/Copyright.aspx" mappedUrl="~/Help/Copyright.aspx" /> <add url="~/Support/Contacts.aspx" mappedUrl="~/Help/Contacts.aspx" /> </urlMappings> ``` 然而,...
本讲将通过实例比较ASP.NET下的三种典型URL重写方案——ISAPI重写(使用开源组件IIRF),ASP.NET2.0内置的urlMappings和基于自定义HTTPModule的URL重写(使用NBear.Web中的UrlRewriteModule实现),并探讨URL重写中...
### 伪静态URLRewrite实例解析 #### 一、伪静态URLRewrite概念与作用 在Web开发领域,为了提高用户体验、便于搜索引擎抓取以及优化网站结构,常常需要对URL进行美化处理,这就是所谓的“伪静态”。通过将动态URL...
在`UrlMappings.groovy`文件中,为`exportCsv`方法创建一条路由。例如: ```groovy static mappings = { "/export/csv"(controller: 'export', action: 'exportCsv') } ``` 6. **测试** 现在,你可以通过...
### Url Rewrite Filter 实现页面伪静态化:详细步骤与实例解析 #### 一、引言 在现代Web开发中,为了提升用户体验、提高搜索引擎友好度以及优化网站结构,页面伪静态化成为了一种常见的技术手段。本文将详细介绍...
5. **字典/映射(Dictionary/Mappings)**: URL短化服务通常需要存储长URL和它们对应的短码。在TypeScript中,这可以通过使用对象字面量或者Map实现。例如,`{ shortCode: longUrl }`或`new Map, string>`。 6. *...
访问如`http://localhost:8088/sshtest/user.do?act=register`的URL时,系统返回HTTP状态码404,提示Servlet Action不可用。这通常是由于在`struts-config.xml`配置文件中的处理器类配置错误所导致的。 **原因分析...
<property name="urlMappings"> <value>/hessian/* ``` 4. 创建Hessian客户端: 客户端可以通过`HessianProxyFactoryBean`来创建代理,调用远程服务: ```java HessianProxyFactoryBean ...
- **Action Mappings**:定义了 URL 请求与具体的 Action 类之间的映射关系。 - **Message Resources**:用于配置国际化资源文件。 - **Plugins**:用于配置插件,例如 Validator 插件。 ##### Form Beans 定义示例...
- **通配符映射(wildcard mappings)**:允许你使用通配符来映射一组相似的动作,减少配置工作量。 - **动态方法访问(Dynamic Method Invocation,DMI)**:通过动态决定Action的方法来处理请求,使得URL可以反映...
<url-pattern>/*</url-pattern> ``` 这个过滤器负责拦截所有的HTTP请求,并将它们转发到Struts2框架进行处理。 #### Actions:Struts2的核心组件 Actions是Struts2框架的基本构建块,用于处理来自用户界面的...
<property name="mappings"> <prop key="/entry.service">exporter <!-- 使用 DefaultAnnotationHandlerMapping 映射 URL 到 Controller --> ``` **2.3 Controller** - **定义**:...
9. **异常处理**:Struts2允许定义全局异常处理策略,通过`<global-exception-mappings>`来捕获和处理未预期的异常。 10. **插件机制**:Struts2拥有丰富的插件库,如Struts2-dojo-plugin用于与Dojo JavaScript库...
<url-pattern>/servlet/XFireServlet/*</url-pattern> <servlet-name>webservice <url-pattern>/services/*</url-pattern> ``` 上述配置设置了两个URL模式,使得服务器能识别和处理Web服务请求。`/servlet/...
- **Action Mappings**:定义了URL到具体的Action类之间的映射关系。每个Action可以指定不同的处理结果,如成功或错误页面。 - **Forward**:定义了Action执行后的转向路径。 #### Struts2配置文件详解 Struts2...
<arg value="-url"/> ${basedir}/src/main/java"/> ``` 在这个例子中,我们指定了数据库连接信息,输出目录,以及要处理的数据库表。当运行`generate-hibernate-mappings`目标时,...