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>


原创粉丝点击