1. JavaScript基础
• Html : 负责了一个页面的结构。
• Css: 负责了一个页面的样式。
• JavaScript: 负责与用户进行交互。
2. JavaScript 是属于网络的脚本语言!JavaScript被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。JavaScript 是因特网上最流行的脚本语言。
3. JavaScript具有安全性(不能直接访问硬盘的内容)和跨平台性的特点。
4. JavaScript与Java不同
• JS是Netscape公司的产品,Java是Sun公司的产品
• JS是基于对象,没有继承封装等特性,Java是面向对象。
• JS只需解释就可以执行,Java需要先编译成字节码文件,再执行。
• JS是弱类型 变量类型为var ,Java是强类型,必须明确变量的数据类型。
5. JavaScript包括三个部分:
• ECMAScript 规范了基本的语法,是一种标准
• BOM 浏览器对象模型
• DOM 文档对象模型
6. JS的语法:
1)
2)使用script标签的src属性引入一个js文件。(方便后期维护,扩展)
例:<script src=”test.js”type=”text/javascript”></script>
3)注意:
• 页面上可以有多个<script>标签
• <script>标签按顺序执行
• <script>标签可以出现在任意的页面位置
• <script>标签一定要写</script>关闭,而不能<script/>这样关闭。否则没有任何错误信息,但是没有运行结果。
4)JS区分大小写,且注释与JAVA一样Java: // /* */ /** */
5)ECMASCRIPT 中有4种基本数据类型:
Undefined, Boolean,Number和String
6)Typeof 关键字typeof可以获取一个变量的类型。
<scripttype="text/javascript">
var a = 100;
var b = 3.14;
var c = true;
var d = 'a';
var e = "hello";
document.write( typeof a + "<br/>");
document.write( typeof b + "<br/>");
document.write( typeof c + "<br/>");
document.write( typeof d + "<br/>");
document.write( typeof e + "<br/>");
</script>
输出为: number
Number
Boolean
String
string
7)循环控制语句
• 判断语句
if 语句的语法:
if (condition) statement1 elsestatement2
• switch语句的语法:
switch (expression)
case value: statement;
break;
case value: statement;
break;
...
case value: statement;
break;
default: statement;
• while语句
while(expression) statement
• do-while语句
do{statement} while (expression);
• for语句
for(initialization; expression; post-loop-expression) statement
• for-in语句:for 语句是严格的迭代语句,用于枚举对象的属性或者遍历一个数组的元素。
for (property in expression)statement
例子:用于显示window对象的所有属性。
for (sProp in window) {
alert(sProp);
}
• with语句:有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象。
格式 :
with(obj){
操作obj的属性语句;
}
例子:
<script type="text/javascript">
function Person(id,name){
this.id=id;
this.name=name;
}
//创建一个对象
varp=new Person(1,”小五”);
with(Person){
document.write(“编号:”+id);
document.write(“姓名:”+name);
</script>
此处注意函数格式:
JavaScript中的函数没有重载的形式,后定义的函数会自动覆盖前面的函数。参数列表不能有var关键字且一个函数可以接受任意个参数。
函数格式
Function 函数名(参数列表){
代码;
return 返回值; //return 不是必须的.
}
6. 综合实例
<html>
<head>
<title>学习JavaScript</title>
</head>
<body>
月份:
<inputtype="text" id="month">
<inputtype="button" value="显示天数"οnclick="foo()">
<scripttype="text/javascript">
functionfoo(){
var monthValue= document.getElementById("month").value;
//如果是非数字,则不再继续执行
if(isNaN(monthValue) ){
alert("请输入正确的月份!");
return;
}
//转为数字
monthValue= parseInt(monthValue);
//判断范围
if(monthValue < 1 || monthValue > 12){
alert("请输入正确的月份(1--12)!");
return;
}
//根据月份显示天数
switch(monthValue){// 这时不会自动转换类型,所以先转型
case2:
alert("28天");
break;
case4:
case6:
case9:
case11:
alert("30天");
break;
default:
alert("31天");
break;
}
}
</script>
</body>
</html>
7. 常见的方法:
Anchor() 生产锚点
Blink() 为元素添加blink标签
charAt() 返回指定索引位置处的字符。
charCodeAt() 回一个整数,代表指定位置上字符的 Unicode 编码。
Concat() 回字符串值,该值包含了两个或更多个提供的字符串的连接。
Fontcolor() 把带有 COLOR 属性的一个 HTML<FONT> 标记放置在String 对象中的文本两端
indexOf() 返回 String 对象内第一次出现子字符串的字符位置
italics() 把 HTML <I> 标记放置在 String 对象中的文本两端,字体转为斜体。
Link() 把一个有 HREF 属性的 HTML 锚点放置在 String 对象中的文本两端,添加<a>标签。
Replace() 返回根据正则表达式进行文字替换后的字符串的复制
Split() 切割
Substr() 截取子串
toUpperCase() 转大写
toLowerCase 转小写
实例:
//方法
document.write("第五章".anchor("ch1"));
document.write("第五章".blink());
// 返回在指定位置的字符。
document.write("第五章".charAt(0));
document.write("a".charCodeAt(0));
document.write("第五章".concat("abc"));
document.write("第五章".fontcolor("#ff0000"));
document.write("第五章".indexOf("五"));
document.write("第五章".italics());
document.write("第五章".link());
document.write("helloworld".replace(/l/g, "L"));//“L”换成“/l/g”
document.write("<br/>");
var names = "jack-lili-lucy".split("-");
for (var temp in names) {
document.write(names[temp]+ "<br/>");
}
document.write("<br/>");
document.write("helloworld".substr(1, 2)); //el
document.write("helloworld".substring(1, 2));//e
document.write("helloworld".toUpperCase());
document.write(new String("java").toString() == newString("java").toString());
8. Matn类
常用的方法:
max()
min()
random()
document.write(Math.ceil(12.34)+ "<br/>");//将小数部分一律向整数部分进位。
document.write(Math.floor(12.34)+ "<br/>");//一律舍去,仅保留整数。
document.write(Math.round(12.54)+ "<br/>");//进行四舍五入
document.write(Math.round(12.35)+ "<br/>");
document.write(Math.random()+ "<br/>");
document.write(Math.max(12,100, -1, 200, 320, 500) + "</br>");
document.write(Math.min(12,100, -1, 200, 320, 500) + "</br>");
9. Date对象
setInterval(代码, 毫秒数) 每经过指定毫秒值后执行指定的代码。
setTimeout(代码, 毫秒数) 经过指定毫秒值后执行指定的代码(只执行一次)。
data其他方法举例:
function showDate() {
//获取系统时间
vardate = new Date();
//获取年月 日时分秒
varstr = date.getFullYear() + "年" + (date.getMonth() + 1) +"月" + date.getDate() + "日" + "星期" + date.getDay() + "" + date.getHours() + "时" + date.getMinutes() +"分" + date.getMinutes() + "分" + date.getSeconds() + "秒"
//将格式化好的时间显示在叶面的span标签体中
varspan = document.getElementById("mydate");
//给span标签设置标签体内容
span.innerHTML= str.fontcolor("red");
//调用定时函数
window.setTimeout("showDate()",1000);
}
//调用函数
showDate();
10. 数组中常用的方法
sort()
对当前数组进行排序,并返回已经进行了排序的此Array对象。
不会创建新对象,是在指定数组中直接进行排序。
reverse()
对当前数组进行反转排序,返回一个元素顺序被反转的 Array 对象。
不会创建新对象,是在指定数组中直接进行排序。
push([item1 [item2 [. . . [itemN ]]]] )
将以新元素出现的顺序添加这些元素。
如果参数之一为数组,那么该数组将作为单个元素添加到数组中。
pop()
移除数组中的最后一个元素并返回该元素。
如果该数组为空,那么将返回 undefined。
shift()
移除数组中的第一个元素并返回该元素。
如果该数组为空,那么将返回 undefined。
unshift([item1[,item2 [, . . . [, itemN]]]])
将指定的元素插入数组开始位置并返回该数组。
splice(start,deleteCount, [item1[, item2[, . . . [,itemN]]]])
移除从 start 位置开始的指定个数的元素,并插入新元素,从而修改 concat([item1[, item2[, . . . [, itemN]]]])
返回一个新数组,这个新数组是由两个或更多数组组合而成的。原数组不变。
要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。
如果某一项为数组,那么添加其内容到 array1 的末尾。
如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
slice(start,[end])
返回一个包含了指定的部分元素的数组。
将返回索引大于等于start且小于end的一段。
原数组不变。
join(separator)
把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。
如果数组中有元素没有定义或者为 null,将其作为空字符串处理。
11. Object方式
/*
* 自定义对象Object方式,
*该例子创建了一个名为person的对象,并添加了2个属性(name age)和一个方法(sayHello)
* */
var person = new Object();
person.name = "jack";
person.age = 28;
person.sayHello = function() {
document.write(this.name+ ":" + this.age);
}
person.sayHello();
另一种创建对象的方法:
var person={
name:"李四",
age:88,
eat:function(){
alert("eating...");
}
};
alert(person.name+person.age);
person.eat();
7. DIV的ID属性和CLASS属性有什么区别呢?
1)语法区别
id对应CSS是用样式选择符“#”(井号);
class对应CSS是用样式选择符“.”(英文半角输入句号)。
<divid="header"></div>
<divclass="abc"></div>
对应CSS应该是:
#header{...}
.abc{...}
/* css注释说明:这里以省略号替代CSS样式内容 */
2)使用规定区别
id属性,只能被一个元素调用(以“#”选择符命名CSS样式在一个页面只能使用调用一次)
class类标记,可以用于被多个元素调用(以“.”选择符命名样式可以一个页面使用多次)
id:在同一个页面,只可以被调用一次,在CSS里用“#”表示。
class:是类标签,在同一个页面可以调用无数次(没限制的),在CSS里用“.”表示。
id就像一个人的身份证,用于识别这个div的,class就像人身上穿的衣服,用于定义这个div的样式。一般一个网页不设二个或二个以上同id的div,但class可以多个div用同一个class标签。
8. package cn.itcast;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import javax.jws.WebService;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class helloServlet extends HttpServlet{
@Override
public void init(ServletConfigconfig) throws ServletException {
// TODOAuto-generated method stub
super.init(config);
}
@Override
protected voiddoGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
// TODOAuto-generated method stub
//resp.getWriter().write("thisis HelloServlet");
this.doPost(req,resp);
/*
* 发送到重定向页面中;
*/
/*
ServletContextcontext=this.getServletContext();
Stringpath=context.getContextPath();
resp.sendRedirect(path+"index.html");
*/
}
@Override
protected voiddoPost(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
// TODOAuto-generated method stub
/*InputStreamin=req.getInputStream();//获取实体信息;
byte[] b= new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
Stringstr=new String(b,0,len);
System.out.println(str);
}*/
//name=newString(name.getBytes("IOS-8859-1"),"UTF-8");//重新编码;
//req.setCharacterEncoding("UTF-8");//该方法只能对实体内容起作用,post
/*
Enumeration<String>info=req.getParameterNames();//拿到参数名;
while(info.hasMoreElements()){
String paraName=info.nextElement();
String paraValue=req.getParameter(paraName);
System.out.println(paraName+":"+paraValue);
}
try{
//servlet中获取数据库信息;连接;
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
ServletConfigconfig=getServletConfig();
Stringdriver=config.getInitParameter("driver");
Stringurl=config.getInitParameter("url");
Stringuser=config.getInitParameter("user");
Stringpass=config.getInitParameter("pass");
Class.forName(driver);
Connectionconnection=DriverManager.getConnection(url,user,pass);
Statementstat=connection.createStatement();
ResultSetrs=stat.executeQuery("select * from zhaocan");
//显示
PrintWriterpw=new PrintWriter(resp.getOutputStream());
System.out.println("<html>");
System.out.println("<body>");
System.out.println("<table>");
while(rs.next()){
System.out.println("<tr>");
System.out.println("<td>"+rs.getString(1)+"</td>");
System.out.println("<td>"+rs.getString(2)+"</td>");
System.out.println("</tr>");
}
System.out.println("</table>");
System.out.println("</body>");
System.out.println("</html>");
}catch(Exception e){
e.printStackTrace();
}
resp.setContentType("text/html;utf-8");
//获取当前时间
SimpleDateFormatformat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
StringcurrentTime=format.format(new Date());
Cookie[]cookies=req.getCookies();
StringlastTime=null;
if(cookies!=null){
for (Cookiecookie : cookies) {
if(cookie.getName().equals("lastTime")){
//第n次访问
Stringlast=cookie.getValue();
resp.getWriter().write("上次登录的时间为:"+last+"当前时间为:"+currentTime);
//更新cookie;发送;
cookie.setValue(currentTime);
cookie.setMaxAge(24*60*60);
resp.addCookie(cookie);
break;
}
}
}
if(cookies==null ||lastTime==null){
resp.getWriter().write("首次访问时间为:"+currentTime);
}
//创建新的cookie,将信息发送到浏览器;
Cookie cookie = newCookie("lastTime", currentTime);
cookie.setMaxAge(24*60*60);
resp.addCookie(cookie);
*/ }
}