JavaWeb_jsp_EL表达式_i18n
来源:互联网 发布:五笔输入法下载mac版 编辑:程序博客网 时间:2024/05/20 08:27
HTMLFilter位于 包cn.itcast.fn
package cn.itcast.fn;public class HTMLFilter { /*想要成为EL函数,需完成以下两个步骤 * 1,写个类,方法必须是静态的! * 2,在WEB-INF下建一个tld文件中描一把(抄头抄屁股)(方法签名) * 3,在jsp页面中用taglib指令导入uri*/ public static String filter(String message) { if (message == null) return (null); char content[] = new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuffer result = new StringBuffer(content.length + 50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("<"); break; case '>': result.append(">"); break; case '&': result.append("&"); break; case '"': result.append("""); break; default: result.append(content[i]); } } return (result.toString()); }}MyEL位于 包cn.itcast.fn
package cn.itcast.fn;public class MyEL {/*自定义EL函数,虽无法代替有关web有关的java代码 * 1,静态方法 * 2,tld文件描一把 * 3,jsp中taglib导入*/public static String add(String s1,String s2){return s1+s2;}}mypro.properties位于 包cn.itcast.resource
username=\u7528\u6237\u540Dpassword=\u5BC6\u7801submit=\u63D0\u4EA4context=\u60A8\u4E8E{0,date,full}\u7684{0,time,long},\u6210\u529F\u8D2D\u4E70\u4E86\u4E00\u672C\u7EA2\u697C\u68A6(\u7EA2\u7814\u6240\u6821\u6CE8\u672C\u7B2C\u4E8C\u7248-\u4EBA\u6C11\u6587\u5B66\u51FA\u7248\u793E2005),\u4EF7\u683C\u662F{1,number,currency}
mypro_en.properties位于 包cn.itcast.resource
username=usernamepassword=passwordsubmit=submitcontext={0,date,full}{0,time,long},price is {1,number,currency}
mypro_zh.properties位于 包cn.itcast.resource
username=\u7528\u6237\u540Dpassword=\u5BC6\u7801submit=\u63D0\u4EA4context=\u60A8\u4E8E{0,date,full}\u7684{0,time,long},\u6210\u529F\u8D2D\u4E70\u4E86\u4E00\u672C\u7EA2\u697C\u68A6(\u7EA2\u7814\u6240\u6821\u6CE8\u672C\u7B2C\u4E8C\u7248-\u4EBA\u6C11\u6587\u5B66\u51FA\u7248\u793E2005),\u4EF7\u683C\u662F{1,number,currency}igg.tld位于WebRoot/WEB-INF
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>SimpleTagLibrary</short-name> <uri>/expressionlanguagefunction</uri> <function> <name>filter</name><function-class>cn.itcast.fn.HTMLFilter</function-class><function-signature>java.lang.String filter( java.lang.String )</function-signature> </function> <function> <name>add</name><function-class>cn.itcast.fn.MyEL</function-class><function-signature>java.lang.String add( java.lang.String , java.lang.String)</function-signature> </function></taglib>EL表达式1~4
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="cn.itcast.domain.Person" %><%@ page import="cn.itcast.domain.Address" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>el表达式获取数据</title> </head> <body> <br/>--------获取域中存的数据-----------------<br/> <% String data = "勇晴雯病补雀金裘"; request.setAttribute("data",data); %> ${data} <%--pageContext.findAttribute("data")--%> <% Object obj=pageContext.findAttribute("data"); out.write(obj.toString()); %> <br/>--------获取域中存的javabean的数据-----------------<br/> <% Person p = new Person(); p.setName("小强"); request.setAttribute("p",p); %> ${p.name } <br/>--------获取域中存的javabean中的javabean的数据-----------------<br/> <% Person p1 = new Person(); Address a = new Address(); a.setCity("广州"); p1.setAddress(a); request.setAttribute("p1",p1); %> ${p1.address.city } <br/>--------获取域中存的list集合中的数据-----------------<br/> <% List list = new ArrayList(); list.add(new Person("林黛玉")); list.add(new Person("史湘云")); list.add(new Person("薛宝钗")); request.setAttribute("list",list); %> ${list['0'].name } ${list["1"].name } ${list['2'].name } <br/>--------获取域中map集合中的数据-----------------<br/> <% Map map = new HashMap(); map.put("1",new Person("林黛玉")); map.put("2",new Person("史湘云")); map.put("3",new Person("薛宝钗")); map.put("4",new Person("妙玉")); map.put("5",new Person("探春")); request.setAttribute("map",map); %> ${map['1'].name } ${map['2'].name } ${map["3"].name } <br/>--------其它几个常用的el表达式-----------------<br/> ${pageContext.request.contextPath } <a href="${pageContext.request.contextPath }/index.jsp">点点</a> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>el运算符示例</title> </head> <body> <% request.setAttribute("username","黛玉"); request.setAttribute("password","12345"); %> ${username=='黛玉' && password=='123' } ${username=='黛玉' && password=='12345' } <br/>--------empty运算符-------------<br/> <% request.setAttribute("list1",null); request.setAttribute("list2",new ArrayList()); %> ${empty(list1) } ${empty(list2) } <br/>--------二元运算符-------------<br/> ${user!=null ? user.username : "游客甲" } ${user!=null ? user.username : '游客乙' } <br/>--------二元运算符(数据回显)-------------<br/> <% request.setAttribute("sex","girl"); %> <input type="radio" name="sex" value="boy" ${sex=='boy'?'checked':'' }>男 <input type="radio" name="sex" vlaue="girl" ${sex=='girl'?'checked':'' }>女 <br/>--------对应于jsp页面pageContext对象-------------<br/> ${pageContext} <br/>---------使用el隐式对象访问指定的域-----------<br/> <% pageContext.setAttribute("name","林黛玉"); %> (会先判断name是不是11个隐式对象之一,如果不是再以它为关键字依次到四个域里去找) 四个域里面找:${name } 指定域里面找:${pageScope.name } ${sessionScope.user!=null } ${sessionScope.user==null } <br/>---------获取保存了所有请求参数的Map对象-----------<br/> 如果在地址栏后面加上?name=林黛玉 这个是隐式对象中的重点,做数据回显时经常用! ${param.name } ${paramValues.name[0] } ${paramValues.name[1] } <br/>---------获取请求头-----------<br/> ${header['Accept-Language'] } <br/>--------获取保存所有cookie的Map集合中关键字为JSESSIONID的cookie的名称和值-----------<br/> ${cookie.JSESSIONID.name }<br/> ${cookie.JSESSIONID.value } ${initParam.p_name } ${initParam['p_name'] } ${initParam["p_name"] } </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/WEB-INF/igg.tld" prefix="igg" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>el函数示例</title> </head> <body> /*想要成为EL函数,需完成以下两个步骤 * 1,写个类,方法必须是静态的! * 2,在WEB-INF下建一个tld文件中描一把(抄头抄屁股)(方法签名) * 3,在jsp页面中用taglib指令导入uri*/<br/>---------使用el函数只能移除与web对象无关的代码-----------<br/> ${igg:filter("<a href='http://www.baidu.com'>百度</a>") } </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="cn.itcast.domain.User" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="/WEB-INF/igg.tld" prefix="igg" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>el函数示例</title> </head> <body> aa<br/>---------使用el函数只能移除与web对象无关的代码-----------<br/> ${fn:toLowerCase("ABCDE") } <br/>---------sun公司el函数-----------<br/> ${fn:toLowerCase("DA XIE TO XIAO XIE") } ${fn:toUpperCase("xiao xie 2 da xie") } ---${fn:trim(" ab c") }--- ${fn:length(null) } ${fn:length("") } ${fn:length("0123456789") } <br/> <% List list=new ArrayList(); list.add("埋香冢飞燕泣残红"); list.add("憨湘云醉眠芍药"); list.add("凸碧堂品笛感凄清"); list.add("凹晶馆联诗悲寂寞"); list.add("贾迎春误嫁中山狼"); request.setAttribute("list",list); %> ${fn:length(list) } <c:forEach var="i" begin="0" end="${fn:length(list)-1}" > ${i } : ${list[i] } </c:forEach> ${fn:split("林黛玉|薛宝钗|史湘云","|")[0] } ${fn:split("林黛玉|薛宝钗|史湘云","|")[1] } ${fn:split("林黛玉|薛宝钗|史湘云","|")[2] } <% String[] arr={"www","baidu","com"}; request.setAttribute("arr",arr); %> ${fn:join(arr,".") } 综合一下: ${fn:join(fn:split("林黛玉|薛宝钗|史湘云","|"),"...") } ${fn:indexOf("0123456789","5") } ${fn:indexOf("0123456789","z") } ${fn:indexOf("0123456789","") } fn:contains大小写敏感 ${fn:contains("www.baidu.com","baidu") } ${fn:contains("www.baidu.com","B") } ${fn:contains("www.baidu.com","") } ${fn:contains("www.baidu.com","baidu") } 等价于 ${fn:indexOf("www.baidu.com","baidu")!=-1 } ${fn:containsIgnoreCase("www.baidu.com","B") } <br/>---------应用: el函数回显数据-----------<br/> <% String[] likes={"sing","dance","table-tennis"};// String[] likes=new String[]{"sing","dance","table-tennis"}; request.setAttribute("likes",likes); %> ${fn:join(likes,',') } ${fn:contains(fn:join(likes,','),"sing") } ${fn:contains(fn:join(likes,','),"sing")?'checked':' ' } <input type="checkbox" name="likes" value="sing" ${fn:contains(fn:join(likes,','),"sing")?'checked':' ' }>唱歌 <input type="checkbox" name="likes" value="dance" ${fn:contains(fn:join(likes,','),"dance")?'checked':' ' }>跳舞 <input type="checkbox" name="likes" value="table-tennis" ${fn:contains(fn:join(likes,','),"table-tennis")?'checked':' ' }>乒乓球 <input type="checkbox" name="likes" value="basketball" ${fn:contains(fn:join(likes,','),"basketball")?'checked':' ' }>篮球 <input type="checkbox" name="likes" value="football" ${fn:contains(fn:join(likes,','),"football")?'checked':' ' }>足球 <br/>---------应用: el函数回显数据-----------<br/> ${fn:startsWith("a字符串","a") } ${fn:startsWith("字符串","") } ${fn:endsWith("字符串z","z") } ${fn:replace("old_Stirng","old","new") } 注意fn:substring全是小写,前开后装闭 ${fn:substring("2 is head 4 is end ",2,4) } ${fn:substringAfter("abcde","c") } ${fn:substringBefore("abcde","c") } ${fn:escapeXml("<a href='http://www.baidu.com'>百度</a>") } <% request.setAttribute("user",new User("张三")); %> ${igg:add("welcome :","aaa") } ${user!=null?user.name:' ' } </body></html>i18n 国际化 ( internationalization )
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>i18n国际化</title> </head> <body> <% //ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.resource.mypro",Locale.CHINESE); ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.resource.mypro",request.getLocale()); %> <form action=""> <%=rb.getString("username") %><input type="text" name="username"/> <%=rb.getString("password") %><input type="text" name="password"/> <input type="submit" value="<%=rb.getString("submit") %>"/> <%=rb.getString("context") %> </form> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@page import="java.text.DateFormat"%><%@page import="java.text.NumberFormat"%><%@page import="java.text.MessageFormat"%><%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> <title>i18n国际化</title> </head> <body> <% //ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.resource.mypro",Locale.CHINESE); //ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.resource.mypro",request.getLocale()); %> <a href="${pageContext.request.contextPath }/login_i18n.jsp?language=zh">中文</a> <a href="${pageContext.request.contextPath }/login_i18n.jsp?language=en">english</a> <% String language=request.getParameter("language"); if(language==null || "".equals(language)){ //第一次访问时,默认给中文页面 language="zh"; } Locale loc=new Locale(language); ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.resource.mypro",loc); %> <form action="${pageContext.request.contextPath }/login_i18n.jsp"> <%=rb.getString("username") %><input type="text" name="username"/> <%=rb.getString("password") %><input type="text" name="password"/> <input type="submit" value="<%=rb.getString("submit") %>"/> </form> <br/>--------------下面是静态数据国际化------------------<br/> <% Date date=new Date(); DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA); out.write("date_SHORT_"+df.format(date)+"<br/>"); df=DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA); out.write("date_MEDIUM_"+df.format(date)+"<br/>"); df=DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA); out.write("date_LONG_"+df.format(date)+"<br/>"); df=DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA); out.write("date_FULL_"+df.format(date)+"<br/>"); //date_SHORT_13-12-9 //date_MEDIUM_2013-12-9 //date_LONG_2013年12月9日 //date_FULL_2013年12月9日 星期一 df=DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA); out.write("time_SHORT_"+df.format(date)+"<br/>"); df=DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA); out.write("time_MEDIUM_"+df.format(date)+"<br/>"); df=DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA); out.write("time_LONG_"+df.format(date)+"<br/>"); df=DateFormat.getTimeInstance(DateFormat.FULL,Locale.CHINA); out.write("time_FULL_"+df.format(date)+"<br/>"); //time_SHORT_上午1:50 //time_MEDIUM_1:50:26 //time_LONG_上午01时50分26秒 //time_FULL_上午01时50分26秒 CST %> 字符串解析成对象,注意要对应!DateFormat不是线程安全的! 每条线程都应该有自己的DateFormat实例对象! <% String str="2013年12月9日 星期一 上午01时50分26秒"; DateFormat df_1=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.LONG,Locale.CHINA); Date date_1=df_1.parse(str); out.write(date_1.toLocaleString()); %> <% int price=67; NumberFormat nf=NumberFormat.getCurrencyInstance(Locale.CHINA); out.write(nf.format(price)); //反向解析----字符串解析成对象 String str_1="¥18.67"; Number number=nf.parse(str_1); out.write(number.doubleValue()+""); //百分比解析(小数点第3位将四舍五入) double d=0.1553; nf=NumberFormat.getPercentInstance(Locale.CHINA); out.write(nf.format(d)); %> <% //动态文本:占位符+参数数组 String pattern="时间是{0},日期是{1}"; MessageFormat mf=new MessageFormat(pattern,Locale.CHINA); Object[] obj={"上午01时50分26秒","2013年12月9日 星期一"}; String result=mf.format(obj); out.write(result); //动态文本2:占位符的3种书写格式 String pattern__1="<br/>您于{0,date,full}的{0,time,long},成功购买了一本红楼梦(红研所校注本第二版-人民文学出版社2005),价格是{1,number,currency}"; MessageFormat mf__1=new MessageFormat(pattern__1,Locale.CHINA); String str__1="2013年12月9日 星期一 上午09时50分26秒"; Date date__1=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.LONG,Locale.CHINA).parse(str__1); Object[] obj__1={date__1,new Double(59.70)}; String result__1=mf__1.format(obj__1); out.write(result__1+"<hr/>"); //动态文本3:模式字符串有时候是在框架的properties文件当中 //前面两步是这样。。。后面完全一致! ResourceBundle rb__2=ResourceBundle.getBundle("cn.itcast.resource.mypro",Locale.CHINA); String pattern__2=rb__2.getString("context"); MessageFormat mf__2=new MessageFormat(pattern__2,Locale.CHINA); String str__2="2013年12月9日 星期一 上午09时50分26秒"; Date date__2=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.LONG,Locale.CHINA).parse(str__2); Object[] obj__2={date__2,new Double(59.70)}; String result__2=mf__2.format(obj__2); out.write(result__2); %> </body></html>
- JavaWeb_jsp_EL表达式_i18n
- struts2_大纲04_i18n
- Java学习笔记_I18N&L10N
- IOS_AVFoundation_石头剪刀布_i18n国际化
- 表达式
- 表达式
- 表达式
- 表达式
- 表达式
- 表达式
- 表达式
- 表达式
- 表达式
- <% %>表达式
- 表达式
- 表达式
- 表达式
- 表达式
- 南阳-111-分数加减法
- c#在一个窗口调用另一个窗口
- C指针原理(4)
- 9的20万次方(高精度)
- 调试django发现的新鲜出炉的python mimetype.py的bug.
- JavaWeb_jsp_EL表达式_i18n
- 通过hook Linux内核函数,监控进程/线程创建与销毁
- 使用jdbc操作时 跑出异常 只进ResultSet 不支持请求的操作
- 日志分析 入门教程
- Java基础——Java String 的十大常见问题
- 魔方阵
- K60--滴答定时器(SysTick)实现精准延时
- C指针原理(5)
- 用冒泡和选择法对两个数组排序