关于浏览器地址栏的一些遐想

在blogjava查看别人的文章的时候出现的是www.blogjava.net/XXX/XXXX.html
对于这个html自己总是感觉是个静态的网页,
后来询问别人才了解到这是用了URL重写的技术,
于是便查找相关资料。
jsp的URL重写可参看http://www.blogjava.net/zs7456/RecentComments.html


今天看书的时候看到了两个另外隐藏用户输入的办法。

一个是使用隐藏域,还有个一个就是使用cookie。

使用隐藏域的方法也算是简单吧。

如你如以前的页面代码为

<intput type="text" name="firstname" size="40">

<input type="submit" value="submit">

<input type="reset" value="clear">

只需要在第一行前加入

<input type="hidden" name="accountnumber" value="1234">

方法很简单,理解就可以使用,不过这只能在保持少量的信息需求的时候才这样做,尽管很简单使用隐藏域很简单。但是如果程序中需要大量的会话状态的时候,可能会引发性能问题。因为在会话期间,会话状态必须包括在每个送往浏览器的页面上,而不管会话状态是否在页面上扮演一个很活跃的角色。


============================================================
以前的想法。
用户写完一篇文章在存储的时候就将其转换为静态的网页。
或来想了一下,

这么大的一个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<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 3  <filter>
 4    <filter-name>UrlRewriteFilter</filter-name>
 5    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
 6    <init-param>
 7      <param-name>logLevel</param-name>
 8      <param-value>WARN</param-value>
 9    </init-param>
10  </filter>
11  <filter-mapping>
12    <filter-name>UrlRewriteFilter</filter-name>
13    <url-pattern>/*</url-pattern>
14  </filter-mapping>
15  <servlet>
16    <servlet-name>action</servlet-name>
17    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
18    <init-param>
19      <param-name>config</param-name>
20      <param-value>/WEB-INF/struts-config.xml</param-value>
21    </init-param>
22    <init-param>
23      <param-name>debug</param-name>
24      <param-value>3</param-value>
25    </init-param>
26    <init-param>
27      <param-name>detail</param-name>
28      <param-value>3</param-value>
29    </init-param>
30    <load-on-startup>0</load-on-startup>
31  </servlet>
32  <servlet-mapping>
33    <servlet-name>action</servlet-name>
34    <url-pattern>*.do</url-pattern>
35  </servlet-mapping>
36</web-app>


然后再随便建立几个jsp页面,如:
MyJsp.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<base href="<%=basePath%>">
    
    
<title>My JSP 'MyJsp.jsp' starting page</title>
    
    
<meta http-equiv="pragma" content="no-cache">
    
<meta http-equiv="cache-control" content="no-cache">
    
<meta http-equiv="expires" content="0">    
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="This is my page">
    
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    
-->

  
</head>
  
  
<body>
  
<% 
      
String a = request.getParameter("id");
  
%>
    
<%=basePath %> <br>
    
<%
        
if(a.equals("123"))
        {
            out.println(
"哈哈");
        }
        
else
        {
            out.println(
"再试一次!");
        }
     
%>
  
</body>
</html>

接着在urlrewrite.xml里配置一下路径

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd"
>

<!--

    Configuration file for UrlRewriteFilter
    http://tuckey.org/urlrewrite/

-->
<urlrewrite>

    
<rule>
        
<note>
            The rule means that requests to /test/status/ will be redirected to /rewrite-status
            the url will be rewritten.
        
</note>
        
<from>/test/status/</from>
        
<to type="redirect">%{context-path}/rewrite-status</to>
    
</rule>


    
<outbound-rule>
        
<note>
            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.
        
</note>
        
<from>/rewrite-status</from>
        
<to>/test/status/</to>
    
</outbound-rule>
        
<rule>
            
<from>/test/([0-9]+)</from>
            
<to>/MyJsp.jsp?id=$1</to>
        
</rule>
</urlrewrite>


启动服务器,然后输入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 阅读(487) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli