ASP.NET页面,用户30分钟没有任何操作后再次操作时跳转到登录页

呵呵哒呀 2011-07-27 05:11:16
RT

30分钟没有操作 再次操作时跳到登录界面 或者 自动跳到登录界面
...全文
221 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
MSDNXGH 2011-07-28
  • 打赏
  • 举报
回复
建议采用一下fomr验证,而非seeion,因为seeion的极其容易掉失数据,致于用户体验非常不好。
seeion掉失原因有很多,楼主有兴趣可以百度一下

基于form验证的话,也就是基于cookes验证。

form验证支特你在web.confing配置cookes名字,和过期时间,这个时间的方式可以是绝对,也可以是相动。(不设置就默认值,默认是临时cookes就是关闭浏览器才失效)

更多具体设置,建议参与一下MSDN,FORM验证
呵呵哒呀 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]

我再说明白一点,假设你想当他老婆上你的网站时(不管是在世界上哪一个角落),老公就掉线,那么也是一样,每一分钟ajax调用一下服务器的某个在线通知aspx时,此aspx看到此人的老婆上网了,那么它就对此会话执行Abandon就行了。
[/Quote]
刷新的话 session不就一直不会超时了吗? 我如何知道他多久没操作 需要让他跳转了呢?
呵呵哒呀 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 nqicecoffee 的回复:]

直接在页面写一段java脚本

倒计时半小时就跳转到首页即可
[/Quote]
这个不合理吧 要是用户一直在操作 半小时后给跳到首页了。。这不杯具了
子夜__ 2011-07-27
  • 打赏
  • 举报
回复
设置过期时间

或者参考
  • 打赏
  • 举报
回复
然而你写的“30分钟”,这个就很容易误导。Session的过期时间可以设置成1000分钟吗?就算设置了,它好像也是最多也就20分钟就自动过期了。
  • 打赏
  • 举报
回复
我再说明白一点,假设你想当他老婆上你的网站时(不管是在世界上哪一个角落),老公就掉线,那么也是一样,每一分钟ajax调用一下服务器的某个在线通知aspx时,此aspx看到此人的老婆上网了,那么它就对此会话执行Abandon就行了。
NqIceCoffee 2011-07-27
  • 打赏
  • 举报
回复
直接在页面写一段java脚本

倒计时半小时就跳转到首页即可
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hu3393631 的回复:]
囧 我题没说清楚 我不是想让它不掉 我是想让它掉 它现在不掉。。。 这个如何让它30分钟后 就跳到登录页?[/Quote]

那也是一样的实现方式啊!

你懂得让它不掉的技术,这就是入门了,那么你想“让他掉”稍微变通一下原来的代码不就行啦!
longxun_chen 2011-07-27
  • 打赏
  • 举报
回复
友情帮顶,我也想知道
呵呵哒呀 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
其实这个可以理解!这是asp.net原本的设计原理之一。

如果你想让它不掉,你可以使用ajax方式每隔1分钟就访问一下服务器,访问随便什么页面都行,这样后台的Session过期时间就推迟了。
[/Quote]

囧 我题没说清楚 我不是想让它不掉 我是想让它掉 它现在不掉。。。 这个如何让它30分钟后 就跳到登录页?
chenhongjun0624 2011-07-27
  • 打赏
  • 举报
回复
chenhongjun0624 2011-07-27
  • 打赏
  • 举报
回复
<sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>
kingcsx666 2011-07-27
  • 打赏
  • 举报
回复
session过期了,多久过期的时间是可以设置的
  • 打赏
  • 举报
回复
设计上,这样还可以准确知道哪些客户在线,客户假如说从浏览器上去看其它网站去了,或者直接将进程结束了,你也可以迅速知道。只要看一下客户最后一次访问服务器的时间距离当前时间差(比如说超过2分钟),就知道客户离线了。
  • 打赏
  • 举报
回复
其实这个可以理解!这是asp.net原本的设计原理之一。

如果你想让它不掉,你可以使用ajax方式每隔1分钟就访问一下服务器,访问随便什么页面都行,这样后台的Session过期时间就推迟了。
haa17 2011-07-27
  • 打赏
  • 举报
回复
验证cookies,cookies当按钮点击更新一次,每次更新前验证。过期直接跳转。
Url重写系列篇: ----主讲:天涯浪子 本讲将通过实例比较ASP.NET下的三种典型URL重写方案——ISAPI重写(使用开源组件IIRF),ASP.NET2.0内置的urlMappings和基于自定义HTTPModule的URL重写(使用NBear.Web中的UrlRewriteModule实现),并探讨URL重写中可能遇到的陷阱及处理办法。 需要手动为UrlRewriteWebSite目录添加一个到http://localhost/UrlRewriteWebSite的同名虚拟目录,允许匿名访问,并设置目录默认为default.aspx。 另外,为了启用IIRF的URL重写支持,需要将UrlRewriteWebSite/bin目录下的IsapiRewrite4.dll添加为IIS默认网站的ISAPI过滤器。[相应资料打压缩包] 重写原理: 用户(A)----->系统运行(C) 真实地址 用真实地址运行 用户(A)----->转换器(B)----->系统运行(C) 假地址 将用户假地址 用真实地址运行 转换为真实地址 重写规则 注意,我们的演示程序中将混合使用三种方式的URL重写,因此,需要为三种实现分别设置一些URL重写规则: 1、IIRF,对于IIRF,对应于IsapiRewrite4.dll,在相同的目录会有一个IsapiRewrite4.ini文件,除了默认的一些设置,我们在文件末尾添加了几条自定义规则如下: # Custom RewriteRules RewriteRule ^/UrlRewriteWebSite/test(.*).aspx /UrlRewriteWebSite/Default.aspx?page=$1 RewriteRule ^/UrlRewriteWebSite/folder/(.*).aspx /UrlRewriteWebSite/Default.aspx?folder=$1 RewriteRule ^/UrlRewriteWebSite/folder/? /UrlRewriteWebSite/Default.aspx?folder=default 熟悉正则表达式的朋友应该很容易理解上面这三条规则。 规则一将形如testXXX.aspx这样的访问,重写为Default.aspx?page=XXX这样的; 规则二将形如folder/XXX.aspx的路径,重写为Default.aspx?folder=XXX这样的; 规则三将不带任何文件的folder目录的访问,重写为Default.aspx?folder=default这样的。 2、urlMappings是ASP.NET2.0内置支持的URL重写配置块,它应该包含在web.config的配置块中。但是,这个内置的URL重写支持不支持正则表达式,因而只能用来实现一对一的路径和的重写。urlMappings的配置内容包含在下面的Web.config文件中。 3、NBear.Web.Modules.UrlRewriteModule则是NBear中实现的一个基于HTTPModule的URL重写实现,它允许使用正则表达式来描述重写规则。 注意,代码中包含了urlMappings配置和用于NBear.Web.Modules.UrlRewriteModule重写规则。为了比较着几种重写方案,正则表达式基本上是和前面的IIRF定义中的规则类似的。 测试 定义完这些重写规则,我们就可以试着在中使用它们了。例如,如果我们写一个测试如下: Default.aspx Default.aspx.cs public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write(Request.Path + "?" + Request.ServerVariables["QUERY_STRING"]); } } 注意,Default.aspx会输出当前呈现的实际及其QueryString参数。 运行该,分别点击中的链接,我们会看到,貌似所有的URL重写一切正常。但是,当试着点击中的按钮,我们马上会发现,postback后,浏览器地址栏中的链接变成了那个被重写后的地址,而不是,原来显示于地址栏的虚拟地址了。这是一个严重的不一致,没道理我点击的按钮,在没有跳转到其他的情况下,地址栏显示另一个地址,不是吗? 要解决这个问题,我们只需要为form添加一个onsubmit事件处理如下:
添加该事件处理,就能在postback提交之前,重置的地址。 为前面的添加onsubmit之后,我们发现,postback不再会改变地址栏地址显示了。 注意:你确认试过点击最后一组链接中的buildin default page和section default page了吗? 你会发现,这两个链接根本不能显示。为什么呢?为什么类似的folder default page可以正常显示,而另两个不能显示呢? 回到前面的规则定义部分,我们就能发现,folder default page使用的是由IIRF这个ISAPI定义的规则,而另两个则使用的是内置于ASP.NET2.0的HTTPModule的重写规则(本质上,urlMappings也是使用HTTPModule来实现重写的,所以,除了不支持正则表达式之外,它也包含自定义HTTPModule方式实现的所有缺点)。 在IIS的ISAPI层面,是可以截获所有的请求的,哪怕指定的、目录根本不存在。但是,ASP.NET解析器则只有在对的请求被IIS转发过来,才能处理。我们知道,IIS可以忽略对链接的虚拟目录是否存在的检测,但是,却无法检测非ASP.NET支持的文件扩展名的链接(我们固然可以在IIS中将所有类型的扩展名都映射到ASP.NET解析器,但是,如果我们有设置IIS的权限,为什么还要用性能更低,限制更多的ASP.NET方式的URL重写,而不使用基于ISAPI方式的重写呢?)。所以,为了让这两个不能显示的能正常显示,一方面,我们要在IIS中设置默认,如default.aspx,另一方面,需要让IIS对某个不带aspx扩展名的链接,如这里只包含某个目录的名称的链接转发到默认。 要做到这一点,我们需要在我们的应用程序中,为buildin和section分别将两个对应的目录,并且,在目录中创建两个空的default.aspx。尽管这样的default.aspx实际上永远不会被真正执行,但是有他们的帮助,就能让IIS顺利地将请求转发至ASP.NET解析器,从而,使得基于HTTPModule的URL重写规则,被执行。 好了,创建这两个目录及default.aspx文件,我们就能修复该问题了。 接下来我们先做点测试: 我们来对上的链接反复点击点击,folder page -> section page -> folder page -> section page...等等,打住,看到浏览器地址栏发生了什么吗?这不是恐怖活动,但是。。。也差不多了。我们看到我们可爱的地址,变成了...folder/section/folder/section...aspx。 想想是为什么呢?看看我们的aspx文件。。。我想你一定想到了。对了,都是相对路径惹的祸! 我们可爱的的相对路径一顶是同学们最常使用的,但是,浏览器在处理相对路径,是以浏览器上接受的url地址为基础进行计算的,也就是说,如果当前的地址为folder/1.aspx,那么,很显然,./section/2.aspx这个,对应的自然是folder/section/2.aspx了,问题就出在这儿了!没有URL重写,不会有这样的情况出现。但是URL重写,并且,将一个带假目录的虚拟地址重写到一个不带假目录的,由于浏览器客户端和服务端此的当前计算方法是不同的,就会发生相对路径的匹配错误问题!真实很严重的问题啊! 解决的办法,只有使用绝对路径!但是,我们当然不会傻到对每个链接直接使用绝对路径的,呵呵:) 将Default.aspx中的所有相对路径都使用Page.ResolveUrl进行包装如下,在输出就将地址转换为绝对路径,就能解决这个恐怖的相对路径陷阱了。当然,也别忘了加上onsubmit事件处理代码: Default.aspx 好了,再试一试点击上的链接和按钮,多点几次 谢谢………… 参考资料: 引言 让我们花点间来看一下网站上的一些 URL。您是否发现一些类似于 http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary 的 URL?或者,您可能将一系列网从一个目录或网站移动到另一个目录或网站,结果导致已将旧 URL 用作书签的访问者断开链接。在本文中,我们将了解如何通过将 http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary 替换为类似于 http://yoursite.com/people/sales/chuck.smith 的网址,使用 URL 重写将那些冗长的 URL 缩写为富有意义且容易记忆的 URL。我们还将了解如何将 URL 重写用于创建智能 404 错误。 URL 重写是截取传入 Web 请求并自动将请求重定向到其他资源的过程。执行 URL 重写,通常会检查被请求的 URL,并基于 URL 的值将请求重定向到其他 URL。例如,在进行网站重组而将 /people/ 目录下的所有网移动到 /info/employees/ 目录中,您可能希望使用 URL 重写来检查 Web 请求是否指向了 /people/ 目录中的文件。如果请求指向 /people/ 目录中的文件,您可能希望自动将请求重定向到 /info/employees/ 目录中的同一文件。 使用传统的 ASP,应用 URL 重写的唯一方法是编写 ISAPI 筛选器,或者购买提供 URL 重写功能的第三方产品。但是,使用 Microsoft® ASP.NET,您可以通过很多方法来轻松地创建您自己的 URL 重写软件。本文讨论了可供 ASP.NET 开发人员实现 URL 重写的各种技术,然后讨论了 URL 重写的一些实际使用情况。在深入讨论 URL 重写的技术细节之前,让我们先看一些可以使用 URL 重写的日常情景。 URL 重写的常见用法 创建数据驱动的 ASP.NET 网站,通常会产生一个单个的网,该网基于查询字符串参数显示数据库数据的子集。例如,在设计电子商务站点,您的任务之一便是允许用户浏览待售产品。为此,您可以创建一个名为 displayCategory.aspx 的,该将显示给定类别的产品。可以通过查询字符串参数来指定要查看的该类别的产品。也就是说,如果用户要浏览待售的 Widget 产品,并且所有 Widget 产品的 CategoryID 均为 5,则用户可以访问以下网址:http://yousite.com/displayCategory.aspx?CategoryID=5。 创建具有此类 URL 的网站有两点不足:首先,从最终用户的角度考虑,URL http://yousite.com/displayCategory.aspx?CategoryID=5 比较杂乱。可用性专家 Jakob Neilsen 建议遵循以下标准来选择 URL: • 简短。 • 易于键入。 • 可以看出站点的结构。 • “可删节”,允许用户通过删除 URL 的组成部分来浏览站点。 我还要增加一条标准,即,URL 应该便于记忆。URL http://yousite.com/displayCategory.aspx?CategoryID=5 不符合 Neilsen 的任何标准,也不容易记住。要求用户键入查询字符串值将使 URL 的键入变得非常困难,并且只有了解查询字符串参数的用途及其名称/值对结构的富有经验的 Web 开发人员才能够对 URL 进行“删节”。 较好的方法是允许使用切合实际且容易记忆的 URL,如 http://yoursite.com/products/Widgets。只要看一眼 URL,您便可以推断出将要显示的内容 -- 有关 Widget 的信息。此 URL 也很容易记住和共享。我可以告诉我的同事“请查看 yoursite.com/products/Widgets,”,她可能无需再次问我 URL 是什么即可打开该。(尝试一下,您只需说出“Amazon.com ”即可!)此 URL 还将显示出来,并且应该是“可删节”的。也就是说,如果用户删去 URL 的末端,键入 http://yoursite.com/products,他们应该看到所有产品的列表,或者至少应该看到他们可以查看的所有类别的产品列表。 注意:要获得“可删节”URL 的最好示例,可考虑使用由许多 blog 引擎生成的 URL。要查看 2004 年 1 月 28 日的帖子,用户可以访问诸如 http://someblog.com/2004/01/28 的 URL。如果该 URL 被删节为 http://someblog.com/2004/01,用户将看到 2004 年 1 月的所有帖子。将该 URL 进一步删节为 http://someblog.com/2004 将显示 2004 年的所有帖子。 除了简化 URL 之外,URL 重写还经常用于处理网站重组,以免导致大量链接断开或书签过期。 请求到达 IIS 将会发生什么情况 在正式研究 URL 如何实现重写之前,应首先了解 Microsoft® Internet Information Services (IIS) 如何处理传入请求,这一点非常重要。当请求到达 IIS Web 服务器,IIS 检查被请求文件的扩展名以确定如何处理该请求。IIS 可以自行处理请求(如 HTML 、图像以及其他静态内容),或者将请求路由到 ISAPI 扩展。(ISAPI 扩展是一个处理传入 Web 请求的非托管编译类。其任务是生成被请求资源的内容。) 例如,当传入针对 Info.asp 网的请求,IIS 会将此消息路由到 asp.dll ISAPI 扩展。然后,该 ISAPI 扩展将加载被请求的 ASP ,执行该,并将所呈现的 HTML 返回给 IIS,然后,IIS 将该 HTML 发送回请求客户端。对于 ASP.NET ,IIS 会将此消息路由到 aspnet_isapi.dll ISAPI 扩展。然后,aspnet_isapi.dll ISAPI 扩展将处理操作传递给托管的 ASP.NET 辅助进程,该辅助程序将处理请求,并返回 ASP.NET的呈现 HTML。 您可以自定义 IIS,以指定扩展名与 ISAPI 扩展的映射关系。图 1 显示了 Internet Information Services 管理工具的“应用程序配置”对话框。请注意,与 ASP.NET 有关的扩展名(.aspx、ascx、config、asmx、rem、cs、vb 及其他)均已映射到 aspnet_isapi.dll ISAPI 扩展。 图 1. 已配置的文件扩展名映射 讨论 IIS 如何管理传入请求稍稍超出了本文范围。但是可以在 Michele Leroux Bustamante 的文章 Inside IIS and ASP.NET 中找到对此内容的深入讨论。ASP.NET 引擎仅处理那些扩展名已明确映射至 IIS 中的 aspnet_isapi.dll 的传入 Web 请求,了解这一点非常重要。 使用 ISAPI 筛选器检查请求 IIS 除了可以将传入 Web 请求的文件扩展名映射到相应的 ISAPI 扩展之外,还将执行许多其他任务。例如,IIS 将尝试对发出请求的用户进行身份验证,并确定通过身份验证的用户是否有权限访问被请求的文件。在处理请求的有效期内,IIS 将经历几个状态。在每个状态下,IIS 都将引发可以使用 ISAPI 筛选器以编程方式进行处理的事件。 与 ISAPI 扩展一样,ISAPI 筛选器是在 Web 服务器上安装的非托管代码块。ISAPI 扩展被设计为可以响应针对特定文件类型的请求。另一方面,ISAPI 筛选器还包含可以对 IIS 引发的事件进行响应的代码。ISAPI 筛选器可以截取甚至修改传入和传出的数据。ISAPI 筛选器可以应用于很多方面,包括: • 身份验证和授权。 • 记录和监视。 • HTTP 压缩。 • URL 重写。 虽然 ISAPI 筛选器可用于执行 URL 重写,但本文将讨论如何使用 ASP.NET 实现 URL 重写。不过,我们将对使用 ISAPI 筛选器与使用 ASP.NET 中的技术实现 URL 重写进行权衡。 请求进入 ASP.NET 引擎将会发生什么情况 在 ASP.NET 之前,需要使用 ISAPI 筛选器来实现 IIS Web 服务器上的 URL 重写。由于 ASP.NET 引擎与 IIS 非常相似,因此可以使用 ASP.NET 进行 URL 重写。存在相似之处的原因在于 ASP.NET 引擎可以实现以下功能: • 在处理请求可以引发事件。 • 允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。 • 将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。 与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求,BeginRequest 事件将被触发。接下来触发的是 AuthenticateRequest 事件,该事件在已建立用户标识出现。(此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache 和 EndRequest,等等。这些事件属于 System.Web.HttpApplication 类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplication Class Overview。) 正如上一部分所讨论的,可以创建 ISAPI 筛选器以响应 IIS 引发的事件。同样,ASP.NET 提供了 HTTP 模块,该模块可以响应由 ASP.NET 引擎引发的事件。可以将 ASP.NET Web 应用程序配置为具有多个 HTTP 模块。对于由 ASP.NET 引擎处理的每个请求,将初始化每个已配置的 HTTP 模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。请注意,对每个请求均使用了许多内置 HTTP 模块。其中的一个内置 HTTP 模块是 FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。如果没有使用,会自动将用户重定向到指定的登录。 如上所述,通过使用 IIS,传入请求将最终发送给 ISAPI 扩展,而 ISAPI 扩展的任务是返回特定请求的数据。例如,在请求传统的 ASP 网,IIS 将请求传递给 asp.dll ISAPI 扩展,该扩展的任务是返回被请求的 ASP 的 HTML 标记。ASP.NET 引擎使用相似的方法。初始化 HTTP 模块后,ASP.NET 引擎的下一项任务是确定应由哪个 HTTP 处理程序来处理请求。 所有通过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP 处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS 将响应返回给提出请求的用户ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory 用于呈现 ASP.NET。WebServiceHandlerFactory 用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler 将向 trace.axd 呈现请求的 HTML 标记。 图 2 描述了如何处理对 ASP.NET 资源的请求。首先,IIS 接收到请求,并将请求调度给 aspnet_isapi.dll。接下来,ASP.NET 引擎对已配置的 HTTP 模块进行初始化。最后将调用正确的 HTTP 处理程序,并呈现被请求的资源,将所生成的标记返回给 IIS 和请求客户端。 图 2. IIS 和 ASP.NET 正在处理请求
hao123网址站ASP开源源码正式发布 本程序源码由hao123.com网址站独立开发,更新hao123最新样式和分类,asp版带后台,可全站生成静态。 关于网站LOGO修改: 首网站标志LOGO目录位置:/images/logo_140.gif 次网站标志LOGO目录位置:/logo.gif 希望大家创建有自己特色的LOGO,以区别于hao123。 默认后台地址:/admin/login.asp 默认用户:admin 默认密码: admin 关于网站安装: 1, 上传源码,进入后台->全局->站点信息,把信息修改成你站信息 2, 生成首和所有分类HTML 建议上传后修改默认管理后台地址/admin/的名称。 演式地址:http://www.86daijia.net 2012-5-16 增加站长统计程序及图标。 2012-5-16 美化界面。 2012-5-16 增加最新新闻资讯。 2012-5-16 修正后台管理全局设置不能保存BUG。 2012-4-9 增加IP购买。 2012-4-9 增加分享工具条。 2012-4-9 增加下角话费充值条 2012-4-9 支持二级目录,为站长节省空间 2012-2-27 再次与123同步 2011-11-7 新增折扣分类。 2011-10-24 同步hao123.com首间、天气的显示方式。 2011-10-14 新增实用工具、彩票、音乐、小游戏聚合分类。 2011-9-30 重新整理了分类。 2011-5-8 增加电影分类,自动调用wz123.net电影数据。修复军事、旅游、酷站链接名。 2011-4-2 增加连续剧分类,自动调用hao123.com连续剧数据。 2011-4-1 改进天气自动调用weather.com.cn数据。 2011-1-10 增加设计、微博分类,同步分类排序。 2011-1-10 同步天气预报数据,自动获取IP显示城市天气。 2010-11-8 增加笑话分类,同步分类排序。 2010-11-7 修改163与126邮箱登录自动跳转官网,修复子目录返回首链接。 2010-10-20 最新同步团购分类。 2010-7-28 最新同步hao123.com清新绿风格。 2010-3-5 应广大站长需要,再次提供HTML版本下载, 2010-1-15 同步hao123分类顺序,最新更新wz123.net职业与爱好分类。 2010-1-11 最新修复网站放在子目录上栏目样式问题,有此问题的用户请下载最新版覆盖修复。
第一章 绪论 1.1. 选题背景 这几年,许多新名词涌入我们的视野:博客、圈子、播客、WAP等。这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站创造内容的代变为由用户创造内容的web 2.0代。 在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一的思想和群体的智慧结合变的更加有效,个人出版变成人人都可以实现的梦想—— Blog 正在影响和改变着我们的生活。 1.3. 系统的开发目标 管理员通过前台进入后台管理模块后,可对注册的博客用户进行维护,包括对注册用户的添加、查找、修改和删除。 管理员进入登录后,可对帐户进行管理,包括添加管理员帐户、修改管理员帐户、删除管理员帐户和对帐户进行权限设置。 博客用户通过前台登录后,可对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片、和相关人员进行交流和沟通以及删除访问者发表的评论等。 因此,在具体设计实现该博客网站,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客推荐浏览(4) 文章详细内容及相关评论显示(5) 博客访问量统计(6) 博客个人文章管理维护功能(7) 博客个人文章分类管理维护功能(8) 博客个人友情链接维护功能(9) 博客个人基本信息管理维护功能(10) 博客图片上传及个人相册管理(11) 网络用户写留言,博主查看留言。 第二章 系统设计 2.1. 系统分析 在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。 blog对系统的可靠性、稳定性有比较高的要求。本系统设计,比较主流的B/S设计有基于JSP、ASP、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序;而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. 服务器端操作系统:独立于操作系统的跨平台系统,客户端MicroSoft Windows 2000及以上; 2. 数据库:MySQL 5.0.27版本; 3. Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4. 客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合使用Ajax技术; 5. 客户端运行工具:目前的系统采用浏览器作为客户端,为了支持Ajax开发框架,应该选择使用IE 5以上版本浏览器。 本网站以xp为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据库系统的核心动态网,实现博客网站前台及博客个人维护管理等功能模块。 1、 系统处理的准确性和及性:系统处理的准确性和及性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应间能够满足信息处理的需求。 2、 系统的开放性和系统的可扩充性:系统在开发过程中,应该充分考虑以后的可扩充性。例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和易维护性:要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。 4、 系统的数据要求:1、数据录入和处理的准确性和实性。2、数据的一致性与完整性。3、数据的共享与独立性。 2.2. 系统的可行性分析 2.2.1. 技术可行性 技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是服务器,网速)提出的要求(如计算机的容量、速度等)。此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。从一定程度上具备了开发一个小型系统的能力。再有就! 2.2.2. 经济可行性 主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,发布出去之需要注册域名就可以了,从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作。 2.2.3. 管理可行性 有IP地址、用户名与密码等,可以下载一个FTP上传工具(cure)上传更新后的内容.可以在http://www.skycn.com/soft/683.html下载到. 下载以后,通过"站点管理"-->"新建站点".输入IP,用户名,密码.然后连接即可. 当然也可用FTP工具.直接在IE浏览器地址栏输入ftp://www.域名/然后输入用户名和密码.同样可以上传.随更新文件! 第三章 开发环境的说明与安装 3.1. 开发语言的选择 3.1.1. JAVA简介 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。 3.1.2. Web应用程序开发环境—JSP技术 JSP的全称是Java Server Pages,它是SUN推出的一种动态网技术标准。它在传统的静态文件(*.html,*.htm)中加入JAVA程序片段和JSP标记,就构成了JSP。JSP具有以下的优点: 1、将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网上的动态内容; 2、能够跨平台:JSP支持绝大部分平台,包括现在非常流行的LINUX系统,应用非常广泛的Apache服务器也提供了支持JSP的服务; 3、组件的开发和使用很方便:如ASP的组件是由C++,VB等语言开发的,并需要注册才能使用;而JSP的组件是用Java开发的,可以直接使用; 4、一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write once , Run everywhere. 3.2. 数据库的选择 3.2.1. Web应用程序开发环境—SQLserver数据库 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。SQL Server 2000是Microsoft公司于2000年推出的最新版本。 SQL Server 特点:   1.真正的客户机/服务器体系结构。   2.图形化用户界面,使系统管理和数据库管理更加直观、简单。   3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。   4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。   5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。   6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web上。   7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。   SQL Server 2000与以前版本相比较,又具有以下新特性 :   1.支持XML(Extensive Markup Language,扩展标记语言)   2.强大的基于Web的分析   3.支持OLE DB和多种查询   4.支持分布式的分区视图   安装、运行SQL Server 2000的硬件需求   (1)计算机   Inter及其兼容计算机,Pentium 166Mz或者更高处理器或DEC Alpha和其兼容系统。   (2)内存(RAM)   企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存。   (3)硬盘空间   完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。 3.3. 开发工具的选择 MyEclipse,Deamweare,选择SQLserver作为后台的数据库,选择JAVA、JSP、JavaScript、Html作为应用程序开发工具,运用Tomcat服务器技术,整个系统完全基于B/S (Browser/Server)模式进行设计。 1、Tomcat应用服务器 目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。 Tomcat也具有传统的Web服务器的功能:处理Html。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。 2、 B/S 开发模式 伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。 过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题: 系统安装、调试、维护和升级困难。由于客户端的硬件配置可能存在差异,软件环能各不相同,因此,在安装,必须对每一个客户端分别进行配置,同样,在软件升级也要对客户端分别处理。 B/S模式带来了巨大的好处: 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应用程序在部署、升级、维护,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。 良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。 第四章 系统设计 4.1开发框架技术介绍 对于框架技术,我们采用Struts+ajax的整合! Struts是应用比较广泛的一种表现层框架 1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速。它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论,并为注册用户写留言,游览注册用户的相册、注册等功能的系统。下面就以两种不同的用户来分析博客网站的需求。 4.2.1注册博友 首先必须在博客首登录填写用户名和密码,这样才能执行一些相关操作,不然就是普通用户只能查看一些信息,而不能发表博文。可以在管理上添加博文的分类,可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自己的签名,在个人管理中注册用户还可以修改自己的个人信息。博文管理,友情链接管理及博文分类管理,用例图2。 图2 博客管理的用例图 在博客主界面中发表博文可以选择博文类型,这样可以更好管理自己的博文。并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。更好交流,在信息代人们通过个人空间沟通也用来但不能在自己的博客主中提交评论和留言。。这样在本系统中就可以为博友提供更多的个人色彩。在管理中添加和删除友情连接。这样博友可以在自己空间中快速定位自己的关心的网站。这样还可以让网友看到自己的一些信息。友情链接及网访问量统计显示:在博客的个人中还提供了推荐给普通网络用户的相关友情链接,此外,对个人的访问量也在随进行统计,并在个人中进行直观的显示。 博客主的用例图如图3所示: 图3 博客主的用例图 4.2.2 普通用户 在博客注册注册成为博客的注册用户,才可以拥有自己独立的空间,进入某一博客查看相关文章信息,可以随对自己所感兴趣的文章发表评论,同也可以查看到其他人针对该博文的评论。普通用户在阅读博文可以在最后留下自己的一些评论。他也可以留下更多的信息。这样他可以写留言。这样他留下的信息就更快地被博友所看到。普通用户进入博友的用例图如图4所示: 图4上网博友在博客主的用例图 普通网友可以搜索自己关心的一些数据。并且在搜索结果中提供在结果范围内再次搜索。这样就可以将范围缩小。首向注册用户提供登陆模块,注册用户在博客网站首跟上网网友一样可以查看博客和博文推荐。上网网友可以注册成为博客用户,拥有自己独立的空间。这一模块的用例图如图5所示: 图5 博客首的用例图 4.3 功能模块介绍 4.3.1 博客注册登录管理模块 博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。 该功能模块实现了以下几个子功能。 (1)新博客在线注册。 (2)博客登录管理。 (3)跳转到博客主。 只有进行登录并通过身份验证的用户,才可以在个人博客发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客中发表日志,更不允许对博客信息进行管理维护。 该模块实现新博客的注册及登录验证功能。其中,注册新博客会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用将及给出提示。注册成功的博客登录,会随根据博客输入的登录信息进行提示,如用户名错误或者密码错误。 4.3.2 博客及文章检索查询模块 博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同对日志的评论信息、博客推荐也能够及反馈给网络用户。 该功能模块实现了以下几个子功能。 (1)热门博客推荐。 (2)最新博客日志推荐。 (3)日志信息关键字搜索。 该模块能够在网中随提供在线的最新日志信息。该信息需要定期更新,网络用户可以随获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客进行日志的阅读,并和博客进行交流互动。 为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个来寻找所需的日志信息。 4.3.3博客显示模块 当网络用户进入某个人博客主后,在该中将提供博客日志列表的显示,同为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客中发表评论及留言。 该功能模块实现了如下几个子功能。 (1)用户可以分查看对应的日志内容及评论信息。 (2)用户可以针对日志内容发表评论。 (3)用户可以针对博客进行留言。 (4)用户可以分类查看日志内容。 在该模块中还提供了博客统计信息,日志、评论及留言信息分显示等方便用户的显示效果。 4.3.4 博客个人维护管理模块 博客个人维护管理模块用于实现用户对博客个人主及相关信息的动态管理。 该功能模块实现了如下几个子功能: (1)日志及日志分类管理。 (2)评论及留言管理。 (3)个人基本信息维护管理。 借助该模块,用户可以随对个人博客主中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。 4.4 系统分析 本系统采用严格的J2 EE 应用结构,主要有如下几个分层。 1. 表现层:由JSP 组成。 2. MVC 层:使用Struts框架。 3. 业务逻辑层:主要由Spring loC 容器管理的业务逻辑组件组成。 4. DAO 层:由7 个DAO 组件组成,实现类必须继承Spring提供的HibernateDaoSupport。 5. Hibernate 持久层:由7 个PO 组成,并在Hibernate Session 管理下,完成数据库访问。 6. 数据库服务层:使用MySQL 数据库存储持久化数据。 系统的具体分层如图5 所示。 图6 系统结构图 在图6 黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件,都由Spring IOC 容器负责生成,并管理组件的实例(实例必须是单身模式的,本系统中的bean基本上是单身的)。 4.3.1系统架构说明 本系统不仅严格按MVC 模式设计,还按J2 EE 分层设计,将中间层严格分成业务逻辑层、DAO 层及数据持久层等。MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。表现层采用传统JSP 技术。 本系统采用的是典型的J2EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。Jsp广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate ,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web 层,就是MVC 模式里面的C,负责逻辑层和表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。 Service 层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO 层为基础,通过对DAO 组件的正面模式包装,完成系统所要求的业务逻辑。 DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。 PO ,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate 作为ORM 框架。Spring 的作用贯穿了整个中间层,将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据。 通过使用Hibernate 持久层,可以避免使用传统的JDBC 操作数据库,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库。保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernte 对PO对象持久化操作,不管插入还是查询都是通过PO。 4.3.2实现DAO 层 DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在不同的数据库之间轻易切换,底层的数据库实现对于业务逻辑组件是透明的。数据库移植仅仅影响DAO 层,不同数据库的切换不会影响业务逻辑组件,因此提高了系统的可复用性。 对于不同的持久层技术, Spring 的DAO 提供一个DAO 模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。Spring 为Hibernate 提供的DAO 支持类是: HibernateDaoSupport。 4.3.3 DAO组件的定义 DAO 组件提供了各持久化对象的基本的CRUD 操作。而在DAO 接口里则对DAO组件包含的各种CRUD 方法提供了声明,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合。由于DAO 组件中的方法不是开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用 的。 • get: 根据主键加载持久化实例。 • saveor update: 保存或更新持久化实例。 • remove: 删除持久化实例。 上面涉及了7个PO,这样我们必须设计7个对应的PODao 7个Dao必须继承BaseDao 这个BaseDao 有对接口的一些基本的CURD操作。7个Dao 如下。LinksDao ,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。这7个Dao 分别封装对自己的持久化对象的一些操作。 4.3.4 部署DAO 层 HibernateDaoSupport类只需要一个SessionFactory 属性,即可完成数据库访问。SessionFactroy创建Session,而数据库的CRUD操作都是有Session 完成,并将查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据库的访问。 第五章 数据库设计 5.1定义(数据词典) 1、数据库表名的定义使用:重点字_table;重点字可以是多个英文单词的组合,从组合的第二单词起首字母大写,字段命名是能表达字段内容的英文单词的组合,组合方式同表名重点字相同。 2、NN 表示not null 不填表可为空。 3、数据类型不使用固定数据库的类型,标识大众类型,如字符串、字符、数字等。这样在更改数据库需求的数据是可移植的 4、输写数据表在数据库中的物理名称,可用自己熟悉的语言再定义表名称,方便沟通。 5、长度定义又数据类型决定:如字符串可选8000以下,数字可在50位之间,字符只允许一位。 6、输入方式表示数据的来源:生成表由程序或数据库的索引自动生成,而不需人工录入;输入表示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设定的,它由程序自动获取。 5.2主要表结构如下 1. 表[blogs]日志数据表 字段名 类型 说明 blogid Int(10) 日志的ID title text 日志标题 pubtime Int(11) 日志发表间 authorid Int(8) 日志作者的UID replies Int(8) 日志的评论数 tbs Int(8) 日志的trackback数 views Int(8) 日志的查看次数 category Int(3) 日志所属的分类的ID content mediumtext 日志正文内容 property Int(1) 日志的属性 0 公开日志 1 锁定日志 2 隐藏日志 3 一般草稿 2.表[user]博友登陆信息表 字段名 类型 说明 userid Int(10) 博友ID nicheng Text 博友在博客里的称呼 username text 登陆用户名 password text 登陆密码 3.表[register]用户数据表 字段名 类型 说明 userid Int(8) 登陆需要用到的用户名 username text 用户昵称 userpwd Int(8) 登陆密码 regtime Int(11) 注册间 usergroup Int(2) 所属的用户组ID email text 用户email qq text Qq号 msn text 用户msn gender text 用户性别 第六章 主要功能的实现 6.1 登录控制: if(this.session().getAttribute("rand")!=null){//检验随机数是否为空 if(this.checkCode.equals(this.session().getAttribute("rand").toString())){//比较随机数 uservo=userbo.queryUserByINfo(uservo);//检验用户信息并将信息返回 if(uservo!=null){//看用户是否存在 this.setUserpurview(uservo.getPurviewId());//设置用户权限 this.session().setAttribute("user", uservo);//将用户信息放在session中 return SUCCESS;//返回用户主界面 }else{ return ERROR;返回到失败} }else{return ERROR; }}else{ return ERROR; } 6.2 Ajax 读取txt格式数据 function ajax_function(var1,var2){ var xmlHttp = null; //创建xmlhttprequest try { // Firefox, Opera 8.0+, Safari 对不同浏览器常见不同对象 xmlHttp=new XMLHttpRequest(); } catch (e) { try { // Internet Explorer xmlHttp=new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xmlHttp=new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { alert('Your browser does not support AJAX!'); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { var someDiv = document.getElementById('someDiv'); someDiv.innerHTML=xmlHttp.responseText; } } xmlHttp.open('GET','www/index.jsp?param1='+var1+'¶m2='+var2,true); xmlHttp.send(null); } 6.3 系统架构与数据库的连接 由于我们开发是利用MVC的设计模式,所以在此我们的数据库连接是封存在M中的,即只要我们和M层连接上,就已经连接上数据库了。 Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。我们只需在hibernate.cfg.xml中配置以下语句即可: sa jdbc:microsoft:sqlserver://localhost:1035;DatabaseName=webexamine org.hibernate.dialect.SQLServerDialect sqlserver2000 aaaaaaaa com.microsoft.jdbc.sqlserver.SQLServerDriver org.hibernate.dialect.HSQLDialect true 其实我们在这里配置了一个数据连接,以保证系统的正常运行,我们需要使用proxool连接池,我们经测试,分别用proxool、tomcat JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取,结果显示proxool的性能要优于tomcat JNDI,而Hibernate自带的就更不用提了,差很远。依次为:39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。 6.4数据的备份与还原 我们根据Mysql数据库提供的backup(备份)命令及restore(恢复)命令,进行数据库的备份与还原,在连接数据库后,我们在需要备份和还原的地方加入以下语句: backup database to disk='备份文件名' restore database from disk='备份文件名' 然后发送给数据库的管理对象进行数据还原与备份。 在知道了数据库备份与还原的接口后,用JAVA进行具体的连接,这里采用JAVA直连的方 法,部分代码如下: try{ String user="sa";//连接sqlserver2000数据库登陆名 String password="aaaaaaaa";//连接sqlserver2000数据库密码 String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//连接数据库的驱动字符串 String connStr="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webexamine";//注册连接字符串 Connection con=null; Class.forName( sDBDriver);//注册数据库驱动 con = Driver Manager.getConnection(connStr ,user,password);//获取数据库连接 String sql="backup database xncsims to disk='d:\\xncback.dat'";//备份数据库,还原数据库和着类似,只是将这句变为还原的语句 st=con.createStatement();//创建发送对象 rs=st.executeQuery(sql);//这里就是把你的SQL语句发到数据库执行 }catch(SQLException e){ System.out.println(e.toString());} catch(Exception e){ System.out.println(e.toString());} 6.4部分效果预览图 主 留言界面
最新最完美的高仿hao123程序,后台完整,经本人多次修改完善,经更多网友的需要上传给大家使用。 本程序有动态版本和静态版本, 按各自需要下载吧。   最新完整仿hao123带后台管理网址导航V1.1 2012-5-16 增加站长统计程序及图标。  2012-5-16 美化界面。  2012-5-16 增加最新新闻资讯。  2012-5-16 修正后台管理全局设置不能保存BUG。  2012-4-9 增加IP购买。  2012-4-9 增加分享工具条。  2012-4-9 增加下角话费充值条  2012-4-9 支持二级目录,为站长节省空间  2012-2-27 再次与123同步  2011-11-7 新增折扣分类。  2011-10-24 同步wz123.net首间、天气的显示方式。  2011-10-14 新增实用工具、彩票、音乐、小游戏聚合分类。  2011-9-30 重新整理了分类。  2011-5-8 增加电影分类,自动调用wz123.net电影数据。修复军事、旅游、酷站 链接名。  2011-4-2 增加连续剧分类,自动调用wz123.net连续剧数据。  2011-4-1 改进天气自动调用weather.com.cn数据。  2011-1-10 增加设计、微博分类,同步分类排序。  2011-1-10 同步天气预报数据,自动获取IP显示城市天气。  2010-11-8 增加笑话分类,同步分类排序。  2010-11-7 修改163与126邮箱登录自动跳转官网,修复子目录返回首链接。  2010-10-20 最新同步团购分类。  2010-7-28 最新同步wz123.net清新绿风格。  默认用户:admin 默认密码: admin888
动易SiteFactory CMS是业界首款基于微软.NET2.0平台,采用ASP.NET 2.0进行分层开发的内容管理系统,具有灵活的产品架构、严密的安全性、无限的扩展性和伸缩性,能够高效构建起各种信息资讯类网站、企业内部知识网站、企业信息/产品展示门户网站、军区内网等多种网站应用型平台。 动易SiteFactory CMS 6.2.0 更新日志:2020-03-11新增:●新增标签安全配置,更好地控制含supersql参数的标签的查询权限。优化:●修改回源IP清单字段填写规则,可以填写比如192.168.1.*表示192.168.1.1~192.168.1.254的IP段;●修改包含supersql参数的标签,尽可能地用其他参数类型替代supersql;●增加验证码的复杂度,更好地防止被识别。修复:●修复会员修改密码后大写字母变小写导致登录出错的bug;●修复一键排版小于大于号括起来的内容被删除的bug;●修复编辑文章标题颜色选择框不显示的bug;●修复退稿按钮被禁用的bug;●修复内容过滤,如果iframe或embed标签的地址为'./'或'../'开头的相对地址报错的bug;●修复后台模板选择能通过修改参数跳转到其他目录下,导致可以遍历网站其他目录的bug;●修复后台导入会员,如果导入空白或Excel格式不正确会出错的bug;●修复问答中心验证码输入错误后前台没有自动刷新,导致再次输入提示验证码错误的bug。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧