Tomcat入门级错误:
==========
今天使用Tomcat 6 的 Manager 提示输入用户名、密码,不对啊,我记得没维护过。
网上搜索到一下解释:
Tomcat 6要使用Manager功能 ,需要配置一下文件:D:\tomcat6\conf\tomcat-users.xml,添加一个用户即可:
<? xml version='1.0' encoding='utf-8' ?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="jasph" roles="admin,manager"/>
</tomcat-users>
修改后,保存,重启Tomcat即可。
==============
present by dylan.
1.document.write("");为 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)
6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(""+变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用+号.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],...){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状态栏的设置:window.status="字符";
21.弹出提示信息:window.alert("字符");
22.弹出确认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href="/blog_article/URL/index.html"
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符:+=
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i<!-- //-->
49.引用一个文件式的JS:<script type="text/javascript" src="/blog_article/aaa.js"></script>
50.指定在不支持脚本的浏览器显示的HTML:<noscript></noscript>
51.当超链和ONCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:<a href="/blog_article/a.html" onclick="location.href='/blog_article/b.html';return false">dfsadf</a>
52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
53.JS中的换行:\n
54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>
55.JS中的all代表其下层的全部元素
56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1
57.innerHTML的值是表单元素的值:如<p id="para">"how are <em>you</em>"<p></p>,则innerHTML的值就是:how are <em>you</em>
58.innerTEXT的值和上面的一样,只不过不会把<em>这种标记显示出来.
59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.
60.isDisabled判断是否为禁止状态.disabled设置禁止状态
61.length取得长度,返回整型数值
62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
63.window.focus()使当前的窗口在所有窗口之前.
64.blur()指失去焦点.与FOCUS()相反.
65.select()指元素为选中状态.
66.防止用户对文本框中输入文本:onfocus="this.blur()"
67.取出该元素在页面中出现的数量:document.all.tags("div(或其它HTML标记符)").length
68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()
69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.';
70.添加到收藏夹:external.AddFavorite("http://www.google.com","Google");
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;
72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.
73.JS中的self指的是当前的窗口
74.JS中状态栏显示内容:window.status="内容"
75.JS中的top指的是框架集中最顶层的框架
76.JS中关闭当前的窗口:window.close();
77.JS中提出是否确认的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
78.JS中的窗口重定向:window.navigate("http://www.google.com");
79.JS中的打印:window.print()
80.JS中的提示输入框:window.prompt("message","defaultReply");
81.JS中的窗口滚动条:window.scroll(x,y)
82.JS中的窗口滚动到位置:window.scrollby
83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope yo
本来这个博客主要是想用来写.Net方面的一些内容,但是由于公司项目进度问题,这周开始临时参与了一个网站项目。该项目使用html5+js来做,虽然我之前对这两者都没有接触过,但是Knockout和CoffeeScript这两个好东西却让我很快就能上手干活。既然决定要开始写博客,我就把边学边做过程中的一些心得体会做个记录,同时也将第一次献给了与.Net无关的技术。
正如我在标题中所写的“in Action”,因此我在这里所写的都将不是官网上示例的简单翻译或者粘帖,而是在项目中实际应用的代码片段,个人认为这会比普通示例更具有可操作性。我这里做了一个假定,就是你对Knockout和CoffeeScript有基本的了解。
作为第一篇博客,我将要写的是如何封装一个通用的Combox数据绑定函数,便于在各个模块的复用。
我相信作为一个码农有一句话是肯定听说过的:
程序 = 数据结构 + 算法
因此首先要介绍一下我专门用于Combox的数据结构:
2 {key: "0", text: "Sunday"},
3 {key: "1", text: "Monday"},
4 {key: "2", text: "Tuesday"},
5 {key: "3", text: "Wednesday"},
6 {key: "4", text: "Thursday"},
7 {key: "5", text: "Friday"},
8 {key: "6", text: "Saturday"}
9 ]
你一定认为这个平淡无奇,确实,它很简单,但是它又不简单。首先它不是最简单的,其实最简单的是直接一个数组,比如Constant_WeekDay = ["Sunday", "Monday", ... ];其次它又有可扩展性,因为它的每一个元素都是一个对象,所以可以随时给这些对象添加属性来扩展功能,这会在后面一篇文章中就会感受到。这样的一种数组结构就为通用性埋下了伏笔。
接下来就是所谓的算法,这里的算法当然不是特指竞赛中的那些(那些算法一般工程项目中也用不到,而且我对于这些竞赛算法题也是相当的苦手),而是指普遍意义上的算法,简化来说对于每一个输入经过有限步骤计算能得到一个输出(所以其实我们平时写的每一个函数都是看作一个算法,因此以后不用自卑,出去完全可以说我也是搞算法的。。。。)
2 return ko.computed(
3 read: ->
4 return option for option in optionsArray when option.key is optionObservable()
5 write: (value)->
6 optionObservable value.key
7 return
8 )
这里假设了Combox的选项一开始就是固定的,不会动态调整。
第1行是对这个函数的声明,会传入两个变量,一个是ViewModel中的observable函数对象,一个就是combox的选项数组。
第2行开始就是整个函数的逻辑,定义了一个computed observable函数对象。
第3、4行定义了其内部的read回调函数,遍历所有的选项如果某个选项和后台的observable对象值相同,就在combox上显示该项。这里我们也能领略到CoffeeScript的威力,一行代码就能循环、判断以及取值操作全部包括(如果你熟悉python,ruby或者各种函数式语言的话应该不会陌生)。
第5、6、7行定义了其内部的write回调函数,如果用户改变了界面上的combox选项,则会通知改变后台的observable对象。
实际应用也非常简单,如下所示
2 constructor: ->
3 @WeekDayOptions = Constant_WeekDay
4 @WeekDayValue = ko.observable '0'
5 @WeekDay = ComputeForComboBox @WeekDayValue, @WeekDayOptions
6
7 $(document).ready ->
8 viewModel = new myViewModel()
9 ko.applyBindings(viewModel)
10 return
第1 ~ 5行定义了一个ViewModel,再说一句CoffeeScript的类定义语法相当好用,比直接用js的原型语法要简单多了。
第8行就是构造了一个ViewModel对象,并在第9行与Knockout绑定。
运行结果如下,也可以通过JsFiddle直接查看源代码
本文链接