Java Web_00001

news2024/11/24 11:10:38

目录

  • Web项目介绍
    • 网页的组成部分
  • HTML
    • HTML简介
    • HTML示例
    • HTML文件的书写规范
    • HTML标签
      • 标签介绍
      • 标签的语法:
      • 常用标签
        • font
        • 特殊字符
        • 标题标签
        • 超链接
        • 列表标签
        • img标签
        • 表格标签
        • 跨行跨列表格
        • iframe框架标签(内嵌窗口)
        • 表单标签
          • 表单的显示
          • 表单格式化
          • 表单提交细节
        • 其他标签
  • CSS
    • CSS介绍
    • CSS语法规则
    • CSS和HTML的结合方式
      • 方式一
      • 方式二
      • 方式三
    • CSS选择器
      • 标签名选择器
      • id选择器
      • class选择器(类选择器)
      • 组合选择器
      • 常用样式:
  • JavaScript
    • JavaScript 介绍
    • JavaScript 和 和 html 代码的结合方式
      • 第一种方式
      • 第二种方式
    • 变量
      • 关系(比较)运算
      • 逻辑运算
    • 数组
      • 数组定义方式
    • 函数
      • 函数的二种定义方式
      • 函数的 arguments 隐形参数 (只在 function 函数内 )
    • JS 中的自定义对象
      • Object形式的自定义对象
      • {} 花括号形式的自定义对象
    • js中的事件
    • DOM模型
      • Document对象
      • Document 对象中的方法介绍
        • getElementById
        • getElementsByName
        • getElementsByTagName
        • createElement
      • 节点的常用属性和方法
      • DOM 查询练习
  • Java Web
    • 部暑 web 工程到 Tomcat 中
      • 方法一
      • 方法二
      • 本地访问和协议访问的区别
      • ROOT 的工程的访问及默认 index.html 页面的访问
    • 使用 idea 开发 web
      • idea 整合 Tomcat 服务器
      • idea中创建web工程
      • web 工程目录介绍
      • web 工程添加 jar包
      • idea中部署工程至Tomcat中
      • idea中启动、停止 Tomcat 实例
        • 启动 Tomcat 实例
        • 停止 Tomcat 实例
        • 重启 Tomcat 实例
      • 修改工程访问路径
      • 修改运行的端口号
      • 修改运行使用的浏览器
      • 配置热部署

Web项目介绍

C/S client server
B/S browser server

网页的组成部分

页面由三部分内容组成,分别是内容(结构)、表现、行为。

  • 内容(结构),是我们在页面中可以看到的数据。我们称之为内容。一般内容我们使用html技术来展示。
  • 表现,指的是这些内容在页面上的展示形式。比如说。布局,颜色,大小等等。一般使用 CSS 技术实现。
  • 行为,指的是页面中元素与输入设备交互的响应。一般使用 JavaScript 技术实现。

HTML

HTML简介

Hyper Text Markup Language(超文本标记语言),简写:HTML。

HTML通过标签来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。如:文字如何处理,画面如何安排,图片如何显示等。

HTML示例

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<title>标题</title>
	</head>
	
	<body>
		hello
	</body>
	
</html>

注:Java 文件是需要先编译,再由 java 虚拟机运行。但 HTML 文件不需要编译,直接由浏览器进行解析执行。

HTML文件的书写规范

<html> 表示整个 html 页面的开始
	<head> 头信息
		<title>标题</title> 标题
	</head>
	<body> body 是页面的主体内容
		页面主体内容
		Html的代码注释 <!-- 这是 html 注释,可以在页面右键查看源代码 -->
	</body>
</html> 表示整个 html 页面的结束

HTML标签

标签介绍

  • 标签的格式: <标签名>封装的数据</标签名>
  • 标签名大小写不敏感。
  • 标签拥有自己的属性,分为:
    基本属性: bgcolor=“red” ,可以修改简单的样式效果
    事件属性: οnclick=“alert(‘你好!’);”,可以直接设置事件响应后的代码。
  • 标签又分为:单标签和双标签。
    单标签格式: <标签名 /> br 换行 hr 水平线
    双标签格式: <标签名> …封装的数据…</标签名>
    在这里插入图片描述

标签的语法:

<!-- ①标签不能交叉嵌套 -->
正确:<div><span>早安,尚硅谷</span></div>
错误:<div><span>早安,尚硅谷</div></span>
<hr />

<!-- ②标签必须正确关闭 -->
<!-- i.有文本内容的标签: -->
正确:<div>水浒传</div>
错误:<div>水浒传
<hr />
<!-- ii.没有文本内容的标签: -->
正确:<br />
错误:<br>

<hr />

<!-- ③属性必须有值,属性值必须加引号 -->
正确:<font color="blue">水浒传</font>
错误:<font color=blue>水浒传</font>
错误:<font color>水浒传</font>

<hr />

<!-- ④注释不能嵌套 -->

正确:<!-- 注释内容 --> <br/>
错误:<!-- <!-- 这是错误的 html 注释 --> -->

<hr />

HTML代码不是很严谨。有时候标签不闭合,也不会报错。

常用标签

font

字体标签

需求1:在网页上显示"我是字体标签",并修改字体为"宋体",颜色为"红色"。

<body>
<!-- 字体标签
需求 1 :在网页上显示 我是字体标签 ,并修改字体为 宋体,颜色为红色。
font 标签是字体标签 , 它可以用来修改文本的字体 , 颜色 , 大小 ( 尺寸 )
color 属性修改颜色
face 属性修改字体
size 属性修改文本大小
-->
<font color="red" face=" 宋体" size="7">我是字体标签</font>
</body>
特殊字符

需求1:把
换行标签变成文本转换成字符显示在页面上
常用特殊字符表:
在这里插入图片描述
其他特殊字符表:
在这里插入图片描述

<body>
<!-- 特殊字符
需求 1 :把 <br> 换行标签 变成文本 转换成字符显示在页面上
常用的特殊字符 :
< ===>>>> &lt;
> ===>>>> &gt;
空格 ===>>>> &nbsp;
-->
我是&lt;br&gt;标签<br/>
宋江好
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;帅啊!
</body>
标题标签

标题标签是 h1 到 h6
需求 1 :演示标题 1 到标题 6

<body>
<!-- 标题标签
需求 1 :演示标题 1 到 标题 6 
h1 - h6 都是标题标签
h1 最大
h6 最小
align 属性是对齐属性
left 左对齐 ( 默认 )
center 剧中
right 右对齐
-->
<h1 align="left">标题 1</h1>
<h2 align="center">标题 2</h2>
<h3 align="right">标题 3</h3>
<h4>标题 4</h4>
<h5>标题 5</h5>
<h6>标题 6</h6>
<h7>标题 7</h7>
</body>
超链接

在网页中所有点击之后可以跳转的内容都是超连接
需求1:普通的 超连接。

<body>
<!-- a 标签是 超链接
href 属性设置连接的地址
target 属性设置哪个目标进行跳转
_self 表示当前页面 ( 默认值 )
_blank 表示打开新页面来进行跳转
-->
<a href="http://localhost:8080">百度</a><br/>
<a href="http://localhost:8080" target="_self">百度_self</a><br/>
<a href="http://localhost:8080" target="_blank">百度_blank</a><br/>
</body>
列表标签
  • 无序列表
  • 有序列表

需求1:使用无序,列表方式,把宋江、吴用、卢俊义、呼延灼展示出来。

<body>
<!-- 需求1:使用无序,列表方式,把宋江、吴用、卢俊义、呼延灼展示出来。
ul 是无序列表
type 属性可以修改列表项前面的符号
li 是列表项
-->
<ul type="none">
<li>宋江</li>
<li>吴用</li>
<li>卢俊义</li>
<li>呼延灼</li>
</ul>
</body>
img标签

img标签可以在 html 页面上显示图片。
需求1:使用 img 标签显示一张图片。并修改宽、高、边框属性

<body>
<!-- 需求 1 :使用 img 标签显示一张图片。并修改宽高,和边框属性
img 标签是图片标签 , 用来显示图片
src 属性可以设置图片的路径
width 属性设置图片的宽度
height 属性设置图片的高度
border 属性设置图片边框大小
alt 属性设置当指定路径找不到图片时 , 用来代替显示的文本内容
在 JavaSE 中路径也分为相对路径和绝对路径 .
相对路径 : 从工程名开始算
绝对路径 : 盘符 :/ 目录 / 文件名
在 web 中路径分为相对路径和绝对路径两种
相对路径 :
. 表示当前文件所在的目录
.. 表示当前文件所在的上一级目录
文件名 表示当前文件所在目录的文件 , 相当于 ./ 文件名 ./ 可以省略
绝对路径 :
正确格式是 : http://ip:port/ 工程名 / 资源路径
错误格式是 : 盘符 :/ 目录 / 文件名
-->
<img src="1.jpg" width="200" height="260" border="1" alt=" 美女找不到"/>
<img src="../2.jpg" width="200" height="260" />
<img src="../imgs/3.jpg" width="200" height="260" />
<img src="../imgs/4.jpg" width="200" height="260" />
<img src="../imgs/5.jpg" width="200" height="260" />
<img src="../imgs/6.jpg" width="200" height="260" />
</body>
表格标签

需求1:做一个 带表头的 三行,三列的表格,并显示边框。
需求 2 :修改表格的宽度,高度,表格的对齐方式,单元格间距。

<body>
<!--
需求 1:做一个 带表头的 ,三行,三列的表格,并显示边框
需求 2:修改表格的宽度,高度,表格的对齐方式,单元格间距。
table 标签是表格标签
border 设置表格标签
width 设置表格宽度
height 设置表格高度
align 设置表格相对于页面的对齐方式
cellspacing 设置单元格间距
tr 是行标签
th 是表头标签
td 是单元格标签
align 设置单元格文本对齐方式
b 是加粗标签
-->
<table align="center" border="1" width="300" height="300" cellspacing="0">
<tr>
<th>1.1</th>
<th>1.2</th>
<th>1.3</th>
</tr>
<tr>
<td>2.1</td>
<td>2.2</td>
<td>2.3</td>
</tr>
<tr>
<td>3.1</td>
<td>3.2</td>
<td>3.3</td>
</tr>
</table>
</body>
跨行跨列表格

需求1:新建一个五行,五列的表格,第一行,第一列的单元格要跨两列,第二行第一列的单元格跨两行,第四行第四列的单元格跨两行两列。

<body>
<!-- 需求 1:
新建一个五行,五列的表格,
第一行,第一列的单元格要跨两列,
第二行第一列的单元格跨两行,
第四行第四列的单元格跨两行两列。
colspan 属性设置跨列
rowspan 属性设置跨行
-->
<table width="500" height="500" cellspacing="0" border="1">
<tr>
<td colspan="2">1.1</td>
<td>1.3</td>
<td>1.4</td>
<td>1.5</td>
</tr>
<tr>
<td rowspan="2">2.1</td>
<td>2.2</td>
<td>2.3</td>
<td>2.4</td>
<td>2.5</td>
</tr>
<tr>
<td>3.2</td>
<td>3.3</td>
<td>3.4</td>
<td>3.5</td>
</tr>
<tr>
<td>4.1</td>
<td>4.2</td>
<td>4.3</td>
<td colspan="2" rowspan="2">4.4</td>
</tr>
<tr>
<td>5.1</td>
<td>5.2</td>
<td>5.3</td>
</tr>
</table>
</body>
iframe框架标签(内嵌窗口)

ifarme标签可以在一个 html 页面上,打开一个小窗口,去加载一个单独的页面。

<body>
我是一个单独的完整的页面<br/><br/>
<!--ifarme 标签可以在页面上开辟一个小区域显示一个单独的页面
ifarme 和 a 标签组合使用的步骤:
1 在 iframe 标签中使用 name 属性定义一个名称
2 在 a 标签的 target 属性上设置 iframe 的 name 的属性值
-->
<iframe src="3. 标题标签.html" width="500" height="400" name="abc"></iframe>
<br/>
<ul>
<li><a href="0- 标签语法.html" target="abc">0-标签语法.html</a></li>
<li><a href="1.font标签.html" target="abc">1.font 标签.html</a></li>
<li><a href="2. 特殊字符.html" target="abc">2.特殊字符.html</a></li>
</ul>
</body>
表单标签

表单就是 html 页面中,用来收集用户信息的所有元素集合.然后把这些信息发送给服务器。
在这里插入图片描述
需求1:创建一个个人信息注册的表单界面 。 包含用户名 , 密码 , 确认密码 。 性别 ( 单选 ) , 兴趣爱好 ( 多选 ) , 国籍 ( 下拉列表)。
隐藏域,自我评价(多行文本域)。重置,提交。

表单的显示
<body>
<!--需求 1:创建一个个人信息注册的表单界面。包含用户名,密码,确认密码。性别(单选),兴趣爱好(多选),国籍(下拉列表)。
隐藏域,自我评价(多行文本域)。重置,提交。-->
<!--
form 标签就是表单
input type=text 是文件输入框 value 设置默认显示内容
input type=password 是密码输入框 value 设置默认显示内容
input type=radio 是单选框 name 属性可以对其进行分组 checked="checked"表示默认选中
input type=checkbox 是复选框 checked="checked"表示默认选中
input type=reset 是重置按钮 value 属性修改按钮上的文本
input type=submit 是提交按钮 value 属性修改按钮上的文本
input type=button 是按钮 value 属性修改按钮上的文本
input type=file 是文件上传域
input type=hidden 是隐藏域 当我们要发送某些信息,而这些信息,不需要用户参与,就可以使用隐藏域(提交的
时候同时发送给服务器)
select 标签是下拉列表框
option 标签是下拉列表框中的选项 selected="selected"设置默认选中
textarea 表示多行文本输入框 (起始标签和结束标签中的内容是默认值)
rows 属性设置可以显示几行的高度
cols 属性设置每行可以显示几个字符宽度
-->
<form>
用户名称:<input type="text" value=" 默认值"/><br/>
用户密码:<input type="password" value="abc"/><br/>
确认密码:<input type="password" value="abc"/><br/>
性别:<input type="radio" name="sex"/><input type="radio" name="sex" checked="checked" /><br/>
兴趣爱好:<input type="checkbox" checked="checked" />Java<input type="checkbox" />JavaScript<input
type="checkbox" />C++<br/>
国籍:<select>
<option>--请选择国籍--</option>
<option selected="selected">中国</option>
<option>美国</option>
<option>小日本</option>
</select><br/>
自我评价:<textarea rows="10" cols="20">我才是默认值</textarea><br/>
<input type="reset" value="abc" />
<input type="submit"/>
</form>
</body>
表单格式化
<form>
<h1 align="center">用户注册</h1>
<table align="center">
<tr>
<td> 用户名称:</td>
<td>
<input type="text" value=" 默认值"/>
</td>
</tr>
<tr>
<td> 用户密码:</td>
<td><input type="password" value="abc"/></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" value="abc"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex"/><input type="radio" name="sex" checked="checked" /></td>
</tr>
<tr>
<td> 兴趣爱好:</td>
<td>
<input type="checkbox" checked="checked" />Java
<input type="checkbox" />JavaScript
<input type="checkbox" />C++
</td>
</tr>
<tr>
<td>国籍:</td>
<td>
<select>
<option>--请选择国籍--</option>
<option selected="selected">中国</option>
<option>美国</option>
<option>小日本</option>
</select>
</td>
</tr>
<tr>
<td>自我评价:</td>
<td><textarea rows="10" cols="20">我才是默认值</textarea></td>
</tr>
<tr>
<td><input type="reset" /></td>
<td align="center"><input type="submit"/></td>
</tr>
</table>
</form>
</body>
表单提交细节
<body>
<!--
form 标签是表单标签
action 属性设置提交的服务器地址
method 属性设置提交的方式 GET(默认值)或 POST
表单提交的时候,数据没有发送给服务器的三种情况:
1、表单项没有 name 属性值
2、单选、复选(下拉列表中的 option 标签)都需要添加 value 属性,以便发送给服务器
3、表单项不在提交的 form 标签中
GET 请求的特点是:
1、浏览器地址栏中的地址是:action 属性[+?+请求参数]
请求参数的格式是:name=value&name=value
2、不安全
3、它有数据长度的限制
POST 请求的特点是:
1、浏览器地址栏中只有 action 属性值
2、相对于 GET 请求要安全
3、理论上没有数据长度的限制
-->
<form action="http://localhost:8080" method="post">
<input type="hidden" name="action" value="login" />
<h1 align="center">用户注册</h1>
<table align="center">
<tr>
<td> 用户名称:</td>
<td>
<input type="text" name="username" value=" 默认值"/>
</td>
</tr>
<tr>
<td> 用户密码:</td>
<td><input type="password" name="password" value="abc"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="boy"/><input type="radio" name="sex" checked="checked" value="girl" /></td>
</tr>
<tr>
<td> 兴趣爱好:</td>
<td>
<input name="hobby" type="checkbox" checked="checked" value="java"/>Java
<input name="hobby" type="checkbox" value="js"/>JavaScript
<input name="hobby" type="checkbox" value="cpp"/>C++
</td>
</tr>
<tr>
<td>国籍:</td>
<td>
<select name="country">
<option value="none">--请选择国籍--</option>
<option value="cn" selected="selected">中国</option>
<option value="usa">美国</option>
<option value="jp">小日本</option>
</select>
</td>
</tr>
<tr>
<td>自我评价:</td>
<td><textarea name="desc" rows="10" cols="20">我才是默认值</textarea></td>
</tr>
<tr>
<td><input type="reset" /></td>
<td align="center"><input type="submit"/></td>
</tr>
</table>
</form>
</body>
其他标签

需求1:div 、span 、p标签

<body>
<!--需求 1:div、span、p 标签的演示
div 标签 默认独占一行
span 标签 它的长度是封装数据的长度
p 段落标签 默认会在段落的上方或下方各空出一行来(如果已有就不再空)
-->
<div>div 标签 1</div>
<div>div 标签 2</div>
<span>span 标签 1</span>
<span>span 标签 2</span>
<p>p 段落标签 1</p>
<p>p 段落标签 2</p>
</body>

CSS

CSS介绍

CSS 是「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

CSS语法规则

在这里插入图片描述
选择器:浏览器根据“选择器”决定受 CSS 样式影响的 HTML 元素(标签)。
属性 (property) 是要改变的样式名,并且每个属性都有一个值。属性和值被冒号分开,并由花括号包围,这样就组成了一个完整的样式声明(declaration),例如:p {color: blue}
多个声明:如果要定义不止一个声明,则需要用分号将每个声明分开。虽然最后一条声明的最后可以不加分号(但尽量在每条声明的末尾都加上分号)
例如:
p{
color:red;
font-size:30px;
}
注:一般每行只描述一个属性
CSS 注释:/注释内容/

CSS和HTML的结合方式

方式一

需求1:分别定义两个 div 、span 个 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。

div 标签 1
div 标签 2
span 标签 1 span 标签 2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--需求 1:分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。-->
<div style="border: 1px solid red;">div 标签 1</div>
<div style="border: 1px solid red;">div 标签 2</div>
<span style="border: 1px solid red;">span 标签 1</span>
<span style="border: 1px solid red;">span 标签 2</span>
</body>
</html>

问题:这种方式的缺点?
1.如果标签多了。样式多了。代码量非常庞大。
2.可读性非常差。
3.CSS代码没什么复用性可言。

方式二

在 head 标签中,使用 style 标签来定义各种自己需要的 css 样式。
格式如下:
xxx {
Key : value value;
}
需求1:分别定义两个 div 、span 个 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。

div 标签 1
div 标签 2
span 标签 1 span 标签 2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--style 标签专门用来定义 css 样式代码-->
<style type="text/css">
/* 需求 1:分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。*/
div{
border: 1px solid red;
}
span{
border: 1px solid red;
}
</style>
</head>
<body>
<div>div 标签 1</div>
<div>div 标签 2</div>
<span>span 标签 1</span>
<span>span 标签 2</span>
</body>
</html>

Css 注释 /* 这是 css 的代码注释 */

问题:这种方式的缺点。
1.只能在同一页面内复用代码,不能在多个页面中复用 css 代码。
2.维护起来不方便,实际的项目中会有成千上万的页面,要到每个页面中去修改。工作量太大了。

方式三

把 css 样式写成一个单独的 css 文件,再通过 link 标签引入即可复用。使用 html 的 标签 导入 css 样式文件。

1、css 文件内容:

div{
border: 1px solid yellow;
}
span{
border: 1px solid red;
}

html 文件代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--link 标签专门用来引入 css 样式代码-->
<link rel="stylesheet" type="text/css" href="1.css"/>
</head>
<body>
<div>div 标签 1</div>
<div>div 标签 2</div>
<span>span 标签 1</span>
<span>span 标签 2</span>
</body>
</html>

CSS选择器

标签名选择器

标签名选择器的格式是:

标签名{
属性:值;
}

标签名选择器,可以决定哪些标签被动的使用这个样式。

div 标签 1
div 标签 2
span 标签 1 span 标签 2 需求 1:在所有 div 标签上修改字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。并且修改所有 span 标签的字体颜色为黄色,字体大小 20 个像素。边框为 5 像素蓝色虚线。

示例代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS 选择器</title>
<style type="text/css">
div{
border: 1px solid yellow;
color: blue;
font-size: 30px;
}
span{
border: 5px dashed blue;
color: yellow;
font-size: 20px;
}
</style>
</head>
<body>
<!--
需求 1:在所有 div 标签上修改字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
并且修改所有 span 标签的字体颜色为黄色,字体大小 20 个像素。边框为 5 像素蓝色虚线。
-->
<div>div 标签 1</div>
<div>div 标签 2</div>
<span>span 标签 1</span>
<span>span 标签 2</span>
</body>
</html>

id选择器

id 选择器的格式是:

#id 属性值{
属性:值;
}

id 选择器,可以让我们通过 id 属性选择性的去使用这个样式。
需求 1:分别定义两个 div 标签,第一个 div 标签定义 id 为 id001 ,然后根据 id 属性定义 css 样式修改字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
第二个 div 标签定义 id 为 id002 ,然后根据 id 属性定义 css 样式 修改的字体颜色为红色,字体大小 20 个像素。边框为 5 像素蓝色点线。

div 标签 1
div 标签 2

示例代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ID 选择器</title>
<style type="text/css">
#id001{
color: blue;
font-size: 30px;
border: 1px yellow solid;
}
#id002{
color: red;
font-size: 20px;
border: 5px blue dotted ;
}
</style>
</head>
<body>
<!--
需求 1:分别定义两个 div 标签,
第一个 div 标签定义 id 为 id001 ,然后根据 id 属性定义 css 样式修改字体颜色为蓝色,
字体大小 30 个像素。边框为 1 像素黄色实线。
第二个 div 标签定义 id 为 id002 ,然后根据 id 属性定义 css 样式 修改的字体颜色为红色,字体大小 20 个像素。
边框为 5 像素蓝色点线。
-->
<div id="id002">div 标签 1</div>
<div id="id001">div 标签 2</div>
</body>
</html>

class选择器(类选择器)

class 类型选择器的格式是:

. class 属性值{
属性:值;
}

class 类型选择器,可以通过 class 属性有效的选择性地去使用这个样式。

需求 1:修改 class 属性值为 class01 的 span 或 div 标签,字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
需求 2:修改 class 属性值为 class02 的 div 标签,字体颜色为灰色,字体大小 26 个像素。边框为 1 像素红色实线。

div 标签 class01
div 标签
span 标签 class01 span 标签 2
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class 类型选择器</title>
<style type="text/css">
.class01{
color: blue;
font-size: 30px;
border: 1px solid yellow;
}
.class02{
color: grey;
font-size: 26px;
border: 1px solid red;
}
</style>
</head>
<body>
<!--
需求 1:修改 class 属性值为 class01 的 span 或 div 标签,字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
需求 2:修改 class 属性值为 class02 的 div 标签,字体颜色为灰色,字体大小 26 个像素。边框为 1 像素红色实线。
-->
<div class="class02">div 标签 class01</div>
<div class="class02">div 标签</div>
<span class="class02">span 标签 class01</span>
<span>span 标签 2</span>
</body>
</html>

组合选择器

组合选择器的格式是:

选择器 1,选择器 2,选择器 n{
属性:值;
}

组合选择器可以让多个选择器共用同一个 css 样式代码。

div 标签 class01

span 标签
div 标签

div 标签 id01

需求 1:修改 class=“class01” 的 div 标签 和 id=“id01” 所有的 span 标签,字体颜色为蓝色,字体大小 20 个像素。边框为 1 像素黄色实线。
示例代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class 类型选择器</title>
<style type="text/css">
.class01 , #id01{
color: blue;
font-size: 20px;
border: 1px yellow solid;
}
</style>
</head>
<body>
<!--
需求 1:修改 class="class01" 的 div 标签 和 id="id01" 所有的 span 标签,
字体颜色为蓝色,字体大小 20 个像素。边框为 1 像素黄色实线。
-->
<div id="id01">div 标签 class01</div> <br />
<span >span 标签</span> <br />
<div>div 标签</div> <br />
<div>div 标签 id01</div> <br />
</body>
</html>

常用样式:

  • 字体颜色
    color:red;
    颜色可以写颜色名如:black, blue, red, green 等颜色也可以写 rgb 值和十六进制表示值:如 rgb(255,0,0),#00F6DE,如果写十六进制值必须加#
  • 宽度
    width:19px;
    宽度可以写像素值:19px;
    也可以写百分比值:20%;
  • 高度
    height:20px;
    高度可以写像素值:19px;
    也可以写百分比值:20%;
  • 背景颜色
    background-color:#0F2D4C
  • 字体样式:
    color:#FF0000;字体颜色红色
    font-size:20px; 字体大小
  • 红色 1 像素实线边框
    border:1px solid red;
  • DIV 居中
    margin-left: auto;
    margin-right: auto;
  • 文本居中:
    text-align: center;
  • 超连接去下划线
    text-decoration: none;
  • 表格细线
    table {
    border: 1px solid black; /设置边框/
    border-collapse: collapse; /将边框合并/
    }
    td,th {
    border: 1px solid black; /设置边框/
    }
  • 列表去除修饰
    ul {
    list-style: none;
    }
    示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06-css 常用样式.html</title>
<style type="text/css">
div{
color: red;
border: 1px yellow solid;
width: 300px;
height: 300px;
background-color: green;
font-size: 30px;
margin-left: auto;
margin-right: auto;
text-align: center;
}
table{
border: 1px red solid;
border-collapse: collapse;
}
td{
border: 1px red solid;
}
a{
text-decoration: none;
}
ul{
list-style: none;
}
</style>
</head>
<body>
<ul>
<li>11111111111</li>
<li>11111111111</li>
<li>11111111111</li>
<li>11111111111</li>
<li>11111111111</li>
</ul>
<table>
<tr>
<td>1.1</td>
<td>1.2</td>
</tr>
</table>
<a href="http://www.baidu.com">百度</a>
<div>我是 div 标签</div>
</body>
</html>

JavaScript

JavaScript 介绍

Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。
JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。
JS 是弱类型,Java 是强类型。
特点:

  1. 交互性(它可以做的就是信息的动态交互)
  2. 安全性(不允许直接访问本地硬盘)
  3. 跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)

JavaScript 和 和 html 代码的结合方式

第一种方式

只需要在 head 标签中,或者在 body 标签中, 使用 script 标签 来书写 JavaScript 代码
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// alert 是 JavaScript 语言提供的一个警告框函数。
// 它可以接收任意类型的参数,这个参数就是警告框的提示信息
alert("hello javaScript!");
</script>
</head>
<body>
</body>
</html>

第二种方式

使用 script 标签引入 单独的 JavaScript 代码文件
文件目录:
在这里插入图片描述

html 代码内容:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--
现在需要使用 script 引入外部的 js 文件来执行
src 属性专门用来引入 js 文件路径(可以是相对路径,也可以是绝对路径)
script 标签可以用来定义 js 代码,也可以用来引入 js 文件
但是,两个功能二选一使用。不能同时使用两个功能
-->
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript">
alert(" 国哥现在可以帅了");
</script>
</head>
<body>
</body>
</html>

变量

什么是变量?变量是可以存放某些值的内存的命名。

JavaScript 的变量类型:
数值类型: number
字符串类型: string
对象类型: object
布尔类型: boolean
函数类型: function

JavaScript 里特殊的值:
undefined 未定义,所有 js 变量未赋于初始值的时候,默认值都是 undefined.
null 空值
NaN 全称是:Not a Number。非数字。非数值。

JS 中的定义变量格式:
var 变量名;
var 变量名 = 值;

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var i;
// alert(i); // undefined
i = 12;
// typeof() 是 JavaScript 语言提供的一个函数。
// alert( typeof(i) ); // number
i = "abc";
// 它可以取变量的数据类型返回
// alert( typeof(i) ); // String
var a = 12;
var b = "abc";
alert( a * b ); // NaN 是非数字,非数值。
</script>
</head>
<body>
</body>
</html>

关系(比较)运算

等于: == 等于是简单的做字面值的比较
全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var a = "12";
var b = 12;
alert( a == b ); // true
alert( a === b ); // false
</script>
</head>
<body>
</body>
</html>

逻辑运算

且运算: &&
或运算: ||
取反运算: !
在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
0 、null、 undefined、””(空串) 都认为是 false;
/*
&& 且运算。
有两种情况:
第一种:当表达式全为真的时候。返回最后一个表达式的值。
第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
|| 或运算
第一种情况:当表达式全为假时,返回最后一个表达式的值
第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值
并且 && 与运算 和 ||或运算 有短路。
短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行
*/
var a = “abc”;
var b = true;
var d = false;
var c = null;
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
/* 在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
0 、 null 、 undefined 、 ””( 空串 ) 都认为是 false ; */
// var a = 0;
// if (a) {
// alert(" 零为真 ");
// } else {
// alert(" 零为假 ");
// }
// var b = null;
// if (b) {
// alert("null 为真 ");
// } else {
// alert("null 为假 ");
// }
// var c = undefined;
// if (c) {
// alert("undefined 为真 ");
// } else {
// alert("undefined 为假 ");
// }
// var d = "";
// if (d) {
// alert(" 空串为真 ");
// } else {
// alert(" 空串为假 ");
// }
/* && 且运算。
有两种情况:
第一种:当表达式全为真的时候。返回最后一个表达式的值。
第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值 */
var a = "abc";
var b = true;
var d = false;
var c = null;
// alert( a && b );//true
// alert( b && a );//true
// alert( a && d ); // false
// alert( a && c ); // null
/* || 或运算
第一种情况:当表达式全为假时,返回最后一个表达式的值
第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值 */
// alert( d || c ); // null
// alert( c|| d ); //false
// alert( a || c ); //abc
// alert( b || c ); //true
</script>
</head>
<body>
</body>
</html>

数组

数组定义方式

JS 中 数组的定义:
格式:
var 数组名 = []; // 空数组
var 数组名 = [1 , ’abc’ , true]; // 定义数组同时赋值元素

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var arr = [true,1]; // 定义一个空数组
// alert( arr.length ); // 0
arr[0] = 12;
// alert( arr[0] );//12
// alert( arr.length ); // 0
// javaScript 语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
arr[2] = "abc";
alert(arr.length); //3
// alert(arr[1]);// undefined
// 数组的遍历
for (var i = 0; i < arr.length; i++){
alert(arr[i]);
}
</script>
</head>
<body>
</body>
</html>

函数

函数的二种定义方式

用 第一种,可以使用 function 关键字来定义函数。

使用的格式如下:
function 函数名(形参列表){
函数体
}
在 JavaScript 语言中,如何定义带有返回值的函数?
只需要在函数体内直接使用 return 语句返回值即可!

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 定义一个无参函数
function fun(){
alert(" 无参函数 fun() 被调用了");
}
// 函数调用 === 才会执行
// fun();
function fun2(a ,b) {
alert(" 有参函数 fun2()了 被调用了 a=>" + a + ",b=>"+b);
}
// fun2(12,"abc");
// 定义带有返回值的函数
function sum(num1,num2) {
var result = num1 + num2;
return result;
}
alert( sum(100,50) );
</script>
</head>
<body>
</body>
</html>

函数的第二种定义方式,格式如下:
使用格式如下:
var 函数名 = function(形参列表) { 函数体 }
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var fun = function () {
alert(" 无参函数");
}
// fun();
var fun2 = function (a,b) {
alert(" 有参函数 a=" + a + ",b=" + b);
}
// fun2(1,2);
var fun3 = function (num1,num2) {
return num1 + num2;
}
alert( fun3(100,200) );
</script>
</head>
<body>
</body>
</html>

注:在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun() {
alert(" 无参函数 fun()");
}
function fun(a,b) {
alert(" 有参函数 fun(a,b)");
}
fun();
</script>
</head>
<body>
</body>
</html>

函数的 arguments 隐形参数 (只在 function 函数内 )

就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。
隐形参数特别像 java 基础的可变长参数一样。
public void fun( Object … args );
可变长参数其他是一个数组。
那么 js 中的隐形参数也跟 java 的可变长参数一样。操作类似数组。
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun(a) {
alert( arguments.length );// 可看参数个数
alert( arguments[0] );
alert( arguments[1] );
alert( arguments[2] );
alert("a = " + a);
for (var i = 0; i < arguments.length; i++){
alert( arguments[i] );
}
alert(" 无参函数 fun()");
}
// fun(1,"ad",true);
// 需求:要求 编写 一个函数。用于计算所有参数相加的和并返回
function sum(num1,num2) {
var result = 0;
for (var i = 0; i < arguments.length; i++) {
if (typeof(arguments[i]) == "number") {
result += arguments[i];
}
}
return result;
}
alert( sum(1,2,3,4,"abc",5,6,7,8,9) );
</script>
</head>
<body>
</body>
</html>

JS 中的自定义对象

Object形式的自定义对象

对象的定义:
var 变量名 = new Object(); // 对象实例(空对象)
变量名.属性名 = 值; // 定义一个属性
变量名.函数名 = function(){} // 定义一个函数
对象的访问:
变量名.属性 / 函数名();

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 对象的定义:
// var 变量名 = new Object(); // 对象实例(空对象)
// 变量名 . 属性名 = 值 ; // 定义一个属性
// 变量名 . 函数名 = function(){} // 定义一个函数
var obj = new Object();
obj.name = " 华仔";
obj.age = 18;
obj.fun = function () {
alert(" 姓名:" + this.name + " ,  年龄:" + this.age);
}
// 对象的访问:
// 变量名 . 属性 / 函数名 ();
// alert( obj.age );
obj.fun();
</script>
</head>
<body>
</body>
</html>

{} 花括号形式的自定义对象

对象的定义:
var 变量名 = { // 空对象
属性名:值, // 定义一个属性
属性名:值, // 定义一个属性
函数名:function(){} // 定义一个函数
};
对象的访问:
变量名.属性 / 函数名();

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 对象的定义:
// var 变量名 = { // 空对象
// 属性名:值 , // 定义一个属性
// 属性名:值 , // 定义一个属性
// 函数名: function(){} // 定义一个函数
// };
var obj = {
name:" 国哥",
age:18,
fun : function () {
alert(" 姓名:" + this.name + " ,  年龄:" + this.age);
}
};
// 对象的访问:
// 变量名 . 属性 / 函数名 ();
alert(obj.name);
obj.fun();
</script>
</head>
<body>
</body>
</html>

js中的事件

什么是事件?事件是电脑输入设备与页面进行交互的响应。我们称之为事件。

常用的事件:

  • onload 加载完成事件: 页面加载完成之后,常用于做页面 js 代码初始化操作
  • onclick 单击事件: 常用于按钮的点击响应操作。
  • onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。
  • onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作
  • onsubmit 表单提交事件: 常用于表单提交前,验证所有表单项是否合法。

事件的注册又分为静态注册和动态注册两种:

什么是事件的注册(绑定)?
其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。

静态注册事件 :通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。

动态注册事件 :是指先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 这种形式赋于事件
响应后的代码,叫动态注册。

动态注册基本步骤:
1、获取标签对象
2、标签对象.事件名 = fucntion(){}
onload加载完成事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// onload 事件的方法
function onloadFun() {
alert(' 静态注册 onload  事件,所有代码');
}
// onload 事件动态注册。是固定写法
window.onload = function () {
alert(" 动态注册的 onload  事件");
}
</script>
</head>
<!-- 静态注册 onload 事件
onload 事件是浏览器解析完页面之后就会自动触发的事件
<body οnlοad="onloadFun();">
-->
<body>
</body>
</html>

onclick 单击事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
alert(" 静态注册 onclick  事件");
}
// 动态注册 onclick 事件
window.onload = function () {
// 1 获取标签对象
/*
* document 是 JavaScript 语言提供的一个对象(文档) <br/>
* get 获取
* Element 元素(就是标签)
* By 通过。。 由。。经。。。
* Id id 属性
*
* getElementById 通过 id 属性获取标签对象
**/
var btnObj = document.getElementById("btn01");
// alert( btnObj );
// 2 通过标签对象 . 事件名 = function(){}
btnObj.onclick = function () {
alert(" 动态注册的 onclick  事件");
}
}
</script>
</head>
<body>
<!-- 静态注册 onClick 事件 -->
<button onclick="onclickFun();">按钮 1</button>
<button id="btn01">按钮 2</button>
</body>
</html>

onblur 失去焦点事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 静态注册失去焦点事件
function onblurFun() {
// console 是控制台对象,是由 JavaScript 语言提供,专门用来向浏览器的控制器打印输出, 用于测试使用
// log() 是打印的方法
console.log(" 静态注册失去焦点事件");
}
// 动态注册 onblur 事件
window.onload = function () {
//1 获取标签对象
var passwordObj = document.getElementById("password");
// alert(passwordObj);
//2 通过标签对象 . 事件名 = function(){};
passwordObj.onblur = function () {
console.log(" 动态注册失去焦点事件");
}
}
</script>
</head>
<body>
用户名:<input type="text" onblur="onblurFun();"><br/>
密码:<input id="password" type="text" ><br/>
</body>
</html>
onchange  内容发生改变事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onchangeFun() {
alert(" 女神已经改变了");
}
window.onload = function () {
//1 获取标签对象
var selObj = document.getElementById("sel01");
// alert( selObj );
//2 通过标签对象 . 事件名 = function(){}
selObj.onchange = function () {
alert(" 男神已经改变了");
}
}
</script>
</head>
<body>
请选择你心中的女神:
<!-- 静态注册 onchange 事件 -->
<select onchange="onchangeFun();">
<option>--女神--</option>
<option>芳芳</option>
<option>佳佳</option>
<option>娘娘</option>
</select>
请选择你心中的男神:
<select id="sel01">
<option>--男神--</option>
<option>国哥</option>
<option>华仔</option>
<option>富城</option>
</select>
</body>
</html>

onsubmit

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >
// 静态注册表单提交事务
function onsubmitFun(){
// 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
alert(" 静态注册表单提交事件---- 发现不合法");
return flase;
}
window.onload = function () {
//1 获取标签对象
var formObj = document.getElementById("form01");
//2 通过标签对象 . 事件名 = function(){}
formObj.onsubmit = function () {
// 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
alert(" 动态注册表单提交事件---- 发现不合法");
return false;
}
}
</script>
</head>
<body>
<!--return false 可以阻止 表单提交 -->
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
<input type="submit" value=" 静态注册"/>
</form>
<form action="http://localhost:8080" id="form01">
<input type="submit" value=" 动态注册"/>
</form>
</body>
</html>

DOM模型

DOM全称是Document Object Model文档对象模型

Document对象

在这里插入图片描述
Document 对象的理解:
第一点:Document 它管理了所有的 HTML 文档内容。
第二点:document 它是一种树结构的文档。有层级关系。
第三点:它让我们把所有的标签都对象化
第四点:我们可以通过 document 访问所有的标签对象。

模拟对象化,相当于:
class Dom{
private String id; // id 属性
private String tagName; //表示标签名
private Dom parentNode; //父亲
private List children; // 孩子结点
private String innerHTML; // 起始标签和结束标签中间的内容
}

Document 对象中的方法介绍

  • document.getElementById(elementId)
    通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
  • document.getElementsByName(elementName)
    通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
  • document.getElementsByTagName(tagname)
    通过标签名查找标签 dom 对象。tagname 是标签名
  • document.createElement( tagName)
    方法,通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名

注:
document 对象的三个查询方法,如果有 id 属性,优先使用 getElementById 方法来进行查询
如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询
如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName

以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。

getElementById
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >
/*
* 需求:当用户点击了较验按钮,要获取输出框中的内容。然后验证其是否合法。 <br/>
* 验证的规则是:必须由字母,数字。下划线组成。并且长度是 5 到 12 位。
* */
function onclickFun() {
// 1 当我们要操作一个标签的时候,一定要先获取这个标签对象。
var usernameObj = document.getElementById("username");
// [object HTMLInputElement] 它就是 dom 对象
var usernameText = usernameObj.value;
// 如何 验证 字符串,符合某个规则 ,需要使用正则表达式技术
var patt = /^\w{5,12}$/;
/*
* test() 方法用于测试某个字符串,是不是匹配我的规则 ,
* 匹配就返回 true 。不匹配就返回 false.
* */
var usernameSpanObj = document.getElementById("usernameSpan");
// innerHTML 表示起始标签和结束标签中的内容
// innerHTML 这个属性可读,可写
usernameSpanObj.innerHTML = " 国哥真可爱!";
if (patt.test(usernameText)) {
// alert(" 用户名合法! ");
// usernameSpanObj.innerHTML = " 用户名合法! ";
usernameSpanObj.innerHTML = "<img src=\"right.png\" width=\"18\" height=\"18\">";
} else {
// alert(" 用户名不合法! ");
// usernameSpanObj.innerHTML = " 用户名不合法! ";
usernameSpanObj.innerHTML = "<img src=\"wrong.png\" width=\"18\" height=\"18\">";
}
}
</script>
</head>
<body>
用户名:<input type="text" id="username" value="wzg"/>
<span id="usernameSpan" style="color:red;">
</span>
<button onclick="onclickFun()">较验</button>
</body>
</html>
getElementsByName
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 全选
function checkAll() {
// 让所有复选框都选中
// document.getElementsByName(); 是根据 指定的 name 属性查询返回多个标签对象集合
// 这个集合的操作跟数组 一样
// 集合中每个元素都是 dom 对象
// 这个集合中的元素顺序是他们在 html 页面中从上到下的顺序
var hobbies = document.getElementsByName("hobby");
// checked 表示复选框的选中状态。如果选中是 true ,不选中是 false
// checked 这个属性可读,可写
for (var i = 0; i < hobbies.length; i++){
hobbies[i].checked = true;
}
}
// 全不选
function checkNo() {
var hobbies = document.getElementsByName("hobby");
// checked 表示复选框的选中状态。如果选中是 true ,不选中是 false
// checked 这个属性可读,可写
for (var i = 0; i < hobbies.length; i++){
hobbies[i].checked = false;
}
}
// 反选
function checkReverse() {
var hobbies = document.getElementsByName("hobby");
for (var i = 0; i < hobbies.length; i++) {
hobbies[i].checked = !hobbies[i].checked;
// if (hobbies[i].checked) {
// hobbies[i].checked = false;
// }else {
// hobbies[i].checked = true;
// }
}
}
</script>
</head>
<body>
兴趣爱好:
<input type="checkbox" name="hobby" value="cpp" checked="checked">C++
<input type="checkbox" name="hobby" value="java">Java
<input type="checkbox" name="hobby" value="js">JavaScript
<br/>
<button onclick="checkAll()">全选</button>
<button onclick="checkNo()">全不选</button>
<button onclick="checkReverse()">反选</button>
</body>
</html>
getElementsByTagName
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 全选
function checkAll() {
// document.getElementsByTagName("input");
// 是按照指定标签名来进行查询并返回集合
// 这个集合的操作跟数组 一样
// 集合中都是 dom 对象
// 集合中元素顺序 是他们在 html 页面中从上到下的顺序。
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++){
inputs[i].checked = true;
}
}
</script>
</head>
<body>
兴趣爱好:
<input type="checkbox" value="cpp" checked="checked">C++
<input type="checkbox" value="java">Java
<input type="checkbox" value="js">JavaScript
<br/>
<button onclick="checkAll()">全选</button>
</body>
</html>
createElement
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
// 现在需要我们使用 js 代码来创建 html 标签,并显示在页面上
// 标签的内容就是: <div> 国哥,我爱你 </div>
var divObj = document.createElement("div"); // 在内存中 <div></div>
var textNodeObj = document.createTextNode(" 国哥,我爱你"); // 有一个文本节点对象 # 国哥,我
爱你
divObj.appendChild(textNodeObj); // <div> 国哥,我爱你 </div>
// divObj.innerHTML = " 国哥,我爱你 "; // <div> 国哥,我爱你 </div>, 但,还只是在内存中
// 添加子元素
document.body.appendChild(divObj);
}
</script>
</head>
<body>
</body>
</html>

节点的常用属性和方法

节点就是标签对象

方法:
通过具体的元素节点调用getElementsByTagName()方法,获取当前节点的指定标签名孩子节点
appendChild( oChildNode )方法,可以添加一个子节点,oChildNode 是要添加的孩子节点

属性:
childNodes
属性,获取当前节点的所有子节点
firstChild
属性,获取当前节点的第一个子节点
lastChild
属性,获取当前节点的最后一个子节点
parentNode
属性,获取当前节点的父节点
nextSibling
属性,获取当前节点的下一个节点
previousSibling
属性,获取当前节点的上一个节点
className
用于获取或设置标签的 class 属性值
innerHTML
属性,表示获取/设置起始标签和结束标签中的内容
innerText
属性,表示获取/设置起始标签和结束标签中的文本

DOM 查询练习

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom 查询</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">
window.onload = function(){
//1. 查找 #bj 节点
document.getElementById("btn01").onclick = function () {
var bjObj = document.getElementById("bj");
alert(bjObj.innerHTML);
}
//2. 查找所有 li 节点
var btn02Ele = document.getElementById("btn02");
btn02Ele.onclick = function(){
var lis = document.getElementsByTagName("li");
alert(lis.length)
};
//3. 查找 name=gender 的所有节点
var btn03Ele = document.getElementById("btn03");
btn03Ele.onclick = function(){
var genders = document.getElementsByName("gender");
alert(genders.length)
};
//4. 查找 #city 下所有 li 节点
var btn04Ele = document.getElementById("btn04");
btn04Ele.onclick = function(){
//1 获取 id 为 city 的节点
//2 通过 city 节点 .getElementsByTagName 按标签名查子节点
var lis = document.getElementById("city").getElementsByTagName("li");
alert(lis.length)
};
//5. 返回 #city 的所有子节点
var btn05Ele = document.getElementById("btn05");
btn05Ele.onclick = function(){
//1 获取 id 为 city 的节点
//2 通过 city 获取所有子节点
alert(document.getElementById("city").childNodes.length);
};
//6. 返回 #phone 的第一个子节点
var btn06Ele = document.getElementById("btn06");
btn06Ele.onclick = function(){
// 查询 id 为 phone 的节点
alert( document.getElementById("phone").firstChild.innerHTML );
};
//7. 返回 #bj 的父节点
var btn07Ele = document.getElementById("btn07");
btn07Ele.onclick = function(){
//1 查询 id 为 bj 的节点
var bjObj = document.getElementById("bj");
//2 bj 节点获取父节点
alert( bjObj.parentNode.innerHTML );
};
//8. 返回 #android 的前一个兄弟节点
var btn08Ele = document.getElementById("btn08");
btn08Ele.onclick = function(){
// 获取 id 为 android 的节点
// 通过 android 节点获取前面兄弟节点
alert( document.getElementById("android").previousSibling.innerHTML );
};
//9. 读取 #username 的 value 属性值
var btn09Ele = document.getElementById("btn09");
btn09Ele.onclick = function(){
alert(document.getElementById("username").value);
};
//10. 设置 #username 的 value 属性值
var btn10Ele = document.getElementById("btn10");
btn10Ele.onclick = function(){
document.getElementById("username").value = " 国哥你真牛逼";
};
//11. 返回 #bj 的文本值
var btn11Ele = document.getElementById("btn11");
btn11Ele.onclick = function(){
alert(document.getElementById("city").innerHTML);
// alert(document.getElementById("city").innerText);
};
};
</script>
</head>
<body>
<div id="total">
<div class="inner">
<p>
你喜欢哪个城市?
</p>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
<br>
<br>
<p>
你喜欢哪款单机游戏?
</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>极品飞车</li>
<li>魔兽</li>
</ul>
<br />
<br />
<p>
你手机的操作系统是?
</p>
<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
</div>
<div class="inner">
gender:
<input type="radio" name="gender" value="male"/>
Male
<input type="radio" name="gender" value="female"/>
Female
<br>
<br>
name:
<input type="text" name="name" id="username" value="abcde"/>
</div>
</div>
<div id="btnList">
<div><button id="btn01">查找#bj 节点</button></div>
<div><button id="btn02">查找所有 li 节点</button></div>
<div><button id="btn03">查找 name=gender 的所有节点</button></div>
<div><button id="btn04">查找#city 下所有 li 节点</button></div>
<div><button id="btn05">返回#city 的所有子节点</button></div>
<div><button id="btn06">返回#phone 的第一个子节点</button></div>
<div><button id="btn07">返回#bj 的父节点</button></div>
<div><button id="btn08">返回#android 的前一个兄弟节点</button></div>
<div><button id="btn09">返回#username 的 value 属性值</button></div>
<div><button id="btn10">设置#username 的 value 属性值</button></div>
<div><button id="btn11">返回#bj 的文本值</button></div>
</div>
</body>
</html>

Java Web

部暑 web 工程到 Tomcat 中

方法一

把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下即可。

访问 Tomcat 下的 web 工程:只需要在浏览器中输入访问地址格式如下:
http://ip:port/工程名/目录下/文件名

方法二

找到 Tomcat 下的 conf 目录\Catalina\localhost\ 下,创建如下的配置文件:
abc.xml 配置文件内容如下:
在这里插入图片描述
Context 表示一个工程上下文
path 表示工程的访问路径:/abc
docBase 表示你的工程目录在哪里
<Context path=“/abc” docBase=“E:\book” />
访问这个工程的路径如下:http://ip:port/abc/ 就表示访问 E:\book 目录.

本地访问和协议访问的区别

手拖 html 页面到浏览器和在浏览器中输入http://ip:端口号/工程名/的区别
手托 html 页面的原理:
在这里插入图片描述
输入访问地址访问的原因:
在这里插入图片描述

ROOT 的工程的访问及默认 index.html 页面的访问

在浏览器地址栏中输入访问地址如下:
http://ip:port/
没有工程名的时候,默认访问的是 ROOT 工程。

当我们在浏览器地址栏中输入的访问地址如下:
http://ip:port/工程名/
没有资源名,默认访问 index.html 页面

使用 idea 开发 web

idea 整合 Tomcat 服务器

操作的菜单如下:File->Settings->Build, Execution, Deployment->Application Servers
在这里插入图片描述
创建模块时,会自动加载已经配置的Tomcat。
在这里插入图片描述

idea中创建web工程

File->New->Module
在这里插入图片描述
选择“Java Enterprise”
在这里插入图片描述
点击“Next”
在这里插入图片描述
点击“Finish”
在这里插入图片描述

web 工程目录介绍

在这里插入图片描述

web 工程添加 jar包

在这里插入图片描述
在这里插入图片描述

idea中部署工程至Tomcat中

建议修改 web 工程对应的 Tomcat 运行实例名称
在这里插入图片描述
确认 Tomcat 实例中有要部署运行的 web 工程模块
在这里插入图片描述
还可以修改 Tomcat 实例启动后默认的访问地址:
在这里插入图片描述

idea中启动、停止 Tomcat 实例

启动 Tomcat 实例

在这里插入图片描述

停止 Tomcat 实例

在这里插入图片描述

重启 Tomcat 实例

在这里插入图片描述

修改工程访问路径

在这里插入图片描述

修改运行的端口号

在这里插入图片描述

修改运行使用的浏览器

在这里插入图片描述

配置热部署

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

羟基“消失术”,化学合成中的巧妙方法

羟基(-OH)是一个很常见的官能团&#xff0c;在有机合成的转化过程中往往起到桥梁作用。在化合物合成过程中由于合成选择的原因通常会先引入一些基团&#xff0c;以降低合成化合物的难度以及提高其产率。而羟基的引入或者生成是比较常见的。羟基化方法有很多&#xff0c;其中包括…

JDBC和Mybatis中的批处理

src目录下创建jdbc.properties mysql驱动5.1.6之后,只需要配置url,username,password mysql 5.1.6之后可以无需Class.forName("com.mysql.jdbc.Driver") * 从jdk1.5之后可以通过配置文件来配置 * 会自动加载mysql驱动jar包下META-INF/services/java.sql.Driver文本中…

Python深度学习股价预测、量化交易策略:LSTM、GRU深度门控循环神经网络|附代码数据

全文链接&#xff1a;https://tecdat.cn/?p37539 原文出处&#xff1a;拓端数据部落公众号 分析师&#xff1a;Shuo Zhang 本文以上证综指近 22 年的日交易数据为样本&#xff0c;构建深度门控循环神经网络模型&#xff0c;从股价预测和制定交易策略两方面入手&#xff0c…

8月29日

思维导图 作业&#xff1a; 仿照string类&#xff0c;实现myString 代码 mystring.h #ifndef MYSTRING_H #define MYSTRING_H#include <iostream> #include<string.h>using namespace std;class myString { private:char *str;int size;public://无参构造myStr…

在自己的数据集上测试coco评价指标——以Mar20为例

参考&#xff1a; 1.在自己的数据集上调用cocoapi计算map 2. COCO Result Format 3.COCO result json 之前的模型都是在COCO数据集上训练&#xff0c;数据集的标注以及结果的生成格式都是按照官方的格式组织的&#xff0c;调用cocoapi和官方下载的instance_val2017.json计算就可…

Win11 操作(七)声音降噪

前言 为了听脚步和不外放声音影响到女朋友休息&#xff0c;于是买了S21头戴式耳机&#xff0c;虽然目的都达到了&#xff0c;但是又有新问题出现 损害队友听力 由于天气炎热&#xff0c;家里都开着风扇&#xff0c;但是耳机没有降噪功能所以我的麦噪音极大&#xff0c;这就导…

OpenLayers3, 设置地图背景

文章目录 一、前言二、代码实现三、总结 一、前言 本文基于OpenLayers3&#xff0c;实现地图加入背景图的功能。 二、代码实现 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head><meta http-equiv"Content-Type"…

封装string

仿照string类&#xff0c;实现mystring #include <iostream> #include<string.h> using namespace std;class MyString {private:char *str; //记录c风格的字符串int size0; //记录字符串实际长度public://无参构造&#xff1a;定义了一个字符串MyStri…

Noise, Dynamic Range and Bit Depth in Digital SLRs --- 数字单反相机中的噪点、动态范围和位深

系列文章目录 文章目录 系列文章目录前言数字单反相机中的噪点、动态范围和位深二、噪声的来源2.1 光子散粒噪声2.2 读出噪声2.3 模式噪声2.4 热噪声2.5 像素响应不均匀性&#xff08;PRNU&#xff09;2.5 量化误差 前言 Noise, Dynamic Range and Bit Depth in Digital SLRs …

golang私有仓库遇到的问题记录

问题1: is this a git repository? 原因&#xff1a;git保存了错误的用户名密码 我是mac系统&#xff0c;在启动台-》其他-》钥匙串&#xff0c;找到git的登录信息&#xff0c;将错误的钥匙串删除即可。 问题2: remote: The project you were looking for could not be found…

HarmonyOS鸿蒙开发( Beta5版)Navigation组件常规加载与动态加载

简介 应用在加载页面时&#xff0c;如果引入暂时不需要加载的模块&#xff0c;会导致页面加载缓慢和不必要的内存占用。例如当页面使用Navigation组件时&#xff0c;主页默认加载子页面&#xff0c;此时若子页面使用了Web组件&#xff0c;则会提前加载Web相关的so库&#xff0…

Mybatis:基础巩固-DQL

目录 一、概述二、数据准备三、基础查询四、条件查询五、聚合函数六、分组查询七、排序查询八、分页查询九、DQL执行顺序 一、概述 主要用于对数据的查询操作&#xff0c;使用的关键字SELECT SELECT 字段列表 FROM 表名 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组后条件列表…

Renesa Version Board和微信小程序通信

目录 概述 1. 系统框架结构 1.1 功能介绍 1.2 系统框图 2 微信小程序开发 2.1 UI介绍 2.2 代码实现 3 功能实现 3.1 通信协议 3.2 系统测试 概述 本文主要介绍基于Renesa Version Board&#xff0c;采集多个传感器数据&#xff0c;并将这些数据通过蓝牙模块发送微信…

《黑神话悟空》:国产3A游戏的崛起与AI绘画技术的融合

一、游戏简介 近年来&#xff0c;国产3A游戏《黑神话悟空》以其精美的画面、丰富的剧情和独特的文化底蕴吸引了众多玩家的关注。这款游戏以中国古典名著《西游记》为背景&#xff0c;讲述了孙悟空历经磨难&#xff0c;最终成长为斗战胜佛的故事。在游戏制作过程中&#xff0c;开…

办公必备,免费的在线万能格式转换工具

在当今数字化时代&#xff0c;文件格式转换已成为办公和日常生活中不可或缺的一部分。随着各种文件格式的不断涌现&#xff0c;人们对于高效、便捷的文件转换工具的需求日益增长。小编将为大家介绍几款免费的在线万能格式转换工具&#xff0c;帮助大家轻松应对各种文件转换需求…

golang uint8 转int出现ascll码值

在Golang中&#xff0c;uint8类型被用来表示ASCII码值。 结果是51 如果是uint8(3)的话结果还是3 所以在我们想把一个uint8类型的字符数字转换为int类型时需要特殊处理 减去对应ASCII码’0’的值 结果就是3了

Python循环结束语句 break语句 continue语句

Python break 语句 Python break语句&#xff0c;就像在C语言中&#xff0c;打破了最小封闭for或while循环。 break语句用来终止循环语句&#xff0c;即循环条件没有False条件或者序列还没被完全递归完&#xff0c;也会停止执行循环语句。 break语句用在while和for循环中。 …

df的 一列,是文字, 比如 xxxxx-1, xxxx-2 , 最后有 -1 或者 -2,把最后的数字减去1,写道一个新的列里面

file_pathrf"D:\file\工作簿1-1.xlsx"# from stutil import PandasUtil import pandas as pd dfpd.read_excel(file_path) # PandasUtil. # df的 一列&#xff0c;是文字&#xff0c; 比如 xxxxx-1, xxxx-2 , 最后有 -1 或者 -2&#xff0c;把 -1 变成 -0&#xff…

【测试面试题】14题常见APP测试面试题(参考答案)

大家好&#xff0c;这份面试题不难&#xff0c;都是一些基础题。 先上一个面试题汇总图&#xff0c;建议大家可以先思考下如果是自己能不能回答全&#xff0c;再去对照看参考答案。 下面为参考答案&#xff1a; 一、基础篇 1、APP的测试流程&#xff1f; APP测试流程与web测…

数分基础(03-3)客户特征分析--Tableau

文章目录 客户特征分析 - Tableau1. 说明2. 思路与步骤3. 数据准备和导入3.1 用EXCEL初步检查和处理数据3.1.1 打开3.1.2 初步检查&#xff08;1&#xff09;缺失值检查缺失值处理 &#xff08;2&#xff09;格式化日期字段&#xff08;3&#xff09;其他字段数据类型 &#xf…