jsp自定义标签

<--自定义标签.tld文件-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
        "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">

<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>Tag for Travel Server</shortname>
	<info>
		The tag library of Travel Server
   	</info>
	<tag>
		<name>idName</name>
		<tagclass>com.chinapay.travelconsole.tools.tag.IdNameTag</tagclass>
		<bodycontent>JSP</bodycontent>
		<info>idName tag</info>
		<attribute>
			<name>id</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>type</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>

</taglib>
 
 
 
<--.xml文件配置-->
<taglib>
	<taglib-uri>/tags/travelCommon</taglib-uri>
	<taglib-location>/WEB-INF/tld/travel-common.tld</taglib-location>
</taglib>
 
 
 
 
<---com.chinapay.travelconsole.tools.tag.IdNameTag java类-->
 

public class IdNameTag extends TagSupport {

 private static final long serialVersionUID = -6270472760008331633L;

 /**
  * 数据ID。根据此id获取name
  */
 private String id;

 /**
  * 获取的数据源。对应的类。
  */
 private String type;

 public void setId(String id) {
  this.id = id;
 }

 public void setType(String type) {
  this.type = type;
 }

 public int doStartTag() throws JspException {
  try {
   pageContext.getOut().write(getTagBody());
   return SKIP_BODY;
  } catch (IOException ioe) {
   throw new JspException(ioe.getMessage());
  }
 }

 public int doEndTag() throws JspException {
  return EVAL_PAGE;
 }

 private String getTagBody() throws JspException {
  String name = "";
  if (IdType.AGENT_CONFIG.equals(type)) {
   AgentConfigBean bean = AgentConfigDAO.getAgentConfigBean(id);
   if (bean != null) {
    name = bean.getName();
   }
  } else if (IdType.AIRPORT_CODE.equals(type)) {
   AirportcodeBean bean = AirportcodeDAO.getAirportcodeBean(id);
   if (bean != null) {
    name = bean.getAirportZhShort();
   }
  } else if (IdType.CITYS.equals(type)) {
   AirportcodeBean bean = AirportcodeDAO.getAirportcodeBean(id);
   if (bean != null) {
    String belongtocity = bean.getBelongtocity();
    CitysBean citysbean = CitysDAO.getCitysBean(belongtocity);
    if (citysbean != null) {
     name = citysbean.getCitynameZh();
    }
   }
  } else if (IdType.NATION.equals(type)) {
   NationBean bean = NationDAO.getNationBean(id);
   if (bean != null) {
    name = bean.getNameZh();
   }
  } else if (IdType.GBPROV.equals(type)) {
   GbProvDAO provdao = new GbProvDAO();
   name = provdao.getProvName(id);
  } else if (IdType.GBCITY.equals(type)) {
   GbCityDAO citydao = new GbCityDAO();
   String[] code = toCode(id);
   name = citydao.getCityName(code[0], code[1]);
  } else if (IdType.GBDIST.equals(type)) {
   GbDistDAO distdao = new GbDistDAO();
   String[] code = toCode(id);
   name = distdao.getDistName(code[0], code[1], code[2]);
  } else if (IdType.AGENT.equals(type)) {
   if ("HuiTongKeService".equals(id)) {
    name = "汇通客";
   }
  } else if (IdType.BRAND.equals(type)) {
   HotelBrandDAO dao = new HotelBrandDAO();
   name = dao.getHotelBrandName(id);
  } else if (IdType.HOTEL_NAME.equals(type)) {
   name = HotelDAO.getHotelName(id);
  }
  return name;
 }

 public static String[] toCode(String key) {
  if (StringUtils.isNotEmpty(key)) {
   String[] code = key.split("\\|");
   return code;
  }
  return null;
 }

 public static String tokey(String provCode, String cityCode) {
  StringBuffer key = new StringBuffer();
  if (StringUtils.isNotEmpty(provCode)) {
   key.append(provCode);
  } else {
   key.append("null");
  }
  if (StringUtils.isNotEmpty(cityCode)) {
   key.append("|").append(cityCode);
  } else {
   key.append("|").append("null");
  }
  return key.toString();
 }

 public static String tokey(String provCode, String cityCode, String distCode) {
  StringBuffer key = new StringBuffer();
  if (StringUtils.isNotEmpty(provCode)) {
   key.append(provCode);
  } else {
   key.append("|").append("null");
  }
  if (StringUtils.isNotEmpty(cityCode)) {
   key.append("|").append(cityCode);
  } else {
   key.append("|").append("null");
  }
  if (StringUtils.isNotEmpty(distCode)) {
   key.append("|").append(distCode);
  } else {
   key.append("|").append("null");
  }
  return key.toString();
 }
}

 

public final class IdType {

 /** 代理商 */
 public final static String AGENT_CONFIG = "0";
 /** 机场 */
 public final static String AIRPORT_CODE = "1";
 /** 城市名称 */
 public final static String CITYS = "2";
 /** 国籍名称 */
 public final static String NATION = "3";
 /** 省份 **/
 public final static String GBPROV = "4";
 /** 城市 **/
 public final static String GBCITY = "5";
 /** 区县 **/
 public final static String GBDIST = "6";
 /** 代理商 **/
 public final static String AGENT = "7";
 /** 所属品牌 **/
 public final static String BRAND = "8";
 /** 酒店名称 **/
 public final static String HOTEL_NAME = "9";
}




(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值