java 杂记
Java字符串操作小记
JAVA 把字符串间的若干空格保留一个
javascript和java里的回车换行符的处理
3. 指定最大和最小的内存限制,要增加jvm的初始参数
修改前:
4.有时注册windows服务成功后,但是启动服务时显示“发生服务特定错误: 0.”
就是因为jvm没有指定,修改Jvm auto为Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"后重新注册windows服务就可以启动了。
Struts2中 用OGNL表达式定义字符串常量 与单个字符常量需要注意的一个小细节
具体记录如下:
注意上面红色部分的标识。当定义的变量为单个字符是,必须外面是单引号,字符用双引号引起。
附:转载OGNL表达式相关的知识点:
OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。
为什么使用OGNL
相对于其它的表达式语言,OGNL的功能更为强大,它提供了很多高级而必需的特性,例如强大的类型转换功能、静态或实例方法的执行、跨集合投影,以及动态lambda表达式定义等。
OGNL基础
OGNL表达式的计算都是围绕OGNL上下文来进行的,OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类(实现了 java.util.Map接口)来表示。OGNL上下文可以包含一个或多个JavaBean对象,在这些对象中有一个是特殊的,这个对象就是上下文的根 (root)对象。如果在写表达式的时候,没有指定使用上下文中的哪一个对象,那么根对象将被假定为表达式所依据的对象。
在OGNL上下文中,只能有一个根对象,如果你访问根对象,那么在写表达式的时候,直接写对象的属性就可以了;否则,你需要使用“#key”前缀,例如表达式#namager.name。
OGNL表达式
OGNL表达式的基础单元就是导航链,通常简称为链(chain)。最简单的链由下列部分组成:
1、属性名:如name和manager.name;
2、方法调用:如manager.hashCode(),返回manager对象的散列码;
3、数组索引:如emals[0],返回当前对象的邮件列表中的第一个邮件地址。
所有OGNL表达式的计算都是在当前对象的上下文中,一个链简单地使用链中先前链接的结果作为下一步计算的当前对象。我们看如下所示的链:
name.toCharArray()[0].numericValue.toString()
这个表达式按照下列的步骤进行计算:
1、获取根对象的name属性;
2、在String结果上调用toCharArray()方法;
3、从char数组中提取第一个字符;
4、从提取的字符对象上行到numericValue属性(这个字符被表示为Character对象,Character类有一个getNumericValue()方法);
5、在Integer对象结果上调用toString()方法。
这个表达式最终结果是最后返回的toString()方法调用返回的字符串。
常量
OGNL支持的所有常量类型:
1、字符串常量:
以单引号或双引号括起来的字符串。如”hello”,’hello’。
不过要注意的是,如果是单个字符的字符串常量,必须使用双引号。
2、字符常量:
以单引号括起来的字符。如’a'。
3、数值常量:
除了Java中的int、long、float和double外,OGNL还让你使用“b”或“B”后缀指定BigDecimal常量,用“h”“H”后缀指定BigInteger常量。
4、布尔常量:
true和false。
5、null常量。
操作符
OGNL除了支持所有的Java操作符外,还支持以下几种:
1、逗号,
与C语言中的逗号操作符类似。
2、花括号{}
用于创建列表,元素之间用逗号分隔。
3、in和not in
用于判断一个值是否在集合中。
访问JavaBean的属性
假如有一个employee对象作为OGNL上下文的根对象,那对于下面的表达式:
1、name
对应的java代码是employee.getName();
2、address.country
对应的java代码是employee.getAddress().getCountry();
访问静态方法和静态字段
@class@method(args) //调用静态方法
@class@field //调用静态字段
其中class必须给出完整的类名(包括包名),如果省略class,那么默认使用的类是java.util.Math,如:
@@min(5,3)
@@max(5,3)
@@PI
索引访问
OGNL支持多种索引方式的访问。
1、数组和列表索引
在OGNL中,数组和列表可以大致看成是一样的。
如:array[0]、list[0]。表达式:{’zhangsan’,'lisi’,'wangwu’}[1]等。
2、JavaBean的索引属性
要使用索引属性,需要提供两对setter和getter方法,一对用于数组,一对用于数组中的元素。
如:有一个索引属性interest,它的getter和setter如下
<s:property value="#hello.substring(#hello.indexOf('as')+2)"/> ---输出字符串。结果为 Miky
posted @ 2009-05-05 22:55 MikyTan 阅读(108) | 评论 (0) | 编辑 收藏
JSP 中使用Struts2的值 (Strust2 中调用JAVA的公共类方法)
Struts2的值是保存在ValueStack中的,假设有一个字符串str,我们一般是这么取值的:
<s:property value="str"/> 或者 ${str}
如果想在jsp中使用的话,可以这么取:
<%@ page import="com.opensymphony.xwork2.util.ValueStack" %>
……
<%= ((ValueStack)request.getAttribute("struts.valueStack")).findString("str") %>
也可以把ValueStack中的值先放到attribute中,然后直接取attribute的值:
<s:set name="str" value="%{str}" />
<%=request.getAttribute("str") %>
struts2的页面中调用函数
方法一:
func是类com.common.Constant里面的一个静态方法
str是动态的参数
方法二:
func是类com.common.StrutsHelper里面的一个普通方法
str是动态方法
s:bean其实是对类StrutsHelper的实例化,跟方法一有些区别,方法一里的函数必须是静态的
产品时间段(StartDate,EndDate)SQL查询
表 a 字段,id,开始时间,结束时间,价格
1,2008-01-01,2008-09-10,220.0
2,2008-09-11,2008-09-30,280.0
3,2008-10-01,2008-10-10,320.0
3,2008-10-11,2008-12-31,350.0
输入一个开始时间,一个结束时间,返回这段时间内每天的价格,最好返回每天的日期和对应的价格
例输入开始时间2008-09-09,结束时间2008-09-13
返回
2008-09-09,220
2008-09-10,220
2008-09-11,280
2008-09-12,280
2008-09-13,280
方案一:采用存储过程的方案!
posted @ 2009-04-23 11:50 MikyTan 阅读(2949) | 评论 (0) | 编辑 收藏
酒店价格间夜显示(JavaScript 实现)
摘要: 酒店间夜价格显示实现: 跨周: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC&... 阅读全文
posted @ 2009-04-21 13:31 MikyTan 阅读(64) | 评论 (0) | 编辑 收藏
JavaScript 取Table表格中的值
注意,为了兼容IE跟FireFix,不要用 innerText
xmlbeans dom level 3 not implemented
今天在用XmlBeans解析XML DOC时,遇到“xmlbeans dom level 3 not implemented”的解决办法!
问题产生的原因:
1、由于在生成的XML结构中插入了一些未在XSD中定义的节点,那么这些节点无法用XMLBeans所采用的对象的方法获取,只能采用DOM的方式来处理,但在处理的过程中报“xmlbeans dom level 3 not implemented”//实例化一个文档构建器工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setNamespaceAware(true);//通过文档构建器工厂获取一个文档构建器DocumentBuilder builder = factory.newDocumentBuilder();//通过文档通过文档构建器构建一个文档实例AssertionDocument assertionDoc = AssertionDocument.Factory.parse(new File(”xml/assertion.xml”), loadOptions);Document doc = builder.parse(new InputSource(new StringReader(assertionDoc.toString())));doc.getDocumentElement().setIdAttribute(”AssertionID”, true);
COPY 非原创