在blogjava查看别人的文章的时候出现的是www.blogjava.net/XXX/XXXX.html。
对于这个html自己总是感觉是个静态的网页,
后来询问别人才了解到这是用了URL重写的技术,
于是便查找相关资料。
jsp的URL重写可参看http://www.blogjava.net/zs7456/RecentComments.html
今天看书的时候看到了两个另外隐藏用户输入的办法。
一个是使用隐藏域,还有个一个就是使用cookie。
使用隐藏域的方法也算是简单吧。
如你如以前的页面代码为
只需要在第一行前加入
方法很简单,理解就可以使用,不过这只能在保持少量的信息需求的时候才这样做,尽管很简单使用隐藏域很简单。但是如果程序中需要大量的会话状态的时候,可能会引发性能问题。因为在会话期间,会话状态必须包括在每个送往浏览器的页面上,而不管会话状态是否在页面上扮演一个很活跃的角色。
============================================================
以前的想法。
用户写完一篇文章在存储的时候就将其转换为静态的网页。
或来想了一下,
这么大的一个blog至少有几十万的文章,不可能全部用静态的网页。
那样服务器的检索将会是一件难以想象的事情。
再说啦,这样做也不利于管理啦。
生成的静态网站如果说用户换了一个风格的话,那么该怎么办呢?
说说url重写的好处吧,首先在一个地址栏上不用重写技术的话,人们就可以看到用户所提交的检索信息,
如www.blogjava.net/duduli/java?id=xxxx 这样的话xxxx就是提交检索的信息,
其余的都不说就从安全方面就加强了。
还是把别人的写的重点拿过来吧。
-----------------------------------------------------------------------------------------------
原帖:
在网上看到了一则URL重写的贴子,感觉比较适合我这样的情况,应用起来简单。然后自己试着写了一个例子,居然成功了,而在Struts里不知道怎么实现,实现转发的时候好象没什么用了。*.do好象不能实现映射
以下是相关代码,若有不正之处,欢迎大家指正!
首先要去下载一个urlrewritefilter-2.6.zip,然后把它解压到WEB-INF下,然后配置一下web.xml
1
<?xml version="1.0" encoding="UTF-8"?>2
3
4
UrlRewriteFilter5
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter6
7
logLevel8
WARN9
10
11
12
UrlRewriteFilter13
/*14
15
16
action17
org.apache.struts.action.ActionServlet18
19
config20
/WEB-INF/struts-config.xml21
22
23
debug24
325
26
27
detail28
329
30
031
32
33
action34
*.do35
36
然后再随便建立几个jsp页面,如:
MyJsp.jsp
@ page language="java"import="java.util.*"pageEncoding="GBK"%>
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
![4f1150b881333f12a311ae9ef34da474.png](https://i-blog.csdnimg.cn/blog_migrate/b2459b5195c09ae0fd014c54f2df42a3.png)
![4f1150b881333f12a311ae9ef34da474.png](https://i-blog.csdnimg.cn/blog_migrate/b2459b5195c09ae0fd014c54f2df42a3.png)
![4f1150b881333f12a311ae9ef34da474.png](https://i-blog.csdnimg.cn/blog_migrate/b2459b5195c09ae0fd014c54f2df42a3.png)
![1fa987a29c6482f53d401256f96355eb.png](https://i-blog.csdnimg.cn/blog_migrate/9f51b3d561dad4748bcd2757f90d3af2.png)
Stringa=request.getParameter("id");
%>
if(a.equals("123"))
{
out.println("哈哈");
}
else
{
out.println("再试一次!");
}
%>
接着在urlrewrite.xml里配置一下路径
<?xml version="1.0" encoding="utf-8"?>
urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
The rule means that requests to /test/status/ will be redirected to /rewrite-status
the url will be rewritten.
/test/status/
%{context-path}/rewrite-status
The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)
the url /rewrite-status will be rewritten to /test/status/.
The above rule and this outbound-rule means that end users should never see the
url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
in your pages.
/rewrite-status
/test/status/
/test/([0-9]+)
/MyJsp.jsp?id=$1
启动服务器,然后输入http://localhost:8080/test/123 ,那么就可以显示了,而实际上读取的路径是http://localhost:8080/MyJsp.jsp?id=123
==============================================================================
在此声明,此文章大部分为http://www.blogjava.net/zs7456/RecentComments.html 在此只作为自己的笔记,以后学习之用。
posted on 2009-01-08 15:16 duduli 阅读(438) 评论(0) 编辑 收藏 所属分类: java