// 特殊字符转为Html
public static String toHtml(String s){
if(s == null){
s = "";
return s;
}
s = Replace(s.trim(),"&","&");
s= Replace(s.trim(),"<","<");
s = Replace(s.trim(),">",">");
s = Replace(s.trim(),"\t"," ");
s = Replace(s.trim(),"\r\n","\n");
s = Replace(s.trim(),"\n","
");
s = Replace(s.trim()," "," ");
s = Replace(s.trim(),"'","'");
s = Replace(s.trim(),"\\","\");
return s;
}
/**
* ubb
*/
public static String toUbbHtml(String s){
if(s == null){
s = "";
return s;
}
s = Replace(s,"\n","
");
s = Replace(s," "," ");
s = Replace(s,"'","'");
s = Replace(s,"\\","\");
return s;
}
//逆
public static String unHtml(String s){
s = Replace(s,"
","\n");
s = Replace(s," "," ");
return s;
}
标签: MVC-C
public static String Replace(String source,String oldString,String newString){
StringBuffer output = new StringBuffer();
int lengthOfsource = source.length();//源字符串长度
int lengthOfold = oldString.length();//老字符串长度
int posStart = 0;//开始搜索位置
int pos;//搜索到的老字符串的位置
//source.indexOf(oldString,posStart)检索某子串在字符串postStart以后第一次出现的位置,如果未找到就返回一个-1。
while((pos = source.indexOf(oldString,posStart)) >= 0){//得到字符串的位置(eg:如果有
就执行,没有就跳出,不要处理。)
//将以posStart起始以pos-1结束之间的内容拷贝到另一个字符串中。因为posStar从0开始的。
output.append(source.substring(posStart,pos));//append方法将文本添加到当前StringBuffer对象内容的结尾。
output.append(newString);//替换成新字符串
posStart = pos + lengthOfold;//位置也变为找到了之后的位置,pos为得到第一次出现字符的位置,lengthold为字符的长度
}
if(posStart < lengthOfsource){
//source.substring(posStart)以lengthOfsource开始的字符串拷贝到列一个字符串中
output.append(source.substring(posStart));
}
//这个方法将其内容转换成一个可以被用于输出的字符串对象。它允许操作对应的文本用于输出或数据存储。
return output.toString();
}
标签: MVC-C
返回 String 对象内第一次出现子字符串的字符位置。
strObj.indexOf(subString[, startIndex])
参数
strObj
必选项。String 对象或文字。
subString
必选项。要在 String 对象中查找的子字符串。
starIndex
可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。
说明
indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。
如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。
从左向右执行查找。否则,该方法与 lastIndexOf 相同。
示例
下面的示例说明了 indexOf 方法的用法。
程序代码var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s);
}
lastIndexOf 方法:
返回 String 对象中子字符串最后出现的位置。
strObj.lastIndexOf(substring[, startindex])
参数
strObj
必选项。String 对象或文字。
substring
必选项。要在 String 对象内查找的子字符串。
startindex
可选项。该整数值指出在 String 对象内进行查找的开始索引位置。如果省略,则查找从字符串的末尾开始。
说明
lastIndexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。
如果 startindex 是负数,则 startindex 被当作零。如果它比最大字符位置索引还大,则它被当作最大的可能索引。
从右向左执行查找。否则,该方法和 indexOf 相同。
下面的示例说明了 lastIndexOf 方法的用法:
程序代码{
var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.lastIndexOf(str2);
return(s);
}
substring 方法:
返回位于 String 对象中指定位置的子字符串。
程序代码"String Literal".substring(start, end)
参数
start
指明子字符串的起始位置,该索引从 0 开始起算。
end
指明子字符串的结束位置,该索引从 0 开始起算。
说明
substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。
substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。
如果 start 或 end 为 NaN 或者负数,那么将其替换为0。
子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。
示例
下面的示例演示了 substring 方法的用法。
程序代码var ss; // 声明变量。
var s = "The rain in Spain falls mainly in the plain..";
ss = s.substring(12, 17); // 取子字符串。
return(ss); // 返回子字符串。
}
标签: MVC-V
一个是标准输出 一个是标准错误输出 在不同的容器,System.out.println() 和System.err.println()会输出 不同的文件中。
System.err.println()不能被重定向
System.out.println() 是标准输出 System.err.println() 是标准错误输出 默认情况下都是将结果输出到控制台,不过可以对其进行重定向从而改变其默认输出的方式。
标签: MVC-C
〈script>
function toBreakWord(intLen){
var obj=document.getElementById("strT");
var strContent=obj.innerHTML;
var strTemp="";
while(strContent.length>intLen){
strTemp+=strContent.substr(0,intLen)+"〈br>";
strContent=strContent.substr(intLen,strContent.length);
}
strTemp+=strContent;
obj.innerHTML=strTemp;
}
〈/script>
〈div id=strT>要控制的字符串。。。。〈/div>
〈script>
if(document.getElementById &&amp;amp; !document.all) toBreakWord(54);//每行54个字符换行
〈/script>
标签: MVC-V
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
public class Test {
public static void main(String[] args){
ArrayList arr = new Test().getRandom(10);
Iterator it = arr.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public ArrayList getRandom(int num){
ArrayList randomNum = new ArrayList();
Random random = new Random();
int temp = 0;
for (int i = 0;i < num; i ++){
temp = random.nextInt(num);
int nums = temp + 1;
if (randomNum.indexOf(new Integer(nums)) == -1){
randomNum.add(new Integer(nums));
}else{
i -- ;
}
}
return randomNum;
}
}
标签: MVC-C
- 对于tomcat:
@echo off
set JAVA_HOME=E:\jdk1.6.0
set CATALINA_HOME=E:\tomcat-5.5.20
set path=%CATALINA_HOME%\bin\
catalina run
- 对于weblogic:
echo ╭══╮
echo ╭╯ΘΘ║
echo ╰⊙═⊙╯。oо○
cd D:\bea\user_projects\domains\bjpaward
d:
call D:\bea\user_projects\domains\bjpaward\startWebLogic.cmd
标签: Windows
1.属性类型- CDATA
属性值可以是任何字符(包括数字和中文)
2.属性类型-NMTOKEN / NMTOKENS
NMTOKEN是CDATA 的一个子集,表示属性值必须是英文字母、数字、句号、破折号、下划线或冒号(不能是中文!)。
其他详见:
http://www.cnblogs.com/anan/articles/294009.html
Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类。
Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现。
这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案。
首先,我们建立一个抽象类RepTempRule 定义一些公用变量和方法:
| public abstract class RepTempRule{ protected String oldString=""; public void setOldString(String oldString){ this.oldString=oldString; } protected String newString=""; public String getNewString(){ return newString; } public abstract void replace() throws Exception; } |
在RepTempRule中有一个抽象方法abstract需要继承明确,这个replace里其实是替代的具体方法。我们现在有两个字符替代方案,
1.将文本中aaa替代成bbb;
2.将文本中aaa替代成ccc;
对应的类分别是RepTempRuleOne RepTempRuleTwo
| public class RepTempRuleOne extends RepTempRule{ |
| public class RepTempRuleTwo extends RepTempRule{ public void replace() throws Exception{ newString=oldString.replaceFirst("aaa", "ccc") System.out.println("this is replace Two"); } } |
至此我们完成了类图的设计和程序编制.调用如下:
| public class test{ ...... public void testReplace(){ //使用第一套方案进行替换. } ..... } |
实际整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速。
Strategy和Factory有一定的类似,Strategy相对简单容易理解:
Strategy适合下列场合:
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线 或框图bar等。
if(str.indexOf("0")《str.length-1){
var sti=str.substring(str.indexOf("0")+1,str.length);
return parseInt(sti);
}else{
return parseInt(str);
}
标签: MVC-V
var url = "historydetail.shtml";
var pars = "detail="+modeId;
document.getElementById('a'+divId).innerText="loading......";
var myAjax = new Ajax.Updater(('a'+divId),url, {method: 'get', parameters: pars});
标签: MVC-V
- 复制table到剪切板
window.open ('<%=request.getContextPath()%>/common/print.jsp', 'newwindow', 'width=10000,height=10000,top=0, left=0, toolbar=no, menubar=no, scrollbars=yes, resizable=no,location=no, status=no')
- 粘贴
- 打印
document.all.WebBrowser.ExecWB(6,1);
标签: MVC-V
1.1 dojo.widget.LayoutContainer
dojo的布局通过LayoutContainer组件来进行管理,而且,在LayoutContainer容器里面的组件,必须具有layoutAlign属性(这个属性决定了这些组件的位置)!
LayoutContainer组件无法决定其包含的子组件的位置,只有子组件本身才能通过layoutAlign属性来定位自身。
LayoutContainer的重要属性:
l layoutChildPriority:表示在布局容器所包含的组件的时候,其优先顺序如何,有三个取值:none/top-bottom/left-right。
n none – 表示无优先顺序,其布局取决于子组件在HTML出现的先后顺序而决定。
n top-bottom – 上下布局优先,以layoutAlign=”top”和layoutAlign=”bottom”属性的子组件为优先,即先对具有这些属性的子组件进行布局,其次再到具有”left”和”right”属性的子组件布局
n left-right – 左右布局优先,与top-bottom刚好相反。
LayoutContainer当然也可以嵌套使用,但需要注意添加layoutAlign属性(被别的LayoutContainer包含的时候,需要这个属性来定位)
1.2 dojo.widget.SplitContainer
此容器也是用于布局,但功能与LayoutContainer不同的是,SplitContainer所布局分离出来的区块,可以通过显示边界来拖动,以便动态改变每个区域的大小。
重要的属性:
l orientation - 标识分隔的方向,默认取值是:horizontal,表示是水平方向分隔,取任何其它值都表示垂直分隔(但一般明确的标识垂直分隔的值是:vertical)
l sizerWidth – 分隔线的宽度,默认取值是15
l persist – 是否为本次会话保存当前调整的分隔位置。默认值为true。即如果当前会话不结束,那么客户端所调整的位置便一直有效!
l activeSizing – 是否在调整位置的时候,内容跟着动态变化。0表示不会跟着动态变化,直到鼠标释放之后,里面的内容才开始调整;1则反之。
SplitContainer所包含的组件,可以设置下列属性:
l sizeMin – 默认值为10,本组件在SplitContainer容器中可允许的最小宽度,即拖动缩小的时候,不能小于本值。
l sizeShare – 默认值为10,这个值的意思是本组件在容器中所占的宽度,请注意,这是一个相对值。比如,父容器有两个子组件,如果这两个子组件的sizeShare均设置为1(或均设置为其它任意相等的两个数值),意味着每个组件各占据50%的宽度。注意,在SplitContainer容器中的组件,你不能通过style=”width:XXpx”这样的style代码来设置宽度,将不会起作用。
1.3 dojo.widget.TabContainer
TAB标签的容器,在这个容器下面的组件,将会被显示成Tab标签的样子。
重要的属性:
l selectedTab – 指定哪个tab是初始化的时候被选中的tab,用id或widgetId来标识
l labelPosition – TAB标签的位置,可以取值top或bottom,当取值left或right的时候,显示有点怪异!
重要的方法:
l selectTab(tab,_noRefresh) -选择某个TAB
其它说明:
TAB容器一般会包含ContentPane组件,而且需要在子组件中指定label属性。作为TAB显示的label。
TAB容器所包含的子组件,如果它被选中,那么其selected属性为true,否则为false
1.4 dojo.widget.ContentPane
用来承载页面的内容。一般它会被加入到XXXContainer容器中。
下面是部分重要属性介绍:
l href – 远程加载的内容
l preload – 是否提前加载
l refreshOnShow – 在显示的时候是否刷新内容,如果里面有javascript脚本,也会重新执行
l executeScripts – 是否在加载的时候执行其中的javascript脚本
下面是部分重要方法介绍:
l setUrl – 设置远程加载的内容,当调用这个方法后,内容便被即时覆盖了!
onLoad – url被加载的时候调用(好像不太好用)
onUnLoad -
ContentPane继承自HtmlWidget,因此也具有它的一些方法和属性:
templateCssPath/ templatePath等
还有:onShow和onHide方法,这些方法在show或hide之后被调用,你可以通过dojo的event系统,编写自己的方法,来连接到这些方法上,以便提供更多额外的处理。
或者直接将onShow这样的方法添加到标签属性中(在IE中有点问题,刷新的时候也有可能会调用到这个方法!!!!!!)
例子连接:
http://www.topxp.org/?url=html/tech/4028813c0c730092010c7306162e0006.html
标签: MVC-V
jstl错误: According to TLD or attribute directive in tag file, attribute value does not accept any expressions
0 评论 发帖者 M 时间: 4.1.07近日学习spring,照抄tutorial程序,运行时碰见如下提示:According to TLD or attribute directive in tag file, attribute items does not accept any expressions。说白了意思就是tag中不接受任何的表达式。
因为原来程序我在别的机器上也试过是没有问题的,所以觉得非常奇怪。google了一下相关内容,虽然说法比较混乱,但也算是有点帮助,顺着方向仔细比对了一下文件,发现问题所在。就我所知,这个问题的主要原因,在于servlet/jsp版本的混乱。Example程序中用的是web.xml版本是2.3,所以core taglib的URI是http://java.sun.com/jstl/core。而我偷懒用Eclipse webtools生成的web.xml缺省是2.4,那么正确的URL应该是http://java.sun.com/jsp/jstl/core。就是在2.4的web app,core taglib的声明改成<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
就可以了。
标签: MVC-V
| public class Tee { public static void main(String[] args) { try { Object obj = new Float("23.45"); // obj的真实类型是Float Double dobj = (Double) obj; // 你在将真实类型为Float类型的的Object反造型成Double类型的对象,所以会有错。如果Double为Float的父类,则这行代码就会是正确的了 } catch (ClassCastException e) { System.out.println(e); } } } 如果需要转换可以把ojb造型成Float类型,取其doubleValue,然后用这个值新建一个Double对象 Object obj = new Float("23.45"); Double dobj = new Double(((Float) obj).doubleValue()); |
http://www.qqread.com/asp/2006/05/h919112012.html
标签: MVC-V
MySQL数据库的基本操作 [ 转载 ]
一、连接MYSQL
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -h localhost -u root -p+回车,也可以键入命令mysql -u root -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
二、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用户(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
下面来看看MYSQL中有关数据库方面的操作。注意:必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
四、操作技巧
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
五、显示命令
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql; //打开库,学过FOXBASE的一定不会陌生吧
show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
六、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '南阳',
year date
); //建表结束
//以下为插入字段
insert into teacher values(','xuefeng','南阳理工,'1984-05-27');
insert into teacher values(','huifan','杞县高中','1985-07-23');
注:在建表中:
1.将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key。
2.将NAME设为长度为10的字符字段。
3.将ADDRESS设为长度50的字符字段,而且缺省值为'南阳'。
4.将YEAR设为日期字段。
如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:
mysql -u root -p 密码 <> maildb.sql
注释:将数据库mail_db备份到maildb.sql文件,maildb.sql是一个文本文件,文件名任取,打开看看你会有新发现。
九、恢复备份数据库
mysql -u root -p < maildb.sql
标签: MySQL