css+jsp tag实现树型菜单
我们的开发方式是由demo人员完成系统的静态页面,并通过css进行美化。
为最大可能利用美工完成的静态页面,我们需要尽量减少对原html的冲击,因此我首先想到的Freemarker。
但是Freemarker最终让我空喜一场,最终自定义了一个可以递归嵌套的jsp tag来达到这个目的。
下面是解决这个问题的过程:
用css模版sdmenu来实现系统菜单,静态html如下格式:
<div style="float: left" id="my_menu" class="sdmenu">
<div>
<span>Email Template</span>
<a href="#" target="mainFrame">Welcome Notes</a>
<a href="#" target="mainFrame">Deposit Reminder</a>
<a href="#" target="mainFrame">Final Payment</a>
<a href="#" target="mainFrame">Recommendation Message</a>
</div>
<div>
<span>Parameter Manage</span>
<a href="#" target="mainFrame">List all parameters</a>
</div>
……
</div>
开始准备用Freemarker来搞定,设计Freemarker模版格式为:(定义desc是x对象下面个一个list属性)
<#list listObj as x>
x
<#list ${x.desc} as y>
y
</#list>
</#list>
原来担心<#list>,不能支持嵌套,结果用1..count的循环方式,发现完全可以嵌套循环,暗喜。
但是很快,不幸的事情还是出现了,Freemarker不支持<#list ${x.desc} as y>这样写。
一时愤怒,准备改写Freemarker,但是想想改了,也不知道怎么提交到Freemarker项目中。
还是不做那根葱算了。
纠结之后,决定自定义tag来解决这个问题。
先设计tag的写法
<ui:list listName="list" scope="request">
<div>
<span>__menuName__</span>
<ui:list listName="sublist" scope="parent
相关文档:
JSP源代码
<%
//获取系统时间
//String ddate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);
  ......
开发环境配置
一、开发环境配置
第一步:下载j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.5.0 Documentation,然后到tomcat官方站点(http://jakarta.apache.org/site/downloads/do ......
大家总是不喜欢看到<%和%>在jsp页面上,其实我们可以使用比较优雅的xml方式来表达
1,隐含的注释
JSP语法:<%-- 内容 --%>
XML语法:无
2,变量或函数的声明
JSP语法:<%! declaration;[declaration;]+... %>
例如:
<%!
int i=0;int a,b,c;
Color red=new Color( ......
元问题来自JSP与Servlet的比较。
我们知道Servlet能够使得JAVA代码不用像Applet那样在客户浏览器中运行,它会在你控制的一个应用服务器上运行。在没有什么背景知识的前提下我默认这是一种规则,即Servlet就是这样发展起来的。在实际应用中当我们请求一个JSP页面的时候,JSP首先被转 ......
方法一:在servlet的init()方法中缓存数据
当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet
的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系
统性能。
......