用在一个实现将JSP动态页面转为静态的方案(转帖)中后面的那种方法基本上完成了本站的动态页面静态化工作,下面是一些总结和疑问。希望能给碰到类似情况的朋友一点启发。也希望有朋友能够启发一下我在文中提到的疑问。谢谢。
1、页面菜单上部的用户信息是用iframe嵌入的,像下面:
<!-- show user state with iframe framework -->
<iframe frameborder="0" name="user_state" width="771" height="30" scrolling="no" src="/common/userState.jsp"></iframe>
|
|
/common/userState.jsp是从当前session中取出用户的相关信息显示出来。
不过,我发现: 在firefox中位置不动的信息条在IE中却可以用鼠标上下移动,而且,始终位置在底部,还把字脚给挡住了,搞不懂怎么做了?(注:这个问题已经解决,见:怎样控制iframe内嵌网页的位置
,2006年12月29日10:30分, littlebat)
2、显示日记或目标的帖子下面的游客回复框也是用iframe嵌入的,像下面:
<iframe frameborder="0" name="guest_reply" width="771" height="456" align="center" scrolling="auto" src="/common/guestReply.jsp?parentID=<c:out value=""/>&defaultTitle=<c:out value=""/> "></iframe>
|
|
这个有几点自己的总结:
1)、url中文参数的传递要编码:如:
<%
//encode default title
String oriTitle = "re:" + ((ArticleInfo)request.getAttribute("aGoal")).getArticleName();
String encodedDefaultTitle= URLEncoder.encode(oriTitle, "UTF-8");
pageContext.setAttribute("encodedDefaultTitle", encodedDefaultTitle);
%>
|
|
使用时再解码,如:
String encodedDefaultTitle = request.getParameter("defaultTitle");
String defaultTitle = URLDecoder.decode(encodedDefaultTitle, "UTF-8");
pageContext.setAttribute("defaultTitle", defaultTitle);
|
|
2),当前页面处理的信息可以放入pageContext中(如:pageContext.setAttribute("defaultTitle", defaultTitle);),它的作用域应该是当前页面,可以用 <c:out value=""/> 之类的技术取出来,jsp的方法不知道。
3),为了使嵌入的jsp页面中的form提交后能够返回它的被嵌入的_parent页面,可以在form提交时加 target="_parent"解决,如下:
<html-el:form action="postGuestArtAction.do?typeID=3&goalID=" target="_parent" method="POST">
...
</html-el:form>
|
|
3、页面计数:
用script做的,如下:
<script language="javascript" src="/count.do?artID=<c:out value=""/>"></script>
|
|
疑问:
1)、怎样在script中调用程序,得到当前页面的实时点击数并写入页面的合适位置?上面的功能只能计数,然后统一生成页面更新计数;
2)、本来上面的count.do可以用count.jsp来做的,也许这样还要好点,但是我不知道怎样在jsp中调用struts中的数据源?用jdbc连接常常形成连接数超出空间允许的最大值而不能正确计数;
在struts的action中这样调用数据源:javax.sql.DataSource ds = getDataSource(request, "myDataSourceName");
4)、当用*.jsp后缀名作为静态文件时,提交新日记或目标后,第一次查看会有编译等待jsp的时间,但是写日记和目标毕竟是很少时候,99.99%的时候还是在看的。选用*.jsp是我动过脑子的,最终要是证明错了我也不后悔。因为,我曾经努力过。
4、因为,听说搜索引擎会跟进frame中的框架页面,也不知道会不会跟进iframe的页面,把那两个动态的jsp页面的url写进了robots.txt中禁止搜索引擎抓取这些没有实际意义的东西。像下面:
User-agent: *
Disallow: /common/userState.jsp
Disallow: /common/guestReply.jsp
Disallow: /count.do
|
|
本站完整的robots.txt见:http://java.learndiary.com/robots.txt。
里面主要禁止搜索引擎访问一些个人才会用的功能,我是第一次写robots.txt,哪位朋友看了发现有问题请一定给我提示一下,谢谢。