javaweb
文章目录
7
获取Class对象的方法:
1.Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象
多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2.类名.class:通过类名的属性class获取
多用于参数的传递
3.对象.getClass( ):gatClass( )方法在object类中定义着。
多用于对象的获取字节码的方式
结论:同一个字节码文件(*.class)在一次程序运行工程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。
8
Class对象功能:
获取功能:
1.获取成员变量们
Field[] getFields() 获取所有public修饰的成员变量
Field getField(string name) 获取指定名称的public修饰的成员变量
Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符
Field getDeclaredField(string name)
2.获取构造方法们
Construction<?>[] getConstructors()
Construction getConstructor(类<?>… parameterTypes)
Construction getDeclaredConstructor(类<?>… parameterTypes)
Construction<?>[] getDeclaredConstructors()
3.获取成员方法们
Method[] gatMethods()
Method getMethods(String name,类 <?>… parameterTypes)
Method[] gatDeclaredMethods()
Method getDeclaredMethods(String name,类 <?>… parameterTypes)
4.获取类名
String getName()
Field:成员变量
操作:
1.设置值
void set(Object obj,Object value)
2.获取值
get(Object obj)
3.忽略访问权限修饰符的安全检查
setAccessible(true) 暴力反射
9
Construction:构造方法
创建对象: T newInstance(Object… initargs)
如果使用空参数构造方法创建对此昂,操作可以简化:Class对象的newInstance方法
10
不带declare只可以返回公共的不带declare的可以返回全部
Method:方法对象
执行方法:invoke(Object obj,Object… args)
获取方法名称:String getName:获取方法名
11
案例
需求:写一个“框架”,在不改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法
实现:1.配置文件2.反射
步骤:1.将需要创建对象的全类名和需要执行的方法定义在配置文件中
2.在程序中加载读取配置文件
3.使用反射技术来加载类文件进内存
4.创建对象
5.执行方法
20.JavaWeb课程介绍
课程介绍30天
数据库5天
网页前端5天
web核心技术15天
旅游管理系统5天
21
数据库基本概念
MySQL数据库软件1.安装2.卸载3.配置
22
数据库的基本概念
1.DataBase 简称DB
2.用于存储和管理数据的仓库
3.数据库的特点:1.持久化存储数据 其实数据库就是一个文件系统 2.方便存储和管理数据 3.使用了统一的方式操作数据可–SQL
23
常见的数据库软件
24-25安装和卸载
26配置
MySQL服务启动
1.手动 2.cmd–services.msc 打开服务的窗口 3.使用管理员打开cmd net strat mysql:启动mysql的服务器
27登录和退出
29.SQL
定义了操作所有关系型数据库的规则
每一种数据库操作的方式存在不一样的地方称为“方言”
30-33
P113-P130今日内容
软件架构:
C/S:客户端/服务器端
B/S:浏览器/服务器端
B/S架构详解
资源分类:
1.静态资源:使用静态网页开发技术发布的资源
特点:所有用户访问,得到的结果是一样的
如:文本,图片,音频,视频,HTML,CSS,JavaScript
如果用户请求的是静态资源,那么服务器会直接俄将静态资源发送给浏览器。浏览器中内置了静态资源的解析引擎,可以展示静态资源
2.动态资源:
使用动态网页及时发布的资源。
特点:所有用户访问,得到的结果可能不一样。
如:jsp/servle,php,asp…
如果用户请求的是动态资源,南无服务器会执行动态资源,转换为静态资源,在发送给浏览器。
我们要学习动态资源,必须先学习静态资源!
静态资源:
HTML:用于搭建基础网页,展示网页的内容
CSS:用于美化页面,布局页面
JavaScript:控制页面的元素,让页面有一些动态的效果
HTML
1.概念
是最基础的网页开发语言
Hyper Text Marker Language 超文本标记语言
超文本:超文本使用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。
标记语言:由标签后成的语言。<标签名称> 如html,xml
标记语言不是编程语言
2.快速入门
语法:
1.html文档的后缀名 .html或者.htm
2.标签分为
1.围堵标签:有开始标签和结束标签。如
2.自闭和标签:开始标签和结束标签在一起。如
3.标签可以嵌套:
需要正确嵌套,不能你中有我,我中有你。
4.在开始标签中可以定义属性。属性是由键值对构成,值需要用引号(单双都可)引起来
5.html的标签不区分大小写,但是建议使用小写。
代码:
html>
<body>
<FONT color='red'>wo zhen nb</font><br/>
<font color='green'>Hello zr</font>
</body>
3.标签学习
1.文件标签:构成html最基本的标签
html:html文档的根标签
head:头标签。用于指定html文档的一些属性。引入外部的资源
title:标题标签。
body:体表签
:html5中定义该文档是html文档
2.文本标签:和文本有关的标签(自动省略//呜呜)
注释:
//
to
:标题标签
h1~h6:字体大小逐渐递减
//
:段落标签
//
换行标签
//
:展示一条水平线
//
属性:color颜色 ;width宽度; size高度 ;align对齐方式 --center居中 默认居中 left 左对齐 right右对齐;
//:字体加粗
//:字体斜体
//:字体标签 属性:color:颜色;size:大小;face:字体。
属性定义:
color:1.英文单词:red,green,blue
2.rgb(值1,值2,值3):值的范围:0~255 如rgb(0,0,255)
3.#值1值2值3:值的范围:00-FF之间。如·:#FF00FF
width:1.数值:width=‘20’,数值的单位,默认是px(像素)
2.数值%:占比相对于父元素的比例
3.图片标签:
img:展示图片
例子
alt是当图片找不到的时候就显示alt中的内容 相当于是一个描述?
4.列表标签:
有序列表:
ol:
li:
无序列表:
ul:
li:
5.链接标签:
a:定义一个超链接
属性:
href:指定访问资源的URL(统一资源定位符)
target:指定打开资源的方式
_self:默认值,当前页面打开
_blank:在空白页面打开
例子:
6.div和span
div:每个div占满一整行。块级标签
span:文本信息在一行展示,行内标签 内联标签
7.语义化标签:html5中为了提高程序可读性,提供了一些标签。
1.
2.
8.表格标签:
table:定义表格
width:定义表格
border:边框
cellpadding:定义内容和单元格的距离
cellspacing:定义单元格之间的距离。如果指定为0,则单元格的线会合成为一条。
bgcolor:背景色
align:对齐方式
tr:定义行
bgcolor:背景色
align:对齐方式
td:定义单元格
colspan:合并列
rowspan:合并行
th:定义表头单元格
:表格标题 :表示表格的头部份 :表示表格的体部分 :表示表格的脚部分案例:旅游网站首页
1.确定使用table来完成布局
2.如果某一行只有一个单元格,则使用
3.如果某一行有多个单元格,则使用
P131-P146今日内容
HTML标签:表单标签
表单:
概念:用于采集用户输入的数据的。用于和服务器进行交互。
使用过的标签:from
用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围
属性:
action:指定提交数据的URL
method:指定提交方式
分类:一共7中,2种比较常用的
get:
1.请求参数会在地址栏中显示。会封装到请求行中(HTTP协议后讲解)
2.请求参数大小是有限制。
3.不太安全。
post:
1.请求参数不会在地址栏中显示。会封装在请求体中(HTTP协议后讲解)
2.请求参数的大小没有限。
3.较为安全。
表单项中的数据要想被提交,必须指定其name属性
表单项标签:
input:可以通过type属性值,改变元素展示的样式
type属性:
text:文本输入框,默认值
placeholder:指定输入框的提示信息,当输入框的内容发生变化,会自动清空提示信息
password:密码输入框
radio:单选框
注意:
1.要想让多个单选框实现单选的效果,则多个单选框的name属性值必须一样
2.一般会给每一个单选框提供value属性,指定其被选中后提交的值
3.checked属性,可以指定默认值
checkbox:复选框
注意:
1.一般会给每一个单选框提供value属性,指定其被选中后提交的值
2.checked属性,可以指定默认值
file:文件选择框
hidden:隐藏域,用于提交一些信息
按钮:
submit:提交按钮。可以提交表单
button:普通按钮
image:图片提交按钮
src属性指定图片的路径
label:指定输入项的文字描述信息
注意:
label的for属性一般会和input的id属性值对应。如果对应了,则点击label区域,会让input输入框获取焦点。
select:下拉列表
子元素:option,指定列表项
textarea:文本域
cols:指定列数,每一行有多少个字符
rows:默认多少行
CSS:页面美化和布局控制
1.概念:Cascading Style Sheets 层叠样式表
层叠:多个样式可以作用在同一个html的元素上,同时生效
2.好处:
1.功能强大
2.将内容展示和样式控制分离
降低耦合度。解耦
让分工协作更容易
提高开发效率
3.CSS的使用:CSS与html结合方式
1.内联样式😕/了解即可,不推荐使用
在标签内使用style属性指定css代码
如:
2.内部样式
在head标签内,定义style标签,style标签体内容就是css代码
如:
3.外部样式
1.定义css资源文件
2.在head标签内,定义link标签,引入外部的资源文件
如:
a.css文件:
div{
color:green;
}
<div>hello css</div>
注意:1,2,3中方式CSS作用范围越来越大
1方式不常用,后期常用2,3
第3种格式可以写为:
<style>
@import "css/a.css";
</style>
4.CSS语法:
格式:
选择器{
属性名1:属性值1;
属性名2:属性值2;
…
}
选择器:筛选具有相同特征的元素
注意:
每一对属性需要使用;隔开,最后一对属性可以不加;
5.选择器:筛选具有相似特征的元素
分类:
1.基础选择器
1.id选择器:选择具体的id属性值的元素。建议在一个html页面中id值唯一
语法:#id属性值{ }
2.元素选择器:选择具有相同标签名称的元素
语法:标签名称{ }
注意:id选择器优先级高于元素选择器
3.类选择器:选择具有相同的class属性值的元素。
语法:.class属性值{ }
注意:类选择器优先级高于元素选择器
2.扩展选择器
1.选择所有元素:
语法:*{ }
2.并集选择器:
选择器1,选择器2{ }
3.子选择器:筛选选择器1下的选择器2
语法:选择器1 选择器2{ }
4.父选择器:筛选选择器2的父元素选择器1
语法:选择器1>选择器{ }
5.属性选择器:选择元素名称,属性名=属性值的元素
语法:元素名称[属性名="属性值"]{ }
6.伪类选择器:选择一些元素具有的状态
语法:元素:状态{ }
如:
状态:
link:初始化的状态
visited:被访问过的状态
active:正在访问状态
hover:鼠标悬浮状态
6.属性
1.字体,文本
font-size:字体大小
color:文本颜色
text-align:对齐方式
line-height:行高
2.背景
background:
例:
div{
border:1px solid red;
height:200px;
width:200px;
background: url(“img/logo.jpg”) no-repeat center;
}
3.边框
border:设置边框,符合属性
4.尺寸
width:宽度
height:高度
5.盒子模型:控制布局
margin:外边距
padding:内边距
默认情况下内边距会影响整个盒子的大小
box-sizing:border-box;设置盒子的属性,让width和height就是最终盒子的大小
float:浮动
left
right
让div水平居中margin:auto;
设置边框圆角:border-radius:5px;
垂直居中:vartical-align:middle;
P147-P168今日内容
JavaScript基础
www.w3school.com
JavaScript:
概念:一门客户端脚本语言
运行在刻划断浏览器中的。每个浏览器都有JavaScript的解析引擎
脚本语言:不需要编译,直接就可以被浏览器解析执行了
功能:可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验
JavaScript发展史:
1.1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为:c–,后来更名为:ScriptEase
2.1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来SUN公司的专家,修改LiveScript,命名为JavaScript
3.1996年,微软抄袭JavaScript开发出JScript语言
4.1997年,ECMA(欧洲计算机制造商协会),ECMAScript,就是所有客户端脚本的标准
JavaScript=ECMAScript+JavaScript自己特有的东西(BOM+DOM)
ECMAScript
客户端脚本语言的标准
1.基本语法
1.与html结合的方式
1.内部JS:
定义
2.外部JS:
定义
注意:
1.
2.
2.注释
1.单行注释://注释内容
2.多行注释:/注释内容/
3.数据类型
1.原始数据类型(基本数据类型):
1.number:数字。整数/小数/NaN(not a number 一个不是数字的数字类型)
2.string:字符串。字符串"abc" “a” ‘abc’
3.boolean:true和false
4.null:一个对象为空的占位符
5.undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为underfined
2.引用数据类型:对象
4.变量
变量:一小块可以存储数据的内存空间
Java语言是强类型语言,而JavaScript是弱类型语言。
强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。
语法:
var 变量名=初始值;
5.运算符
1.一元运算符:只有一个运算数的运算符
++,–,+(正号) -(负号)
++ ==:自增(自减)
++(–)在前,先自增(自减),再运算
++(–)在后,先运算,再自增(自减)
+(-):正负号
注意:在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
其他类型转number:
string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)
boolean转number:true转为1,false转为0
2.算数运算符
+ - * / % …
3.赋值运算符
= += -+…
4.比较运算符
> < >= <= == ===(全等于)
比较方式:
1.类型相同:直接比较
字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止
2.类型不同:先进行类型转换,再比较
===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
5.逻辑运算符
&& :与(短路)
||:或 (短路)
!:非
其他类型转boolean:
1.number:0或NaN为假,其他为真
2.string:除了空字符串(” ”),其他都是true
3.null&undefined:都是false
4.对象:所有对象都为true
例:
obj=“123”;
if(obj!=null&&obj.lrngth>0){//防止空指针异常
alert(123);
}
//js中可以这样定义,简化书写。
if(obj){//防止空指针异常
alert(111);
}
6.三元运算符
? :
例子:
var a =3;
var b =4;
var c =a >b ? 1:0;
语法:
表达式?值1:值2;
判断表达式的值,如果是true则取值1,如果是false则取值2
6.流程控制语句
1.if…else…
2.switch:
在java中,switch语句可以接受的数据类型:byte int shor char,枚举(1.5),String(1.7)
switch(变量):
case 值:
在JS中,switch语句可以接受任意的原始数据类型
3.while
4.do…while
5.for
7.JS特殊语法
1.语句以;结尾,如果一行只有一条语句则;可以省略(不建议)
2.变量的定义使用var关键字,也可以不使用
用:定义的变量是局部变量
不用:定义的变量是全局变量(不建议)
8.练习:99乘法表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>99乘法表</title>
<style>
td{
border:1px solid;
}
</style>
<script>
document.write("<table align='center'>");
//1.完成基本的for循环嵌套,展示乘法表
for(var i=1;i<=9;i++){
document.write("<tr>")
for (var j=1;j<=i;j++){
document.write("<td>");
//输出1*1=1
document.write(i+"*"+j+"="+(i*j)+" ");
document.write("</td>");
}
/*//输出换行
document.write("<br>");*/
document.write("</tr>");
}
//2.完成表格嵌套
document.write("</table>");
</script>
</head>
<body>
</body>
</html>
基本对象
2.基本对象:
1.Function:函数(方法)对象
1.创建:
1.var fun = new Function(形式参数列表,方法体);//忘掉吧
2.function 方法名称(形式参数列表){
方法体
}
3.var 方法名 = function(形式参数列表){
方法体
}
2.方法:
3.属性:
length:代表形参的个数
4.特点:
1.方法定义时,形参的类型不用写,返回值类型也不写。
2.方法是一个对象,如果定义名称相同的方法,会覆盖
3.在JS中,方法的调用只与方法的名称有关,和参数列表无关
4.在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
5.调用:
方法名称(实际参数列表);
2.Array:数组对象
1.创建:
1.var arr = new Array(元素列表);
2.var arr = new Array(默认长度);
3.var arr = [元素列表];
2.方法:
join(参数):将数组中的元素按照指定的分隔符拼接为字符串
push():向数组的末尾添加一个或更多元素,并返回新的长度。
3.属性:
length:数组的长度
4.特点:
1.JS中,数组元素的类型可变的。
2.JS中,数组长度可变的。
3.Boolean
4.Date:日期对象
1.创建:
var date = new Date( );
2.方法:
toLocaleString( ):返回当前date对象对应的时间本地字符串格式
getTime( ):获取毫秒值。返回当前日期对象秒速的时间到1970年1月1日零点的毫秒值差
5.Math:数学对象
1.创建:
特点:Math对象不用创建,直接使用。 Math.方法名( );
2.方法:
random( ):返回0~1之间的随机数。含0不含1
ceil(x):对数进行上舍入。
floor(x):对数进行下舍入。
round(x):把数四舍五入为最接近的整数。
3.属性:
PI
例:
取1~100之间的随机整数
1.Math.random()产生随机数:范围(0,1]小数
2.乘以100–>[0,99.9999]小数
3.舍弃小数部分:floor–>[0,99]整数
4.+1–>[0,99]整数[1,100]
var number=Math.floor((Math.random()*100))+1;
document.write(number);
6.Number
7.String
8.RegExp:正则表达式对象
1.正则表达式:定义字符串的组成规则。
1.单个字符:[ ]
如:[a] [ab] [a-zA-Z0-9_]
特殊符号代表特殊含义的单个字符:
\d:单个数字字符[0-9]
\w:单个单词字符[a-zA-Z0-9_]
2.量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:表示出现1次或多次
{m,n}:表示m<= 数量 <=n
m如果缺省:{,n}:最多n次
n如果缺省:{m,}:最少m次
3.开始结束符号
^:开始
$:结束
2.正则对象:
1.创建:
1.var reg = new RegExp(“正则表达式”);
2.var reg = /正则表达式/;
2.方法:
1.test(参数):验证指定的字符串是否符合正则定义的规范
9.Global
1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。 方法名( );
2.方法:
encodeURI( ):url编码
decodeURI( ):url解码
encodoURIComponet( ):url编码,编码的字符更多
decodeURIComponet( ):url解码
parseInt( ):将字符串转为数字
逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN( ):判断一个值是否是NaN
NaN六亲不认,连自己都不认。NaN参与的==比较全部为false
判断例子:
var a =NaN;
document.write(a==NaN);//返回false
document.write(isNaN(a));//返回true
eval( ):将 JavaScript字符串,并把它作为脚本代码来执行。
3.URL编码
传智播客=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2(12个字节)
传智播客
假设GBK编码:8个字节 1个字节8个二进制位
1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101
编码:
var str = “传智播客”;
var encode = encodeURI(str);
document,write=(encode+"
");//%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
解码:
var s = decodeURI(encode);
document.write(s+"
");//传智播客
P169-P191今日内容
BOM
DOM
DOM简单学习:为了满足案例要求
功能:控制html文档的内容
代码:获取页面标签(元素)对象 Element
document.getElementById(id值):通过元素的id获取元素对象
操作Element对象:
1.修改属性值:
1.明确获取的对象是哪一个
2.查看API文档,找其中有哪些属性可以设置
2.修改标签体内容:
属性:innerHTML
事件
事件简单学习
功能:某些组件被执行了某些操作后,触发某些代码的执行。
造句:xxx被xxx,我就xxx
我方水晶被摧毁后,我就夸奖自己。
如何绑定事件
1.直接在html标签上,指定事件的属性(操作),属性值就是js代码
1.事件:onclick----单击事件
2.通过js获取元素对象,指定事件属性,设置一个函数
![](img/off.gif)
![](img/off.gif)
172
200
来执行。
3.URL编码
传智播客=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2(12个字节)
传智播客
假设GBK编码:8个字节 1个字节8个二进制位
1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101
编码:
var str = “传智播客”;
var encode = encodeURI(str);
document,write=(encode+"
");//%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
解码:
var s = decodeURI(encode);
document.write(s+"
");//传智播客
P169-P191今日内容
BOM
DOM
DOM简单学习:为了满足案例要求
功能:控制html文档的内容
代码:获取页面标签(元素)对象 Element
document.getElementById(id值):通过元素的id获取元素对象
操作Element对象:
1.修改属性值:
1.明确获取的对象是哪一个
2.查看API文档,找其中有哪些属性可以设置
2.修改标签体内容:
属性:innerHTML
事件
事件简单学习
功能:某些组件被执行了某些操作后,触发某些代码的执行。
造句:xxx被xxx,我就xxx
我方水晶被摧毁后,我就夸奖自己。
如何绑定事件
1.直接在html标签上,指定事件的属性(操作),属性值就是js代码
1.事件:onclick----单击事件
2.通过js获取元素对象,指定事件属性,设置一个函数
![](img/off.gif)
![](img/off.gif)
172
200