JavaWeb_11_jsp_EL表达式_i18n

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\u540D
password=\u5BC6\u7801
submit=\u63D0\u4EA4
context=\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=username
password=password
submit=submit
context={0,date,full}{0,time,long},price is {1,number,currency}

mypro_zh.properties位于 包cn.itcast.resource

username=\u7528\u6237\u540D
password=\u5BC6\u7801
submit=\u63D0\u4EA4
context=\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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值