java 2106 第七周总结

2023-11-11 03:10
文章标签 java 总结 第七 2106

本文主要是介绍java 2106 第七周总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本周总结

一、数据库

1、约束之外键约束

foreign key
设置方式:
1)创建表的时候直接添加外键

CREATE TABLE emp( id INT PRIMARY KEY AUTO_INCREMENT, -- 员工编号NAME VARCHAR(20), -- 员工姓名gender VARCHAR(10), -- 性别dept_id INT, -- 部门编号   CONSTRAINT  fk_demp_emp  -- 声明 外键名称FOREIGN KEY (dept_id) -- 作用在指定从表的指定字段REFERENCES 	-- 关联dept(id)    -- 部门表的主键id

2)通过alter table 表名 add … 方式添加

-- 通过修改表添加外键
ALTER TABLE empADD 
CONSTRAINT --  声明fk_demp_emp  -- 外键名称
FOREIGN KEY (dept_id) -- 作用在指定从表的指定字段
REFERENCES 	-- 关联
dept(id)  ;  -- 部门表的主键id

删除外键约束:
ALTER TABLE emp DROP FOREIGN KEY 外键名称

有了外键有关联关系,所以不直接操作主表,需要先修改从表,或者删除外键约束
级联操作 :CASCADE
级联修改:ON UPDATE CASCADE
当前修改主表的数据,那么从表和主表相关联的数据一定会被随着改变
级联删除: ON DELETE CASCADE
当删除主表的数据时,从表和主表相关联的数据也会被删除

2、数据库的备份和还原

1)图形界面化:简单直观

选择数据库—右键----备份---->选择导出的路径(结构以及数据都保存)
之前存在库,然后选择 执行指定sql脚本----> 选择指定的sql脚本—进行执行即可!

2)命令行方式

备份:mysqldump -uroot -p密码 备份数据库名称 > 保存的本地地址
还原:将原来删除,新建库,使用库,source将保存的本地地址

3、 表于表的关系

一对一:是一种特例 (应用场景不多)
举例: 人和身份证
一个人对应一张身份证
一个身份证属于某个人的

一对多的关系 ,多对多的关系
员工表和部门表
一个部门可以有多个员工,一个员工属于某一个部门的(员工表中有一个外键)

4、数据库的三大范式:

1NF :数据库表的每一列都是不可分割的原子数据项
不能出现复合项
2NF :第二范式就是在第一范式的基础上所有列(所有字段)完全依赖于主键列(主键字段)

3NF :在第二范式2NF的基础上,非主键字段不能传递依赖于主键,需要通过外键解决

5、多表查询

1)内连接查询

隐式内连接:通过where语句作为连接条件来查询(按照外键关联关系)
操作步骤:
– 1)查询哪张表
– 2)要查询的是指定表中的哪个字段
– 3)表和表之间的关联关系问题
显示内连接
– select <字段列表>
– from 表名1
– (inner) join
– 表名2
– on 关联关系(连接条件);

内连接查询出现的问题:只能查出交集部分的数据

2)外连接查询

左外连接
left(outer) join: 通用
将两表中左表的数据全部进行查询并且将交集部分的数据全部查询
右外连接
right (outer) join
语法格式
select
字段列表
from
表名1 --左表
left outer join 表名2
on 连接条件 ;

3)子查询

情况1:单行单列的情况:通常使用运算符进行操作
情况2:多行多列的情况:使用关键字in(集合数据)
情况3:使用select语句查询的结果作为一个虚表,使用这个虚表然后与其他表进行查询

-- 入职日期 join_date > '2011-03-14' 将查询作为虚表 和部门表继续进行查询SELECT   * FROM emp WHERE join_date > '2011-03-14';
-- 可以使用左外连接
SELECTt2.*, -- 员工的所有信息t1.`name` '部门名称'	
FROMdept t1 -- 部门表
LEFT OUTER JOIN (SELECT   * FROM emp WHERE join_date > '2011-03-14') t2
ONt1.`id` = t2.`dept_id` ;-- 最基本隐式内连接	
SELECTt1.* , -- 员工所有信息t2.`name` -- 部门名称 
FROMemp t1 ,dept t2 
WHERE t1.`dept_id` = t2.`id` AND
t1.`join_date` > '2011-03-14' ;

6、 事务

事务:在业务操作过程中,一次性可能同时操作多个sql语句,防止 操作多个sql语句时候出现问题,将这整个业务操作看成一个整体,进行处理
– 这些多个sql要么一次性全部执行成功,要么同时失败!
事物的特点 :ACID
1)原子性:就是事物操作业务中的sql ,要么同时执行成功,要么同时失败
2)一致性:操作sql语句的前后,总数量保持不变
3) 隔离性:
将业务使用事务管理,业务与业务之间分离
事物与事物之间不能相互影响
4)持久性:如果一旦事务被提交了,是永久存储的
隔离级别
read uncommitted :读未提交 安全性最差 不能有效防止脏读
read committed :读已提交 安全性相比上个高,能有效防止脏读,不能够防止可重复读的问题
repeaable read :可重复读 能够有效防止脏读,可重复读
serializable :串行话

查询隔离级别:
select @@tx_isilation; ------------5,1/5,7
select @@ transaction_isolation; -----------8,0

设置隔离级别 set global transaction isolation level 级别字符串;

隔离级别不同,会出现的不同问题:
1)脏读:一个事务读取另一个没有提交的事务
2)不可重复读:一般都是update语句影响,两个事务中,一个事务读取的前后内容不一致
3)幻读:一般insert/delete :影响两个事务中,前后数量不一致

二、JDBC

1、介绍

jdbc的本质就是能够实现sun公司提供的java.sql包下的相关的接口的实现类
使用java连接数据库的过程
1)在java项目添加额外的第三方的jar包
2)注册驱动
3)获取数据库的连接对象
4)准备静态sql语句
5)通过数据库连接对象创建执行对象Statement
6)执行更新操作
7)释放资源

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcDemo {public static void main(String[] args) throws Exception {//1)导包了//2)注册驱动Class.forName("com.mysql.cj.jdbc.Driver") ; //mysql8.0 的驱动实现类:com.mysql.cj.jdbc.Driver//mysql8.0以前的驱动实现类:com.mysql.jdbc.Driver//3)获取数据库的连接对象 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb_01?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true", "root", "123456");//4)准备sql语句String sql = "insert into account(name,balance) values('赵又廷',1000)" ;//5)通过数据库连接对象获取执行对象//public Statement createStatement() ;用于将sql语句发送的数据库的执行器对象Statement stmt = connection.createStatement();//6)执行更新操作//通用方法//int executeUpdate(String sql) throws SQLExceptionint count = stmt.executeUpdate(sql);System.out.println("影响了"+count+"行");//7)释放资源stmt.close() ;connection.close();}

2、ResultSet接口

ResultSet接口 :一般都是select 查询语句查询的数据表的结果集
需求:将ee_2106这个数据库中的student表数据全部查询并遍历出来!

import java.sql.*;
public class JdbcDemo3 {public static void main(String[] args) {Connection conn = null ;Statement stmt = null ;ResultSet rs = null ;//注册驱动try {Class.forName("com.mysql.cj.jdbc.Driver") ;//创建数据库连接对象conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ee_2106?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true","root","123456");//准备sqlString sql = "select * from student" ;//创建执行对象stmt = conn.createStatement() ;//执行sql语句rs = stmt.executeQuery(sql);if(rs.next()) {int id = rs.getInt(1);String name  = rs.getString(2) ;String gender = rs.getString(3) ;String email = rs.getString(4) ;System.out.println(id+"\t"+name+"\t"+gender+"\t"+email);}while(rs.next()){int id = rs.getInt("id");String name  = rs.getString("name") ;String gender = rs.getString("gender") ;String email = rs.getString("email") ;System.out.println(id+"\t"+name+"\t"+gender+"\t"+email);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
}

3、封装工具类

封装jdbc操作的工具类
频繁的去操作数据库:CRUD:增删查改
每一条sql都去创建Connection对象
而且还需不断的去释放资源 Statment对象,Connection,ResultSet集合对象

在这里插入图片描述

代码体现

import com.mysql.jdbc.Driver;import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils {private static String url = null ;private static String user = null ;private static String password = null ;private static String drivceClass = null ;//构造方法私有化private JdbcUtils(){}//静态代码块//JdbcUtils工具类一加载就执行静态代码块static{try {//创建一个Properties属性列表Properties prop = new Properties() ;//读取src下面的jdbc.properties配置文件//直接获取当前类的字节码文件对象,获取类加载,获取资源文件所在的输入流对象InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");//将流中内容加载到属性列表中prop.load(inputStream);System.out.println(prop);//测试属性列表中的内容//通过key获取valueurl = prop.getProperty("url") ;user = prop.getProperty("user") ;password = prop.getProperty("password") ;drivceClass = prop.getProperty("driverClass") ;//注册驱动Class.forName(drivceClass) ;} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}//提供功能都是static//通用的功能:获取数据库连接对象public static Connection getConnection(){Connection  conn = null ;try {//通过驱动类管理类获取conn = DriverManager.getConnection(url,user,password) ;return conn ;} catch (SQLException e) {e.printStackTrace();}return null ;}//关闭资源://DDL语句或者DML语句----->Statement对象和Connectionpublic static void close(Statement stmt,Connection conn){close(null,stmt,conn);}//关闭资源//DQL语句---->ResultSet对象,Statement对象和Connectionpublic  static void close(ResultSet rs,Statement stmt,Connection conn){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt !=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}public static void main(String[] args) {Connection connection = JdbcUtils.getConnection();System.out.println(connection);}
}
4、预编译对象

预编译对象PreparedStatement 继承自Statment对象
操作步骤
1)注册驱动
2)获取数据库连接对象
3)准备参数化的sql,(sql语句非静态)
4)通过连接创建预编译对象并将参数化的sql语句保存在PreparedStatement对象中
5)给参数化的sql的数据进行赋值
6)执行更新/查询
7)释放资源

import com.qf.utils.JdbcUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class PerparedStatementDemo {public static void main(String[] args)  {Connection conn = null ;PreparedStatement stmt = null ;ResultSet rs = null ;try {//获取数据库的连接对象conn = JdbcUtils.getConnection();//准备sql语句:参数化的sql//占位符号:?(英文符号)// String sql = "insert into student(name,gender,email) values(?,?,?)" ;String sql = "select  * from student" ;//通过连接对象获取预编译对象并将参数化的sql保存到该对象中//PreparedStatement prepareStatement(String sql)stmt   = conn.prepareStatement(sql); //预编译的过程:对sql语句中占位符号进行描述//参数赋值//void setXXX(int parameterIndex,XXX num)//举例:setString(第几个占位符号(占位符号的索引值:1开始),当前占位符的实际参数"hello" )/*   stmt.setString(1,"王桑") ;stmt.setString(2,"男") ;stmt.setString(3,"wangsang@163.com") ;*///执行//ResultSet executeQuery()  :执行查询操作:DQL语句//int executeUpdate()  执行通用的更新操作:DDL/DML语句(insert into /update/delete)// int count = stmt.executeUpdate();// System.out.println("影响了"+count+"行");//查询rs = stmt.executeQuery();while(rs.next()){int id = rs.getInt("id");String name = rs.getString("name");String gender = rs.getString("gender");String email = rs.getString("email");System.out.println(id+"\t"+name+"\t"+gender+"\t"+email);}} catch (SQLException e) {e.printStackTrace();}finally {//释放资源JdbcUtils.close(stmt,conn);}}
}

5、连接池

1)什么是连接池

是一种容器(集合),存储数据库连接对象;防止用户操作数据库的时候频繁,创建连接对象,而且当
数据库连接Connection使用完毕,就释放close()---->消耗内存空间!
提供固定的可重用的连接对象的容器

2)本质

连接池的本质就是实现sun公司提供的DataSource实现类(物理数据源代替DriverManager)

import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
public class DruidDataSourceDemo {public static void main(String[] args) throws Exception {Properties prop = new Properties() ;InputStream inputStream = DruidDataSourceDemo.class.getClassLoader().getResourceAsStream("druid.properties");prop.load(inputStream);DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);for(int x = 1; x <= 11 ; x ++){Connection connection = dataSource.getConnection();if(x == 5){connection.close(); /}System.out.println(connection) ; }}
}

连接池工具类


import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;public class DruidJdbcUtils {//成员变量位置private  static DataSource ds ;//为了保证线程安全:每一线程使用自己的Connection (张三/李四)private static ThreadLocal<Connection>  t1 = new ThreadLocal<>() ; //提供线程的局部变量保存连接对象//构造方法私有化private DruidJdbcUtils(){}//静态代码块static{try {//读取数据库连接池的配置文件----->通过DruidDataSourceFactory工厂类创建DataSource//创建一个属性集合列表Properties prop = new Properties() ;//读取druid.propertiesInputStream inputStream = DruidJdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties");//将资源文件所在的输入流加载列表中prop.load(inputStream);ds = DruidDataSourceFactory.createDataSource(prop); //底层子实现类:DruidDataSource//System.out.println("数据源获取成功");} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}//提供静态方法:单独获取数据源public static DataSource getDataSource(){return ds ;}//获取连接对象Connection静态功能public static Connection getConnection(){//从ThreadLocal中获取局部变量的副本:Connection/***   public T get()  :从线程中获取局部变量的副本!*/Connection conn =  null ;try {conn  =  t1.get();if(conn==null){//如果空,需要从数据库的连接池中获取连接对象conn  = ds.getConnection();//获取到之后,每一线程执行自己的Connection//将获取到的连接对象 绑定到当前线程中t1.set(conn);}//如果不为空,说明ThreadLocal线程中已经存在Connectionreturn conn ; //} catch (SQLException e) {e.printStackTrace();}return null ;}//关闭(释放资源)资源public static void close(ResultSet rs, Statement stmt,Connection conn)  {if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();//关闭之后,归还到连接池中,需要从当前线程中解绑t1.remove();} catch (SQLException e) {e.printStackTrace();}}}public static void close( Statement stmt,Connection conn)  {close(null,stmt,conn);}//事务管理代码 --- 加入public static void main(String[] args) {// DataSource ds = DruidJdbcUtils.getDataSource();//System.out.println(ds);Connection connection = DruidJdbcUtils.getConnection();System.out.println(connection);}
}

单元测试:

提供junit的内置注解@Test
@Before标记的方法:在执行@Test单元测试方法之前先执行 (初始化的操作)
@After标记的方法:在执行@Test单元测试方法之后执行(一般:资源的关闭)

三、注解

1、本质

注解的本质是一个接口

2、普通注解

@Override:一般方法中使用,标记这个方法是否是重写方法
@SupressWarning:压制警告 (项目部署上线的时候,项目中不能出现黄色警告线)
@Deprecated:标记方法已经过时
@FunctionalInterface:标记某个接口是否为函数式接口(接口中有且仅有一个抽象方法)

3、元注解

@Target:当前这个注解能够使用的范围
ElementType[] value(); value属性(“抽象方法名”) 返回值枚举数组类型
ElementType 枚举中的都是常量字段 (等价于 public static final …)
TYPE,能够使用在类上或者接口上
FIELD:能够使用在成员变量上
METHOD:能够使用在成员方法上
@Retention:标记当前这个某个注解保留的阶段
RetentionPolicy value(); value属性 它的返回值枚举类

4、 注解(本质接口)中的方法名----- 称为"属性"

属性中可以什么类型的数据类型?
可以是基本数据类型,String类型,枚举类型,注解类型,以上类型的数组格式

如果某个注解中有且只有一个属性,value
public @interface XXX{
String value() ;
}
在别的一些类上使用这个注解的时候,那么赋值value属性可以不写
@XXX(value=(“hello”))
class Demo{}

5、自定义注解

1)自定义一个注解 @Annotation
2)在加上一些元注解,标记当前你自己的定义这个的@Target:作用的位置
@Retention:保留的阶段(Runtime,source,class)
如何解析自定义注解
反射的方式
public < A extends Annotation> A getAnnotation(Class annotationClass)
参数:表示当前注解类型的Class

public @interface MyAnno {//字符串类型String name() ; //name属性//基本数据类型int age() ; // age属性//枚举类型MyEnum direction() ;//direction//注解类型MyAnno2 value() ;//value属性//以上类型的数组格式String[] strs() ;//strs属性
}

四、jdbc操作管理事务

1、事务:

一种机制,某个业务中多次调用dao完成多个sql同时执行,要么同时执行成功/要么同时执行失败 否则,就出现数据紊乱! 使用事务管理(JDBC方式操作)
用户发送请求,通过连接池获取Connection对象
Connection:管理事务的功能
void setAutoCommit(boolean autoCommit) throws SQLException
默认情况下,新创建的连接对象处于自动提交模式 参数为true,声明为false,禁用自动提交,需要收到提交sql
void rollback() throws SQLException:当前执行提交之前,如果sql发生异常,将撤销之前的所有操作
void commit() SQLException:如果执行过程中没有问题或者回滚了,都提交事务,将之前的所有操作永久保存!

需求 :张三账户向李四账户转账500

import com.qf.utils.DruidJdbcUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcTransactionDemo {public static void main(String[] args)  {Connection connection = null;PreparedStatement stmt1 = null;PreparedStatement stmt2 = null;try {//通过DruidJdbcUtils获取连接对象connection = DruidJdbcUtils.getConnection();//开启事务---将自动提交禁用调用,参数为false,手动提交connection.setAutoCommit(false);//准备sql语句String sql1 = "update account set balance = balance - ? where id  = ?" ;//创建预编译对象对sql1进行预编译stmt1 = connection.prepareStatement(sql1);//参数赋值stmt1.setInt(1,500);stmt1.setInt(2,1);//执行更新stmt1.executeUpdate() ;//程序出问题了
//            int i = 10 /0 ;String sql2 = "update account set balance = balance + ? where id = ? " ;//创建预编译对象对sql2进行预编译stmt2 = connection.prepareStatement(sql2);//参数赋值stmt2.setInt(1,500);stmt2.setInt(2,2);//执行更新stmt2.executeUpdate() ;//如果没有问题,正常提交connection.commit();System.out.println("转账成功...");} catch (SQLException e) {//处理异常: 直接事务回滚//有异常,执行catch语句,就回滚try {System.out.println("程序出问题了...");connection.rollback();} catch (SQLException ex) {ex.printStackTrace();}//e.printStackTrace();}//释放资源DruidJdbcUtils.close(stmt1,connection);DruidJdbcUtils.close(stmt2,connection);}
}

五、 前端

前端三剑客: html,css,js(javascript)
html: Hyper Text Markup Language:超文本标记语言
html页面----- 通过js完成和后台通信(Jquery框架: 封装js库)

1、文本标签

1)标题标签

标题标签 h1~h6:从小到大 闭合标签,有开始有结束

	<h1>JavaEE</h1>	<h2>JavaEE</h2><h3>JavaEE</h3><h4>JavaEE</h4><h5>JavaEE</h5>	<h6>JavaEE</h6>
2)滚动标签

滚动标签:marquee:不指定滚动方向,默认从右到左滚动
属性:
behavior:滚动方式: slide:滚到一边停止:alternate:来回滚动; scroll:交替滚动,碰到边框不会停止
direction:滚动的方向 :默认值left(右到左)
scrollamount:滚动速度 :正整数值越大,速度越快
bgcolor :背景色

<marquee behavior="scroll"direction 
="right" scrollamount
="22" bgcolor="pink">hello,html</marquee>
3) 段落标签

段落标签p:闭合标签

<p> 文字说明。。</p>
<p> 文字说明。。</p>
4)换行标签

换行标签 br 非闭合标签

我爱你,中国!<br />
hello,world!<br />
5)水平标签

水平标签 hr 非闭合标签

<hr/>
6)上下标标签

上下标标签sup和sub 应用场景:在门户系统最后一行 注册商品以及版权所有

数学公式:x^2    <br />
x<sup>2</sup>  <br />
化学公式: H<sub>2</sub>O<br/>
7)转义字符

转义字符
版权所有: &copy; 代表 © 版权所有
注册商品: &reg; 代表 ®
空格: &nbsp; 一个&nbsp;代表一个空格
&ensp; 一个转义字符代表两个空格

 xxx公司版权所有2021-2022<sup>&copy;</sup> <br/>xx公司注册商品<sup>&reg;</sup><br/>&ensp;&ensp;<br />
8)加粗标签

加粗标签 strong /b
语义强调的加粗使用b标签,一般用strong

<strong>阿富汗</strong> 
<b>奥拉夫</b><br />
9) 倾斜标签

倾斜标签 em /i
语义强调使用i标签 ,一般用em

<em>毛泽东</em>
<i>毛泽东</i>
10)居中标签

居中标签 center :将文本内容进行居中

<center>文本内容</center>
11) 原样输出标签

原样输出标签 pre

<pre>
昨天
jave{}}}}alert("hello") ;
}
</pre>

2、列表标签

1)无序列表

无序列表 ul li (列表项)

 以下的明星喜欢谁?<ul  type="square"><li>高圆圆</li><li>姆巴佩</li><li>赵又廷</li></ul>
2)有序列表

有序列表 ol li

  以下的明星喜欢谁?<ol type="1"><li>高圆圆</li><li>姆巴佩</li><li>赵又廷</li></ol>

3、超连接标签

超连接 a标签来表示
属性
href :后面跟统一资源定位符 url 本地地址或者服务器地址

				需要加上协议http:// www.baidu.comhttp协议请求规则C:\Windows\System32\drivers\etchosts文件记录ip地址 		域名 127.0.0.1(本地回环地址)		localhost如果在hosts文件本地找不到www.baidu.com对应的ip地址那么就会调用网卡联网操作DNS服务器(网络运营商)ip地址1			www.baidu.comip地址2        www.sina.com.cn....回显百度首页给用户指定服务器地址http://locahost:8080/后台地址url地址:统一资源定位符http://	域名:端口号/端口号:80端口可以省略不写协议:ftphttp协议thunder:// 

超链接的用法
1)作为资源跳转进行使用‘
2)作为锚连接来使用
同一个页面(使用居多)
a)打锚点(创建一个跳转标记)
< a name=“锚点名称”>
b)创建跳转链接
< a href="#锚点名称 ">跳转
不同页面跳转
a)打锚点(创建一个跳转标记) :在另一个页面的某个位置
< a name=“锚点名称”>
b)在当前的某个位置创建跳转链接
< a href=“链接到指定的页面上+#锚点名称”>跳转

<!-- 跳转到另一个页面链接 --><a href="00_html文本标签.html#ul" target="_self">跳转到指定页面的某个位置</a><br/><!-- 跳转标记 --><a name="top"></a><a href="#foot">[跳转底部]</a><br/>	<a href="http://www.baidu.com:80">链接到百度</a><br/><a href="http://14.215.177.39:80">链接到百度</a><br/><!-- 创建一个锚点:跳转标记 --><a name="foot"></a><!-- 跳转链接 --><a href="#top">[跳转顶部]</a>

4、图像标签

< img src=“图片资源地址” />
src :加载的图片资源地址,使用的是相对路径
width和heigth :宽度和高度属性指定像素,或者指定占当前整个宽高分辨率的百分比
alt :替代文本,当图片失效时起作用,描述这个图片
title :给图片设置标题内容,当鼠标悬浮在图片上,提示文字
超链接的href属性以及img的src属性:都会加载资源(就会给服务器发送请求)

<img src="../img/1.jpg" width="200px" height="300px" alt="手机图片" /><br />
<img src="../img/mm.jpg" width="200px" height="300px" title="高圆圆" />

5、表格标签

table表格标签
属性:显示表格样式 必须指定border 边框
algin:对齐方式
width/height:宽度和高度(px/百分比(占当前系统分辨率权重百分比))
bgColor:背景色
cellspacing:设置边框线和单元格的距离

			子标签capation:表格表格标签tr:行标签td:单元格标签th:表格的表头标签:特殊的单元(自动居中,加粗)单元格合并:td的属性合并行: rowspan属性占用的单元格数量合并列:colspan属性占用单元格数量
	<!-- 写一个三行四列的表格 --><table border="1px" width="100%" height="300px"  cellspacing="0" bgcolor="greenyellow"><!-- 标题 --><caption>xxx学校成绩表</caption><tr><th>编号</th><th>姓名</th><th>班级</th><th>成绩</th></tr><tr align="center"><td>1</td><td>高圆圆</td><td>Java基础班</td><td>98</td></tr><tr align="center"><td>2</td><td>赵又廷</td><td>Java基础班</td><td rowspan="2">89</td></tr><tr align="center"><td>3</td><td>张三丰</td><td>计算机1班</td><!-- <td>76</td> --></tr><!-- 平均分 --><tr align="center"><!-- 合并列coslpan --><td colspan="3">平均分</td><!-- <td></td><td></td> --><td>80</td></tr></table>

6、表单标签

表单标签 form

1、属性:

method :提交方式 默认get请求(用户直接在浏览器访问)
action :url 本地提交或者提交后台服务器地址
http://localhost:8080/xxx

2、应用场景:

登录、注册页面

			注册: (同步)需要输入用户相关的信息 点击----"注册"------用户的数据提交后台服务器---查询用户名是否存在,如果存在,不能进行注册了,"请更换用户名""登录(同步)输入用户名和密码---- 点击登录----服务器里面先通过查询用户名是否存在,如果存在,就在通过获取到的用户对应的密码和前台提交的密码如果匹配,登录成功,否则登录失败!
3、get方式和post方式的区别

1、 get方式
1)将用户提交的数据提交到后台地址上
url?key1=value1&key2=value2…
2)因为提交到地址栏上,提交的数据的大小是有限制的
3)不适合提交私密数据,相对post不安全
2、post方式
1)不会将用户的数据提交到地址上
2)提交大小没有限制
2)相对于get方式,更安全

<title>登录页面</title>
<form action="server.html" method="post">
<!-- 表单项 中必填name属性:需要给后台提交,后台需要知道书写的参数名称 -->
<!-- 文本输入框 placeholder:H5的属性 提示输入的内容,当鼠标光标获取焦点并输入内容,自动清空-->用户名:<input type="text"  name="username"  placeholder="请输入用户名" /><br/><!-- input type="password"密码输入框 非明文-->&ensp;&ensp;码:<input type="password"  name="password"  placeholder="请输入密码" /><br/><!-- 提交按钮 --><input type="submit" value="登录" /></form>
4、常用表单项
表单项 必须要指定name属性输入型 文本输入框,密码输入框,日期组件,邮箱.....inputtype="text" 文本输入框type="password" 密码输入框type="radio"单选按钮type="checkbox"复选框type="date"日期格式type="eamil" 必须符合邮箱格式@字符type="hidden":隐藏域(没有效果,可以携带数据)下拉菜单select标签:普通下拉菜单 选择一个option:下列选项文本域 textarea属性:rows:文本域中指定多少行内容cols:一行里面指定多少个字符按钮相关的特殊按钮:提交按钮 input type="submit"提交按钮(将表单中的所有表单项中的内容全部提交后台)跟 input type="submit"等价的一个标签 button	<button>提交<button>type="reset" 重置按钮普通按钮type="button" value="点击...."

7、框架标签

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>框架标签</title></head><!-- frameset框架:当前这个整个结构4个页面组成 --><frameset rows="10%,*,10%"><!-- 三个部分:分别是frame --><frame src="header.html"/><!-- 头部页面 --><!-- 从左--到右 --><frameset cols="15%,*"><!-- 两个部分页面通过frame导入 --><frame src="menu.html" /><!-- 给当前中间页面表示的frame给定name --><frame src="main.html" name="main" /></frameset><frame  src="footer.html" /><!-- 底部页面 --></frameset><!-- <body></body> -->
</html>

这篇关于java 2106 第七周总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387137

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2