学习Java的第十周

表单标签

概念:表单可以将页面上录入的信息携带到服务器端

<!--
	文本框:<input> type="text" value:默认值 placeholder:提示
	密码框:<input> type="password" value:默认值  placeholder:提示
	单选框:<input> type="radio" checked:默认选中  value:默认值
		  若想使多个单选框互斥,应取一样的name
	下拉框:<select>
				<option value默认值 selected:默认选中>  </option>
		   </select>			selected:默认选中
	多选框:<input type="checkbox">
		   若想多个多选框归为一类,应取相同的名字
	上传文件框<input type="file">
	文本域: <textarea></textarea>
	提交按钮:<input type="submit"> 
	重置按钮:<input type="reset">
-->
<form>
	账户:
		<input type="text" name="username" placeholder="请输入账户" value="root"/><br />
	密码:
		<input type="password" name="password" placeholder="请输入密码"/><br />
	性别:
		<input type="radio" name="sex" value="male" /><input type="radio" name="sex" value="female"checked="checked"/><br />
	地址:
		<select name="city">
			<option value="Wuhan" selected="selected">武汉</option>
			<option value="Xiaogan" >孝感</option>
		</select><br />
	爱好:
		<input checked="checked" type="checkbox" name="hobbys" value="basketball"/>篮球 
		<input checked="checked" type="checkbox" name="hobbys" value="pingpang"/>乒乓球
		<input checked="checked" type="checkbox" name="hobbys" value="badminton"/>羽毛球<br />
	照片:
		<input type="file" name="pic"/><br />
	介绍:
		<textarea name="introduce" placeholder="自我介绍,字数为150以内!"></textarea><br />
			<!--
				<input type="submit"> : 将表单中的内容提交到服务器
			-->	
			<!--<input type="submit" value="注册"/>-->
			<button type="submit">注册</button>
			<!--	
				<input type="reset"> : 将表单中的内容重置为原始状态
			-->
			<!--<input type="reset" value="重置" />-->
			<button type="reset">重置</button>
</form>

一、CSS介绍

含义
CSS指层叠样式表,cascading(层叠) style(样式) sheets(表格)
作用

  • 通过css可以定义html元素如何显示
  • html相当于毛胚房,很多效果达不到,css相当于在毛胚基础上做精装修。
    优点
  • 通过css可以大大提高工作效率,可使html代码与样式代码分离
    书写规范
  • 格式:选择器{属性:属性值;属性:属性值}
    • 选择器:确定当前css修饰的是哪一个元素。

二、CSS和HTML结合

2.1CSS和HTML结合之内联结合

2.11实现

    <div>
    	<font style="font-size: 600px;color: #008000;">这是一个div</font>
    </div>
    <!--
    	使用font标签来改变文本的字体大小和字体颜色
    	font标签设置字体大小,最大只能设定为7.
    	css内联代码:所有的符号必须是在英文半角模式下!!!
    	在标签中使用style属性,格式如下:
    			style="属性名1: 属性值1;属性名2: 属性值2"
    	颜色取值:颜色英文单词/颜色16进制	
    -->

2.12优缺点

  • 优点:简单方便
  • 缺点:复用性差,对少数的特定的元素进行单独设置!

2.2CSS与HTML结合之内部部结合

2.21使用方式

内部结合

  1. 需要在head标签中,使用style标签
  2. 使用选择器选中元素
  3. 编写css代码
  4. 格式:
    选择器 {
    属性名1:属性值1;
    属性名2:属性值2;
    }

2.22实现

<head>
    		<meta charset="UTF-8">
    		<title>CSS和html结合之内部结合</title>
    		<style>
    			font{
    				font-size: 200px;
    				color: darkgreen;
    			}
        	</style>
    </head>
    	<body>
    		<div>
    			<!--字体大小为:200px,字体颜色:绿色-->
    			<font >这是一个font1</font><br />
    			<!--字体大小为:200px,字体颜色:绿色-->
    			<font >这是一个font2</font><br />
    			<!--字体大小为:200px,字体颜色:红色-->
    			<font style="color: red;">这是一个font3</font><br />
    		</div>
    	</body>

2.23优缺点

  • 优点:可以对多个标签进行统一样式设置。
  • 缺点:只能作用于当前页面,复用性不高。

2.3CSS和HTML结合之外部结合

2.31使用方法

外部结合方式
1,新建一个css样式文件
2,编写css代码
3,在html文件中引入css外部文件 ,使用link标签引入

2.32实现

 <head>
    		<meta charset="UTF-8">
    		<title>CSS和html结合之外部结合</title>
    		<!--
    			以上三种结合方式中,推荐用谁?
    			三种都有用!
    			外部结合方式!!
    			html中的相对路径!!!
    		-->
    		<link rel="stylesheet" href="css/css01.css" />
    	</head>
    	<body>	
    		<div>
    			<!--字体大小为:200px,字体颜色:绿色-->
    			<font >这是一个font1</font><br />
    			<!--字体大小为:200px,字体颜色:绿色-->
    			<font >这是一个font2</font><br />
    			<!--字体大小为:200px,字体颜色:红色-->
    			<font >这是一个font3</font><br />
    		</div>
    	</body>

2.33优点

优点:复用性高!简单!

三、访问路径

3.1绝对路径

绝对路径:

  • 不带协议的绝对路径
  • 带协议的绝对路径(如http)

3.2相对路径

相对路径:相对于当前文件所在目录的路径

  • ./:当前目录(一般可以省略)
  • …/:上一级目录

3.3实现

 <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>探讨web中的路径1</title>
    	<!--
    		访问路径
    			绝对路径:不带协议的绝对路径/带协议的绝对路径
    			相对路径:相对于demo08.html资源去访问css01.css资源  ,  ./:当前目录  ; ../:上一级目录
    		demo08.html的访问路径:
    			http://127.0.0.1:8020/day47/demo08.html
    		css01.css的访问路径:
    			http://127.0.0.1:8020/day47/css/css01.css
    			在demo08.html的同一个目录(day47)下访问css文件夹下的css01.css
    			在demo08.html的   同一个目录(day47)-> css文件夹 -> css01.css
    					./(可以省略)					css		css01.css				
    		-->
    		<link rel="stylesheet" href="css/css01.css" />
    	</head>

四、选择器

格式

		css使用格式:
			选择器{
				属性名:属性值;
			}

4.1id选择器

概念

使用#引入,引用的是id属性值

实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>选择器</title>
		<!--
				id选择器:引用的是id属性值
					#id属性值{
						属性名:属性值;
					}
		-->
		<style>
			font{
				font-size: 200px;
			}
			#one{
				color: greenyellow;
			}
			#two{
				color: limegreen;
			}
            #three{
				color: darkgreen;
			}
		</style>
	</head>
	<body>
		<!--字体颜色:淡绿-->
		<font id="one">this is font one</font><br />
		<!--字体颜色:中绿-->
		<font id="two">this is font two</font><br />
		<!--字体颜色:深绿-->
		<font id="three">this is font three</font><br />
	</body>

4.2类选择器

概念

使用.引入,引用的是class属性值

实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>类选择器</title>
		<!--
			类选择器:引用的是class属性值
			格式:
				.class属性值{
					属性名:属性值;
				}
			处理多个元素有相同样式效果的!!!
		-->
		<style>
			font{
				font-size: 200px;
			}
			.one{
				color: greenyellow;
			}
			.two{
				color: limegreen;
			}
			.three{
				color: darkgreen;
			}
		</style>
	</head>
	<body>
		<!--字体颜色:淡绿-->
		<font class="one">this is font one</font><br />
		<font class="one">this is font two</font><br />
		<!--字体颜色:中绿-->
		<font class="two">this is font three</font><br />
		<font class="two">this is font one</font><br />
		<!--字体颜色:深绿-->
		<font class="three">this is font three</font><br />
		<font class="three">this is font two</font><br />
	</body>

4.3标签选择器/元素选择器

概念

使用标签名引入,引用的是标签

实现

	<head>
		<meta charset="UTF-8">
		<title>标签选择器</title>
		<!--
			标签选择器/元素选择器
			格式:
				标签名{
					属性名:属性值;
				}
			
			将font标签中的文本颜色修改为红色
			将span标签中的文本颜色修改为蓝色
			将div标签中的文本颜色修改为绿色
			所有的文本大小都为300px
		-->
		<style>
			body{
				font-size: 200px;
			}
			font{
				color: red;
			}
			span{
				color: blue;
			}
			div{
				color: green;
			}
		</style>
	</head>
	<body>
		<font>this is a font</font><br />
		<span>this is a span</span><br />
		<font>this is a font</font><br />
		<div>this is a div</div><br />
		<span>this is a span</span><br />
		<font>this is a font</font><br />
		<div>this is a div</div><br />
	</body>

4.4选择器分组

概念

选择器分组:如果多个选择器中的css代码相同,那么就可以将这多个选择器划为一组。

实现

<head>
		<meta charset="UTF-8">
		<title>选择器分组</title>
		<!--
			格式:
				id选择器,class选择,元素选择器{
					属性名:属性值;
				}
			font/span/div中的文本内容字体大小为200px,字体颜色为绿色
		-->
		<style>
			#f1,.s1,div{
				font-size: 200px;
				color: green;
			}
		</style>
	</head>
	<body>
		<font id="f1">this is a font</font><br />
		<span class="s1">this is a span</span><br />
		<div>this is a div</div><br />
	</body>

4.5衍生选择器

概念

衍生选择器/上下文选择器:依据元素所在的位置进行元素的选择

实现

<head>
		<meta charset="UTF-8">
		<title>衍生选择器</title>
		<!--
			格式:
				父选择器 子选择器{
					属性名:属性值;
				}
				父选择器:可以是id选择器、class选择器、元素选择器
				子选择器:可以是id选择器、class选择器、元素选择器
			需求:设置span中的font中内容样式。不准用id选择器、内联、class选择器
			先找到span,再找到font
		-->
		<style>
			span font{
				font-size: 200px;
				color: deepskyblue;
			}	
		</style>	
	</head>
	<body>
		<span>
			<font>这是一个font</font>
		</span>
		<div>
			<font>这是一个font</font>
		</div>
	</body>

4.6选择器优先级

总结

优先级:内联样式 > id选择器 > 类选择器 > 标签选择器

规律

规律:作用范围越小,优先级越大

实现

<head>
		<meta charset="UTF-8">
		<title>选择器的优先级</title>
		<style>
			/*标签选择器*/
			font{
				font-size: 50px;
				color: yellow;
			}
			/*类选择器*/
			.clazz{
				font-size: 150px;
				color: orange;
			}
			/*id选择器*/
			#id1{
				font-size: 250px;
				color: orangered;
			}
		</style>
	</head>
	<body>
		<!--内联样式-->
		<font id="id1" class="clazz" style="font-size: 350px; color: red;">
			这是一个font
		</font>
	</body>

五、CSS伪类

实现

<head>
		<meta charset="UTF-8">
		<title>css伪类</title>
		<!--
			a:link {color: #FF0000}	/* 未访问的链接 */
			a:visited {color: #00FF00}	/* 已访问的链接 */
			a:hover {color: #FF00FF}	/* 鼠标移动到链接上 */
			a:active {color: #0000FF}	/* 选定的链接 */
		-->
		<style>
			a:link {
				/* 未访问的链接 */
				color: cornflowerblue;
			}
			a:visited {
				/* 已访问的链接 */
				color: red;
			}
			a:hover {
				/* 鼠标移动到链接上 */
				color: orange;
			}
			a:active {
				/* 选定的链接 */
				color: green;
			}
			font:hover{
				color: green;
				font-size: 100px;
			}
			button{
				background-color: orange;
			}
			button:hover{
				background-color: orangered;
			}
		</style>
	</head>

	<body>
		<a href="index.html">this i a super link</a><br />
		<font>this is a font element</font><br />
		<button>按钮</button><br />
	</body>

注意事项

  • a:hover必须被置于a:link 和a:visited之后。
  • a:active必须被置于a:hover之后。

六、CSS字体属性

概念

设置字体属性是样式表的最常见用途之一。CSS 字体属性允许您设置字体系列 (font-family) 和字体加粗 (font-weight),您还可以设置字体的大小、字体风格(如斜体)和字体变形(如小型大写字母)。

实现

<<head>
		<meta charset="UTF-8">
		<title>css中的字体属性</title>
		<!--
			font-family:
				微软雅黑、楷体、宋体、仿宋。如果浏览器不支持字体系列,就会使用默认的字体系列(微软雅黑!),比如:草书
			font-size:
				字体大小
			font-style:
				字体倾斜度
			font-weight:
				字体的粗细
		-->
		<style>
			
			span{
				font-family: "草书";
				font-size: 100px;
				font-style: oblique;
				font-weight: bolder;
			}	
		</style>
	</head>
	<body>
		<span>这是一个span标签</span>
	</body>

七、CSS文本属性

概念

通过文本属性,您可以改变文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进,等等。

实现

<head>
		<meta charset="UTF-8">
		<title>css文本属性</title>
		<style>	
			/*
			 	css文本属性
			 	direction:
			 		ltr: left to right
			 		rtl: right to left
			 	line-height:
			 		行高
			 	text-align:
			 		文本的对齐方式
			 	text-decoration
			 		文本装饰  underline none line-through
			 		
			 	letter-spacing
			 		字符间距,字符与字符之间的间距
			 	word-spacing:
			 		单词间距,单词与单词之间的间距			  
			 */
			div{
				font-size: 50px;
				color: gray;
				direction: ltr;
				text-align: left;
				text-decoration: none;
			}
			a{
				font-size: 50px;
				text-decoration: none;
			}
		</style>
	</head>
	<body>
		<div>
			这是一个div
		</div>
		<a href="index.html">超链接</a>
	</body>

八、CSS的背景属性

概念:

CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果。

实现

<head>
		<meta charset="UTF-8">
		<title>css背景属性</title>
		<!--
        	background-color 设置元素的背景颜色 
        	background-image 把图像设置为背景 
        -->
		<style>
			body{
				background-color: burlywood;
				color: red;
				font-size: 50px;
				background-image: url(img/kuli.png);
				background-size:cover ;
			}
		</style>
	</head>
	<body>
		青青草原
	</body>

九、CSS的尺寸属性

概念

CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。

常用属性

属性描述
height设置元素的高度。
line-height设置行高。
max-height设置元素的最大高度。
max-width设置元素的最大宽度。
min-height设置元素的最小高度。
min-width设置元素的最小宽度。
width设置元素的宽度。

实现

<head>
		<meta charset="UTF-8">
		<title>css尺寸</title>
		<!--
        	css尺寸属性对行内元素无效,img例外
        -->
		<style>
			img{
				min-width: 100px;
				max-width: 300px;
				
				min-height: 100px;
				max-height: 300px;
			}
		</style>
	</head>
	<body>
		<img src="img/kuli.png" />
	</body>

注意

css尺寸属性对行内元素无效,img例外

十、CSS列表属性

概念

CSS 列表属性允许你放置、改变列表项标志,或者将图像作为列表项标志。

常用属性

属性描述
list-style简写属性。用于把所有用于列表的属性设置于一个声明中。
list-style-image将图象设置为列表项标志。
list-style-position设置列表中列表项标志的位置。
list-style-type设置列表项标志的类型。

实现

<head>
		<meta charset="UTF-8">
		<title>CSS列表项</title>
		<!--
        	list-style-image 将图象设置为列表项标志。 
			list-style-position 设置列表中列表项标志的位置。 
			list-style-type 设置列表项标志的类型。 
        -->
        <style>
        	ul{
        		text-align: center;
        		list-style-image: url(img/kuli.png);
        		/*list-style-type: circle;*/
        		list-style-position: inside;
        	}
        </style>
	</head>
	<body>
		<ul>
			<li>李小龙</li>
			<li>成龙</li>
			<li>李连杰</li>
		</ul>
	</body>

十一、CSS边框属性

概念

元素的边框 (border) 是围绕元素内容和内边距的一条或多条线。

CSS border 属性允许你规定元素边框的样式、宽度和颜色

常用属性

属性描述
border简写属性,用于把针对四个边的属性设置在一个声明。
border-style用于设置元素所有边框的样式,或者单独地为各边设置边框样式。
border-width简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。
border-color简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。
border-bottom简写属性,用于把下边框的所有属性设置到一个声明中。
border-bottom-color设置元素的下边框的颜色。
border-bottom-style设置元素的下边框的样式。
border-bottom-width设置元素的下边框的宽度。
border-left简写属性,用于把左边框的所有属性设置到一个声明中。
border-left-color设置元素的左边框的颜色。
border-left-style设置元素的左边框的样式。
border-left-width设置元素的左边框的宽度。
border-right简写属性,用于把右边框的所有属性设置到一个声明中。
border-right-color设置元素的右边框的颜色。
border-right-style设置元素的右边框的样式。
border-right-width设置元素的右边框的宽度。
border-top简写属性,用于把上边框的所有属性设置到一个声明中。
border-top-color设置元素的上边框的颜色。
border-top-style设置元素的上边框的样式。
border-top-width设置元素的上边框的宽度。
  • border-radius圆角边框

实现

<head>
		<meta charset="UTF-8">
		<title>css边框属性</title>
		<style>
			body{
				text-align: center;
			}
			#d1{
				width: 300px;
				height: 300px;
				border: dotted greenyellow 10px;
				/*
				 * 左边框
				 * 样式:点状
				 * 颜色:淡绿
				 * 宽度:10px
				 */
				/*
					border-left-style: dotted;
					border-left-color: greenyellow;
					border-left-width: 10px;
				*/
				/*border-left: dotted greenyellow 10px;*/
				
				/*
				 * 上边框
				 * 样式:虚线
				 * 颜色:中绿
				 * 宽度:15px
				 */
				/*
				border-top-style: dashed;
				border-top-color: mediumseagreen;
				border-top-width: 15px;
				*/
				
				/*border-top: dotted greenyellow 10px;*/
				/*
				 * 右边框
				 * 样式:实线
				 * 颜色:绿
				 * 宽度:20px
				 */
				/*
				border-right-style: solid;
				border-right-color: green;
				border-right-width: 20px;
				*/
				/*border-right:dotted greenyellow 10px;*/
				
				/*
				 * 下边框
				 * 样式:实线
				 * 颜色:绿
				 * 宽度:20px
				 */
				/*
				border-bottom-style: double;
				border-bottom-color: darkgreen;
				border-bottom-width: 25px;
				*/
				/*border-bottom: dotted greenyellow 10px;*/
			}
		</style>
	</head>
	<body>
		<img id="d1" src="img/girl04.jpg" />
	</body>

圆角边框实现

border-radius圆角边框
<head>
		<meta charset="UTF-8">
		<title>CSS圆角边框</title>
		<style>
			img{
				width: 600px;
				height: 600px;
				/*border-radius: 300px;*/
                border-radius: 50%;
			}
		</style>
	</head>
	<body>
		<img src="img/kuli.png" />
	</body>

CSS高级

一、盒子模型

概念

CSS框模型(Box Model)规定了元素处理元素内容、内边距、边框和外边框的方式

术语解释

  • element:元素。
  • padding:内边距,边框距元素的距离。
  • border:边框。
  • margin:外边框,边框距其他元素边框的距离。
  • width:元素内容的宽度
  • height:元素内容的高度

注意事项

  • 内边距和外边距的值可以是负数。
  • 在页面上,设置margin-right无效,因为元素默认是左对齐,不管怎么设置都是左对齐,所以将元素设置为右对齐就可以看到效果,float:right。

实现

<head>
		<meta charset="UTF-8">
		<title>css盒子模型基本使用</title>
		<!--
			内边距:边框到元素内容的距离
			padding:同时设置左上右下内边距
			padding-left/padding-top/padding-right/padding-bottom
			外边距:边框到其他元素的距离
			margin:同时设置左上右下外边距
			margin-left/margin-top/margin-right/margin-bottom
					
			浏览器:元素进行渲染的时候,是从左往右进行渲染,
			相当于现实生活中,排队买东西,margin-right告诉最后一个人,离下一个人要有200米远
		-->
		<style>
			body{
				float: right;
			}
			img{
				width: 200px;
				height: 100px;
				border: 5px solid blue;
			}
			#img1{
				/*padding: 10px;
				margin: 50px;*/
			}
			#img2{
				/*padding: 15px;
				margin: 100px;*/
			}
			#img3{
				/*padding-top: 20px;*/
				/*margin-left: 150px;*/
				margin-right: 200px;
			}
		</style>
	</head>
	<body>
		<img id="img1" src="img/girl01.jpg" />
		<img id="img2" src="img/girl02.jpg" />
		<img id="img3" src="img/girl03.jpg" />
	</body>

二、CSS定位

2.1概念

CSS 定位 (Positioning) 属性允许你对元素进行定位。

2.2常用属性

属性描述
position把元素放置到一个静态的、相对的、绝对的、或固定的位置中。固定(fix)、相对relative、绝对absolute、静态static
top定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。
right定义了定位元素右外边距边界与其包含块右边界之间的偏移。
bottom定义了定位元素下外边距边界与其包含块下边界之间的偏移。
left定义了定位元素左外边距边界与其包含块左边界之间的偏移。对元素进行左偏移
overflow设置当元素的内容溢出其区域时发生的事情。
clip设置元素的形状。元素被剪入这个形状之中,然后显示出来。
vertical-align设置元素的垂直对齐方式。
z-index设置元素的堆叠顺序。

2.3固定定位

2.31实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>css固定定位</title>
		<!--
			position:fixed
			需求:完成小广告
		-->
		<style>
			img{
				position: fixed;
				width: 350px;
				height: 200px;
				right: 0px;
				bottom: 0px;
			}
			p{
				font-size: 200px;
			}
		</style>
	</head>
	<body>
		<a href="https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%C3%CD%C4%D0&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111"><img src="img/boy01.jpg" /></a>
		
		<p>这是一个p</p>
		<p>这是一个p</p>
		<p>这是一个p</p>	
		<p>这是一个p</p>
		<p>这是一个p</p>
		<p>这是一个p</p>		
		<p>这是一个p</p>
		<p>这是一个p</p>
		<p>这是一个p</p>
		<p>这是一个p</p>
		<p>这是一个p</p>
	</body>
</html>

2.4相对定位

2.41概念

设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。

2.41注意

  • 在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。

2.42实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>css相对定位</title>
		<!--
			设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。
			相对于原来的位置进行偏移!!!
		-->
		<style>
			#s1{
				background-color: red;
			}
			#s2{
				background-color: orange;
				position: relative;
				top: 20px;
				left: 20px;
			}
			#s3{
				background-color: cornflowerblue;
			}
		</style>
	</head>
	<body>
		<span id="s1">
			这是span1
		</span>
		<span id="s2">
			这是span2
		</span>	
		<span id="s3">
			这是span3
		</span>
	</body>
</html>

2.5绝对定位

2.51概念

  • 绝对定位的元素的位置相对于最近的已定位父元素。
  • 设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框

2.52实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>css绝对定位</title>
		<!--
			并相对于其包含块定位,
			元素原先在正常文档流中所占的空间会关闭
		-->
		<style>
			body{
				/*margin: 0px;*/
			}
			#s1{
				background-color: red;
			}
			#s2{
				background-color: orange;
				position: absolute;
				top: 50px;
				left: 50px;
			}
			#s3{
				background-color: cornflowerblue;
			}
		</style>
	</head>
	<body>
		<span id="s1">
			这是一个span1
		</span>
		<span id="s2">
			这是一个span2
		</span>
		<span id="s3">
			这是一个span3
		</span>	
	</body>
</html>

三、块级元素和行内元素

3.1块级元素

  • 块级元素前后会带有换行符,占用一整行。
  • 常见的块级元素:div

3.1行内元素

  • 行内元素前后没有换行符,只包裹内容。
  • 常见的行内元素:span
  • margin-top、margin-bottom、padding-top、padding-bottom设置无效

3.3实现

<html>
	<head>
		<meta charset="UTF-8">
		<title>css块级元素和行内元素</title>
		<!--
			1,行内元素:元素仅仅包裹内容,常见:span , padding-top/padding-bottom , margin-top/margin-bottom 存在问题
			2,块级元素:占满整一行,常见:div
		-->
		<style>
			div{
				background-color: deepskyblue;
				
				display: inline;
				padding-top: 10px;
				margin-top: 100px;
			}	
			span{
				background-color: orange;
				margin-top: 100px;
				display: block;		
			}	
		</style>
	</head>
	<body>
		<div>
			这是一个div
		</div>
		
		<span>
			这是一个span
		</span>
	</body>
</html>

四、伸缩布局flex

  • CSS3在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开发中可以发挥极大的作用。

名词解释

  • 主轴:main axis:主轴,默认是水平方向(row)
  • 侧轴:cross axis:侧轴,默认是垂直方向
  • flex container:伸缩布局
  • flex item:伸缩元素
  • 主轴和侧轴并不是固定不变,可以通过flex-direction进行切换,默认为水平方向(row)

案例一

<html>
	<head>
		<meta charset="UTF-8">
		<title>css伸缩布局入门案例一</title>
		<!--
			完成以下图示布局,左边是菜单栏(40%),右边是内容栏(60%),高度填充整个屏幕。
			浏览器 -> html -> body > container -> left/right
		-->
		<style>
			html{
				height: 100%;
			}
			body{
				/*按照父容器的高度的100%进行设定*/
				height: 100%;
				margin: 0px;
			}
			/*让id为container的容器为伸缩布局*/
			#container{
				display: flex;
				/*按照父容器的高度的100%进行设定*/
				height: 100%;
			}
			#left{
				background-color: indianred;
				width: 40%;
				/*按照父容器的高度的100%进行设定*/
				height: 100%;
			}
			#right{
				background-color: cornflowerblue;
				width: 60%;
				height: 100%;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="left">left</div>
			<div id="right">right</div>
		</div>
	</body>
</html>

案例二

<html>
	<head>
		<meta charset="UTF-8">
		<title>css伸缩布局入门案例二</title>
		<!--
			完成以下图示布局,上边是菜单栏(40%),下边是内容栏(60%),宽度填充整个屏幕。
		-->
		<style>
			html{
				height: 100%;
			}			
			body{
				height: 100%;
				margin: 0px;
			}
			#container{
				display: flex;
				/*改变主轴方向*/
				flex-direction: column;
				height: 100%;
			}
			#top{
				background-color: orange;
				height: 40%;
			}
			#bottom{
				background-color: dodgerblue;
				height: 60%;
			}	
		</style>
	</head>
	<body>
		<div id="container">
			<div id="top">top</div>
			<div id="bottom">bottom</div>
		</div>
	</body>
</html>

tomcat

一、tomcat的配置

A,JAVA_HOME配置

tomcat依赖java的环境变量,JAVA_HOME

B,端口配置

tomcat安装目录  -> conf文件夹 -> server.xml中

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

二、tomcat的目录结构

在这里插入图片描述

三、Web项目

A_Web项目分类

Web静态项目

		包含都是静态资源:html、js、css、图片、音频等等

Web动态项目: 不是必须包含动态资源

		包含都是静态资源:html、js、css、图片、音频等等

		那么和静态项目的区别在哪里?可以有动态资源及WEB-INF文件夹

		通过http://localhost:8080/    访问的资源是来自于tomcat服务器的动态web项目(内置),

		而在tomcat的一个安装目录中,是由一个webapps的文件夹专门用来部署web项目

B_总结

一个静态web项目,肯定都是静态资源

一个动态web项目,可以有静态资源,可以有动态资源, 必须有WEB-INF文件夹及web.xml

工作中使用动态web项目

四、tomcat部署项目

A_直接将项目放到webapps下

B_虚拟目录初级版

将tomcat目录以外的资源部署到容器中

在tomcat的目录 ->  conf文件夹 -> server.xml中 , 加一个<Contex>



<Context docBase="项目路径" path="项目访问名称"/>

	从tomcat6.0开始,以上的配置方案,并不推荐使用!!!

	改动了tomcat的server.xml文件,一旦出错,tomcat容器裂开了!!!

C_虚拟目录优化版

基于虚拟目录初级版!!

1_tomcat安装目录 -> conf文件夹 -> catalina -> localhost

2_新建一个任意名称的xml文件

3_需要到xml文件中编写如下代码:

<?xml version="1.0" encoding="utf-8" ?>
<Context docBase="C:\Users\qiuzhiwei\Desktop\dynamicproject"/>

D_如何访问部署成功之后的项目中的资源?

1_访问到tomcat容器

		http://localhost:8080/

2_访问到项目

		http://localhost:8080/dynamicproject/

3_访问到资源

		http://localhost:8080/dynamicproject/a.jpg

4_注意事项

		如果访问路径只写到http://localhost:8080/dynamicproject/,默认访问index开头的html文件或jsp文件...

E_总结

tomcat的部署总共是有三种方式,推荐使用第一种和第三种方式!!!

而且,idea部署项目使用和第三种方式差不多,要更复杂点!!!

五、web动态项目的相关设置

A_访问网址

http://localhost:8080/dynamicproject

http://localhost:8080/dynamicproject/index.html

http://localhost:8080/dynamicproject/index.jsp

默认会访问index.hhtml / index.jsp

为什么?

tomcat安装目录 -> conf文件夹 -> web.xml



    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

上述配置代码,是设置tomcat容器中的每个项目的默认页面是index.html、index.htm、index.jsp

所以,自定义的web项目也部署到tomcat容器中,那么就会遵守上述规定!!

如果,不想遵守以上约定,怎么处理?

	方式一:直接修改tomcat中的web.xml,

		

    <welcome-file-list>
        <welcome-file>demo01.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

	但是这样处理存在问题,所有的项目的欢迎页面都会跟随改变!!!

方式二:直接修改项目自带的web.xml

	每一个web动态项目都会包含web.xml

	加入以下代码:

    <welcome-file-list>
        <welcome-file>demo01.html</welcome-file>
        <welcome-file>demo01.htm</welcome-file>
        <welcome-file>demo01.jsp</welcome-file>
    </welcome-file-list>

		以上配置仅针对当前项目有效!!!

B_项目中的wb.xml和tomcat中的web.xml,有什么关系?

类似于java中的继承关系(父子关系),

如果tomcat中的web.xml的配置无法满足当前的项目的需求,那么就可以更改项目中的web.xml,覆盖tomcat中的web.xml配置

回顾:子父类中的方法重写!!!

				父类的方法中的功能无法满足子类的需求,就需要进行方法重写!!

验证tomcat启动成功

1,验证tomcat启动成功
打开浏览器,
在网址栏上,输入:htttp://ip:端口号/资源名称

htttp://localhost:端口号/资源名称
ip:tomcat软件所在的设备的ip , localhost(127.0.0.1) / 192.168.50.4
htttp://localhost:8080/资源名称
端口:tomcat的对应的端口,默认是8080
htttp://localhost:8080/
资源名称

六、IDEA部署web应用程序

  1. 创建一个JavaWeb工程,Java Enterprise 、Web Application

  2. 项目名称、工作空间的选择

  3. JavaWeb目录介绍
    在这里插入图片描述

  4. DEA配置tomcat

    • 选择Edit Configurations,
    • 点击加号 ->tomcat server -> local
    • 点击Configure -> 点击加号 -> 选择tomcat
  5. tomcat配置
    tomcat插件
    on update action:
    Redeploy:重新部署项目
    项目配置:部署项目到tomcat访问名称

七、idea部署Web项目的方式

  1. 概念
    idea部署web项目的方式,本质就是虚拟目录优化版,但是有一些区别!

  2. 步骤

    1. 根据本地安装的tomcat,会给当前项目生成一个tomcat镜像,部署到tomcat镜像相当于部署到本地tomcat中
    2. tomcat镜像部署项目的方式是虚拟目录优化版, 镜像的安装目录 -> conf -> catalina -> localhost ,就找到了day50.xml配置文件
    <Context path="/day50" docBase="F:\workspace\nz2002\day50\out\artifacts\day50_war_exploded" />

以上配置说明,

day50项目,它的访问名称是"/day50",day50的资源部署路径是:"F:\workspace\nz2002\day50\out\artifacts\day50_war_exploded",

这就要求,day50项目中的资源应该都需要放到day50_war_exploded文件夹中!!!

八、idea中的web项目的哪些内容部署到tomcat中

  1. 概念
    根据上一个知识点,只有资源来到了day50_war_exploded文件夹中,才意味着部署成功!!!

  2. 到底有哪些可以部署?

  • src文件夹:
    • 可以部署上去!部署到了项目中的\WEB-INF\classes文件夹中
  • web文件夹:
    • 可以部署上去!部署到了项目目录中!
  • day50项目下:
    • 不可以部署上去

Http协议

  1. 协议
    两个设备进行数据交换的约定!

  2. Http协议

    超文本传输协议(hypertext transfer protocl)

    超文本:字符、音频、视频、图片等等

    基于tcp协议。tomcat服务器底层实现本质上就是TCP(Socket)

一、通过抓包的方式演示http协议

经过演示发现,浏览器和服务器,它们之间进行交互,是一个请求-响应模型!!!

在这里插入图片描述

  • 请求:

    • 请求行
    • 请求头
    • 请求正文
  • 响应:

    • 响应行
    • 响应头
    • 响应正文

二、请求的执行流程

在这里插入图片描述

  • 发起请求
  • 域名解析
    本地域名解析器(C:\Windows\System32\drivers\etc\host),
    如果本地解析器无法解析,那么就交给互联网上的DNS解析器
    得到IP
  • 根据ip和端口,可以得到一个Socket对象,执行请求
    携带请求行、请求头、请求正文
  • 服务器响应浏览器
    携带响应行、响应头、响应正文

三、http请求

  • 请求组成
    请求行、请求头、请求正文
  • 请求行
    • Request URL : 请求路径,告诉服务器要请求的资源路径
    • Request Method : 请求方式 , GET/POST
    • protocol : http协议版本
  • GET请求和POST请求:
    • get请求只能携带小数据、get请求下的请求参数会直接拼接到Request URL(请求网址)后面,QueryStringParameters
    • post请求可以携带大数据、post请求下的请求参数会存放到请求正文
    • 请求参数:比如,表单中的输入框中的值.
    • 如果我们要做文件上传,需要用到post请求,文件比较大!!
  • 请求头
    • Content-Type:浏览器告诉服务器,请求正文的数据类型
    • User-Agent:浏览器告诉服务器,我是个什么样的浏览器
  • 请求正文
    • 请求正文,只有当请求方式为post,且有请求参数时才会有请求正文!!!
    • Form Data
      在这里插入图片描述

四、Http响应

  • Http响应组成
    响应行、响应头、响应正文

  • 响应行

    • Status Code : 响应状态码
    • 常见的有:
      • 200:服务器响应成功
      • 302: 告诉浏览器,进行重定向
      • 304: 页面上的内容没有发生改变,不需要重新请求服务器
      • 404: 没有对应的服务器资源
      • 500:服务器内部错误!
  • 响应头

    • Location:告诉浏览器重定向的资源路径,需要结合响应状态码302使用
    • Content-Type:服务器告诉浏览器,响应正文的数据类型
    • Content-Type:text/html;charset=utf-8; 服务器告诉浏览器,响应正文是文本和html标签;告诉浏览器,应该以utf-8的形式进行解码!浏览器就会以html标签及utf-8的形式对响应正文进行渲染显示!!!
    • refresh:定时跳转
    • Content-Disposition:文件下载
  • 响应正文

    • 浏览器显示的内容

Servlet的概述及入门

  • 概念
    servlet就是一个java程序,可以和浏览器进行交互,servlet的使用需要有服务器编译环境的支持!!
  • 服务器编译环境确认和设置
    Extenal Libaries中必须要有服务器的jar包
    在这里插入图片描述
    而上述图中,只有java的编译环境!不支持服务器的编译环境,比如:HttpServlet!
  • 得让当前工程支持web服务器的编译环境,解决步骤如下:
    在这里插入图片描述
    在这里插入图片描述

Servlet的入门案例

  • 自定义Servlet继承HttpServlet
  • 重写doGet方法和doPost方法
  • 在web.xml配置servlet
    • 声明自定义Servlet
    • 给自定义Servlet配置访问名称
  • Servlet的执行流程
    • 浏览器发起请求: http://localhost:8080/day50/demo01
    • 就会在服务器中找访问名称为demo01的Servlet -> Demo01Servlet
    • 请求的处理就交给了Demo01Servlet的实例,根据请求方式get/post,决定是给doGet还是doPost方法处理!!!
  • 注意事项
    • 不管是get请求还是post请求,对于服务器来说,没差别的!!!
    • get请求将请求参数放到请求网址
    • post请求将请求参数放到请求正文
    • 服务器最终无非就要获取请求参数。getParameter()方法!

Servlet概念

  1. 概念
    HttpServlet继承于GenericServlet、GenericServlet实现于Servlet,也就是说Servlet是顶层接口!!!
    在这里插入图片描述
  2. 如果要实现Servlet功能

方式一:实现Servlet接口

在servlet接口中,没有doGet和doPost方法,处理请求是service方法(抽象的)

方式二:继承GenericServlet类

在GenericServlet类中,没有doGet和doPost方法,处理请求是service方法(抽象的)

方式三:继承HttpServlet类

猜想,HttpServlet类中重写service方法。

根据源码,发现重写service方法中,

有将ServletRequest强转为HttpServletRequest, 

将ServletResponse强转为HttpServletResponse

以上强转是因为,ServletRequest和ServletResponse并没有针对Http协议做优化!!!无法专门针对http协议调用方法!!

HttpServletRequest和HttpServletResponse有针对http协议做优化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值