.net中实现伪静态的学习小结

好久不写博文了,回想起来上一篇博文应该是很久以前写的了。今天写点过去的学习心得——.net中实现伪静态。

比如:类似这样的链接list.aspx?id=1&pid=5,我们并不想在浏览器地址栏中(注意这句话)看到后缀和参数的传递,我们想让他变成list-1-5.html这样的。原理很简单,首先展现给客户点击的部分就写成list-1-5.html或者是其他的静态的.html链接,比如:list/1/5.html或者list_1_5.html等,在前台部分都这样写,浏览器不管你处理的页面,他只知道你是点击了一个.html(我是这样理解的),那么打开的页面的浏览器地址栏中就是这个.html,然后我们看到的下面这个部分其实是一个处理程序运行的结果。说白了叫改变应用程序的处理方式,让处理页面偷偷的运行,然后推到前方),我还有点不明白的是:为什么IIS这样处理:我点击.html的页面,但是这个页面中目录中并不存在,平时我们请求一个html页面的话,没有这个文件就显示找不到是吧?但是这里有点不同,他让浏览器的地址部分和处理程序也就是接收参数的aspx页面合到一起了,地址显示的是点击的什么什么.html,然后下面的部分是aspx处理呈现的,还是一个aspx页面。可以这样理解,但是就是有点看不懂,不好理解。

说到伪静态有2种方式。第一种:用一个类来分解请求的.html这个中的参数,加上在web.config中进行简单的配置就OK,把这些参数传给aspx的处理页面去处理,然后呈现结果。还有一种是直接在web.config中配置,稍微复杂一点,然后他不用去写一个特殊的处理类就可以让处理页面接到传值呈现结果了。

必要条件:都离不开一个第三方的.dll文件:URLRewriter.dll

搞一个过程吧,这样看起来很直观:

新建web网站在vs2010(这个是我的环境)中

在bin文件中引用上面的.dll

在目录下新建一个aspx页面用来呈现给用户,在其中放置链接,直接上图:

这个是呈现给用户去点的,总要有个入口吧~。

先说第一种方式的处理,上面我们说了第一种是要一个类来分解这个参数把这个参数传到处理页面也就是.aspx页面去处理,上类的图:

这里注意一点:这个类一定要放在App_Code这个文件夹中,这个类就是在处理页面之前捕获客户端发到服务器端的请求页面的值,对这个值进行处理得到参数。App_Code这个文件夹对于一个解决方案来说是一个全局文件夹,任何的请求之前都要先执行这个中间的对应方法类,比如:过滤输入的类可以放在里面,然后捕获请求的也可以放其中等等。反正就是中处理程序之前处理的都可以放这个里面(暂且这样理解)。

接下来就是上面的那个detail.aspx了,这个文件是真正处理的页面,上图:

好了,最后配置一下config文件,上图:

运行一下,在那个类那里设一个断点,他肯定跑去那里了。

下面说第二种,这种唯一的区别是在web.config这个文件中,上面的那个类也不要了,直接上配置文件的图:

好了,其他的不变,运行,是同样的结果。第二种,我感觉那个.dll类中也做了处理的了,怎么处理?我想应该是把那个config中的配置就是上图的2部分处理了一下,就这么简单我觉得。

写个个人感觉吧,综合起来第一种要简单一点,为什么,我是这样理解的,一个类可以处理很多种不同的情况,而你在config中配置的话就没有那么灵活了,看上面图中 2 的部分,要这样写的话,如果像新浪那么大的那么多的处理页面那个config还不大的惊人(虽然正则可以覆盖大部分也很不方便啊!),处理类就不同了,处理页面可以作为一个变量放在程序中,谁来改谁。

其实这是我的一点个人学习感受,有不同意见的可以相互指点。说到这,我有点对webconfig这个文件更多的佩服,微软用这个文件中应用程序中居然发挥那么大的作用,真是感觉自己就像是井底之蛙。学习中~~~

时间: 2024-10-23 16:08:44

.net中实现伪静态的学习小结的相关文章

akka actor中的基本概念(学习小结)

注:本文章是看blog后的一个阶段小结,只作为个人笔记, 原文链接:http://www.iteblog.com/archives/1154 官网地址贴上:http://doc.akka.io/docs/akka/snapshot/scala/actors.html 什么是akka akka的actor模式提供了一个写并发和分布式系统的高层次抽象,将程序员从锁和线程管理等问题中解放出来,是一个在JVM上构建高并发.分布式和可快速恢复的消息驱动应用的工具集和运行时,actors 模式是在Carl

TCL中Expect 交互的学习小结

Expect作为一种重要的TCL扩展包,主要有以下几个命令: spawn用于启动一个进程,之后所有expect操作都在这个进程中进行. 如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命 令的.所以不要用 "which spawn"之类的命令去找spawn命令.    spawn ssh [email protected]    spawn telnet 135.251.193.217 2. expect & exp_send  expect "

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

Android基础入门教程——8.1.1 Android中的13种Drawable小结 Part 1

Android基础入门教程--8.1.1 Android中的13种Drawable小结 Part 1 标签(空格分隔): Android基础入门教程 本节引言: 从本节开始我们来学习Android中绘图与动画中的一些基础知识,为我们进阶部分的自定义 打下基础!而第一节我们来扣下Android中的Drawable!Android中给我们提供了多达13种的 Drawable,本节我们就来一个个撸一遍! Drawable资源使用注意事项 Drawable分为两种: 一种是我们普通的图片资源,在Andr

git学习小结

背景:最近因为工作原因,需要将以前的代码库由bitbucket重新布置在一台服务器上,所以就学习了下git,特此记录下 在167这台机器上搭建apache,用做git server,由于以前apache都已经搭好了,所以这里只配置git server 就可以了,此处贴出配置: 服务器搭好了,来到配置中的root目录,git clone https://[email protected]/XXXX 此时,库和服务器都搭好了,用于新库测试的机器也可以从git server上克隆库了,来,我们来试试从

网络编程学习小结

几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的差别: 1)  ISAPI主要是开发基于浏览器client与server端程序.效率比CGI方式高,并且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2)  CGI主要是开发基于浏览器client与server端程序.(基于TCP/IP模型中的应用层) 3)  WinInet主要是开发client程序.(基于TCP/IP模型中的应用层) 4)  Winsock主要是基于socket来开发clie

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

201671010130 2016-2017-2 《Java程序设计》第四周学习小结

第四周学习小结 本次实验巩固了上次实验分隔数并求和的题,目前这个题有两种做法,一种是不断对数10求余,余数保存在sum中,然后左移一位,直到余数为零.另一种就是将数字强制转换成一个字符串数组String s=String.valueOf(num),根据方法s.toCharArray()将字符分离出来,据"x"-"0"=x,unicode码值相减即可得x的值. 父类和子类能够看两个交集,super关键字是否能够看做一个子类和超类的接口呢? 在子类中可以增加域.增加方法