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
相关文档:
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
序号 方 法 说 明
1 object getAttribute(String name) 返回指定属性的属性值
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
3 String getCharacterEncodin ......
一般jsp脚本都是在<%= %>中输出东西,但是如果要提示的话,则必须后面要加一个空格,就像那个符号一样,不然的话打的提示不会出来
还有一个事关于路径问题:必须要在后面加上"/"这个反斜杠
myeclipse 中有一个snippets视图,这个里面提供一些已经写好了的代码,我们也可以将自己的一些代码添加到snippets中,右键,a ......
<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>
<%@page import="java.sql.*;" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
&n ......
大家总是不喜欢看到<%和%>在jsp页面上,其实我们可以使用比较优雅的xml方式来表达
1,隐含的注释
JSP语法:<%-- 内容 --%>
XML语法:无
2,变量或函数的声明
JSP语法:<%! declaration;[declaration;]+... %>
例如:
<%!
int i=0;int a,b,c;
Color red=new Color( ......
产生验证码图片的文件image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//
给定范围获得随机颜色
Random random = new ......