云南网站设计平台,flash 好的网站,网络营销百度百科,电子购物网站JavaWeb的实训是学校的一门课程#xff0c;老师先讲解一些基础知识#xff0c;然后让我们自己开发一个比较简单的Web程序。可涉及的知识何其之多#xff0c;不是实训课的 3 周时间可以讲得完的#xff0c;只是快速带过。他说#xff1a;重点是Web开发的流程。 我的实训草草… JavaWeb的实训是学校的一门课程老师先讲解一些基础知识然后让我们自己开发一个比较简单的Web程序。可涉及的知识何其之多不是实训课的 3 周时间可以讲得完的只是快速带过。他说重点是Web开发的流程。 我的实训草草收场一水而过但也仍然留下了一些杂乱笔记谨供参考。 文章目录 零、Hello1、心得2、问题3、其他 一、实训前要求1、eclipse2、立项3、需求分析4、概要设计5、前端设计 二、前端知识三、操作任务四、前端设计1、主页2、登录页面3、后台管理 五、数据库1、数据库基础2、MySQL基本使用3、SQL语句4、数据库设计5、数据库实现 六、连接数据库JDBC1、使用流程2、参数处理3、简单封装 七、MVC系统架构1、架构介绍2、系统架构搭建3、小结4、Web项目运行部署 零、Hello
1、心得
不要经常打补丁式地去填充一些细节而更应该去寻找更好的结构。
2、问题
for语法workbench创建外键的用法
3、其他
中华英才网招聘网站应届生重视可塑性
一、实训前要求
大三暑假就可以实习只有一年了。考研考公教资就业
boos直聘。
日记80-100字7-10班答辩取消了
MVC: 一种项目架构的设计模式基于面向接口编程。
Servlet: 重要技术但是企业不用。能接受前端的用户请求把数据响应前端。servlet - springmvc - sprintboot)
JDBC: 数据库连接技术
1、eclipse 工作空间的作用会设置一些什么 metadata元数据描述数据的数据。 字体不要改有些字体无法被识别如javascript会有一些要求。 字符编码utf-8 设置JDK
对象
类是创建对象的模板类的形成对现实事物共同点的抽象私有属性能不能被继承能、不能都可以要说出原因。方法重写只修改函数体。看源码
继承
一个父类可以多个子类但是一个子类只有一个父类。子类属于父类类型多态接口抽象
2、立项
1名称《交个朋友》
2需求实际需要需求调研
涉及部门产品部主开发部产品不懂技术 前端功能用户交互的界面 首页 导航栏注册登录广告轮播图后台管理我的朋友搜索内容轮播图广告系统推荐朋友Footer版权信息 朋友详情 头像 -- 查看信息但不同人的信息同一个模板不用每人写一个页面 个人中心 登录用户的信息 用户如何交到朋友流程 一方注册 -- 登录 -- 搜索 / 推荐朋友 -- 查看 -- 好友申请 -- 等待另一方收到申请 -- 查看详情 -- 接受 / 拒绝理由 后台功能接受请求 -- 发牛响应 登录用户管理 审核用户禁用账号 / 解禁账号删除用户修改用户 朋友推荐
3、需求分析
1涉及部门开发部
需求分析是了解要做什么
4、概要设计
信息
1注册信息用户昵称性别密码确认密码
2登录信息用户昵称密码
3广告信息图片说明
4用户详情头像昵称真实姓名对接公安系统性别职业宣言…
5首页推荐头像昵称职业…
数据库设计
5、前端设计
设计部门前端设计部
过程ps画页面原型 -- html页面
前端岗位
1传统前端html / css / ps
2现在前端 js框架 / 前端框架 / VUE前后端分离 一个标签像java中的一个对象
二、前端知识
1div标签在网页中划出一块空间。
占多大 -- 设置样式。
注div本是只是竖向排列的标签。
2盒子模型
3网页布局略
前端框架Bootstrap v3。
4框架写好了很多东西拿来用就好了。DIVdo it self。
使用框架导入.css和.js文件。 css的类选择器class与id选择器id的区别是什么 5响应式拉动页面窗口改变大小、纵横比内容仍然可以正常显示自适应。
6栅格div块的嵌套一个横向div可以分很多列。不同的屏幕大小设备适用于不同的样式。
12个分成5份10/5剩下的留白。文本对齐左中右。学习框架了解它能做哪些事情。图片显示形状方、圆、方形圆角
三、操作任务
搭建eclipse环境熟悉css安装bootstrap文件
四、前端设计
1、主页
1导航栏
组件导航、分页、缩略图…先确定需求然后开始写自己的前端页面。勾上 generate web .xml建议整个网页放在一个container容器中。nav导航交互如下拉框js文件。导航栏中引用了jquery框架怎么看出来的用行内样式可以覆盖默认样式。在浏览器修改快速调整不用每次都修改都刷新浏览器。
2广告栏
调整图片大小 / div形状调整两栏之间的间隙
3系统推荐
缩略图注意div标签的正确对应和闭合。
4其它
将导航栏固定在顶端同时避免遮盖。下面的广告栏加上上边距。
2、登录页面
新建文件register.html版权信息固定在底部栅格系统左广告右登录页表单登录输入框单选按钮a打开新标签页使用target_blank属性。
3、后台管理
不太注重前端的体验用户会有默认的头像表格trthtdtable 。
五、数据库
1、数据库基础
关系型数据库。
mysql安装流程安装mysql安装mysql服务登录修改密码设置远程连接具体见视频。
update user set host% where userroot;官网mysql.com 。
移除mysql停止服务mysqld -remove mysql删除安装文件目录删除注册表。使用.exe文件安装的按照普通软件方式卸载 services.msc 自己注册购买几个域名 社区版8.x版本 准备工作如果机器上已经有只要能用就无需安装。若有但不能用需卸载干净后才能安装。 my.ini mysql与mysql服务 注册表维护计算机运行的服务列表。 登录时指定登录端口号使用参数-P使用不同版本的mysql 概念区分数据库服务器数据库表数据。 数据库服务器安装了数据库软件的服务器。 应用服务器安装了应用程序的服务器。企业中会分开部署 数据库在数据库服务器中创建用来存放数据表。 表用来存放数据以行为单位。
Java数据库一个类一张表类属性表字段属性类型字段类型对象一行
MySQL客户端的安装navicat_trial。workbench是老版本。
本机localhost127.0.0.1navicat_trial报错1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client应该是版本太旧了。
2、MySQL基本使用 登录mysql -u root -p其中-p并不是password的意思而是用于指定数据库参数可以为空即不选择在登录后通过use database_name来选择数据库 。 sql的分类DDL数据定义语言, DCL数据控制语言, DML数据操作语言, DLL数据事务语言 创建数据库可在客户端中创建。 创建数据表 (sex) 1boy 2girl使用代号比使用字符串查询更快。(birthday)如果使用timestamp记录从1970年开始的毫秒数则1970前的生日无法表示。可以使用datetime。表名字不使用user因为是sql的关键字。workbench显然没有navacat好用比如写入日期时没有选项框只能手打。 数据类型int, varchar, double, datatime, timestamp; 长串数字若不用于运算一律使用varchar而不用int。 数据输入 主键能够唯一标识一条字段。一般不参与业务逻辑运算如学生主键经常使用id而不用学号。 修改表结构在workbench中右键目标表选择alter table。设置自动维护主键勾选·Auto Increment。记录已经被使用过的主键的最大值删掉也不影响。 外键在一张表中关联另一张表的约束。 键名冲突例如学生表有个id地址表也有个id如果要创建外键就会有问题。因此可以给每个表自己的主键加个标识例如重命名为uid。 或者给外键加个标识成aid应该也行 主外键约束。参照完整性外键的值得在被关联表中存在。约束的是外键列的值。 主外键约束的建立。外键不能参照不存在的主键于是已经被参照的主键也无法被删除。 注意 在开发过程中表和表在结构上体现主外键关系但不创建主外键约束。因为删除修改一个主键字段就要先删除参照它的外键字段这个外键字段的行可能又被被人参照表间关联和约束太多导致维护困难。 主表表中有一个主键被其他表用来当外键的表。 从表把另外一个表中的主键当作自己的外键的表。
3、SQL语句 增加insert into 表名(字段1, 字段2) values(值1, 值2) 修改update 表名 set 字段新值, ... where 条件 删除delete from 表名 where 条件 查询select 字段1, 字段2... from 表名 where 条件 查询部分数据limit 模糊查询。关键字like通配符% _ %可以代表任意多个字符_可以代表任意一个字符。 排序。order by 对查询好像结果排序ASC(升序) | DESC(降序) 分组。group by 分组的目的是统计。常见的统计函数有max min sum avg count。 含有goupy by的sql中select后只能接被分组的字段或统计函数。否则在mysql5.x版本会报错在8.x中不会报错但是无意义。 多表连接查询 子查询 将一个查询的结果作为另一个查询的对象。 案例和李四住在一起的人有哪些 分析首先知道李四住在哪然后将李四住址作为条件进行查询。
-- 1、查询部分数据
select * from users limit 2; -- 返回查询数据的前两个
select * from users limit 0,1; -- 从0到1注意下标从0开始
-- 2、模糊查询
select * from users where name like %航%;
-- 4、分组
select * from users group by aid; -- 显示每组的第一条数据
select aid, count(id) from users group by aid; -- 查询每个地址人数
-- 5、连接
select * from users,address where users.aid address.id;
select * from users as u,address a where u.aid a.id; -- 简化写法
-- 6、子查询 -- 和李四住在一起的人有哪些
select id,name,aid from users where aid
(select aid from users where name李四);4、数据库设计
回头再改表结构是非常麻烦的。
三大范式1NF列的原子性2NF直接依赖即所有其他属性都直接依赖于主键3NF每个字段不能传递依赖于主键如有aid列就不要address列了。
原则数据库的性能比规范化重要。
数据库设计的过程
找出实体对象找出实体的属性找出实体之间的关系 E-R实体关系图将ER图转换为表
找实体 用户实体 users主键 uid密码 password头像 photo昵称 nickname真实姓名 name性别 sex职业 career宣言 words 审核状态 chechstatus待审核1 通过2 未通过3 账号状态 accstatus正常1 禁用2 首页推荐 indexstatus未推荐1 已推荐2 广告实体 ad主键 adid图片 image说明 朋友实体 friends主键 fid邀请方 send被邀请方 accept邀请状态 status未处理1 通过2 拒绝3 职业表 carrer主键 cid名称 cname 英文命名尽量通俗去查的单词可能后来自己都不认识了。 5、数据库实现 表的Comments在哪里体现 为什么要单独创建一个职业表 头像用字符串存放路径
六、连接数据库JDBC
Web项目的三大块前台后台数据库。
JDBCJava DataBase Connectivity
1、使用流程
实现步骤
导入驱动jar包。数据库厂商给java提供了连接db的实现类。java只提供接口实际调用的数据库厂商的实现。即java的同一套接口可以连接不同的数据库。 jar包放到 /lib 目录下Add to Build Path产生一个Referenced Libraries。 注册驱动。 记得注册时区localhost | 127.0.0.1有多个异常使用父类Exception捕获所有的异常。 创建连接。 desc users 可以查看表的属性。 创建业务sql。创建传送和执行sql的对象。PrepareStatement 修改操作得到的是影响行数。查询操作得到的是一张表。返回List遍历即可。 执行sql根据结果处理业务逻辑。 从语句的影响行数来判断是否成功执行 关闭资源。 在一行数据中取属性。 使用各种get方法一个个地取出属性。然后将这些属性构成一个对象。 javabean能够存储数据的一些类。那记录呢 自动生成get和set方法、构造方法。 source -- Generate Getters and Setters 标准的javabean又脚vo值对象dto数据传输对象model数据类型 唯一作用进行数据存储封装和传输。
// ResultSet对象的使用示例
while(rs.next()) {String id rs.getString(1);int sex rs.getInt(sex);System.out.println(id);
}重载一件事情根据不同的条件有不同的实现方式。 对比突然感觉python中的字典就很方便。 局部类型推断 var在java10版本后。 感想好像自己写代码的时间就过得特别快。 2、参数处理 sql注入。可以干嘛 sql的执行计划 防御sql语句使用占位符参数查询时再给参数赋值会自动进行类型转换内部有很多处理丢掉多余的部分。 将sex值只作为sex的字段值进行设置而不是组合sql语句。 组合模糊查询nm%
// _sex 1 or 11
// 可以被sql注入的语句
String sql select * from users where sex _sex ;;
PreparedStatement pstmt conn.prepareStatement(sql);
// 防sql注入的语句
String sql select * from users where sex ?;;
PreparedStatement pstmt conn.prepareStatement(sql);
pstmt.setString(1, _sex);select * from users where sex 1 or 11;问题pstmt.setString()是将_sex作为一个字符串加入sql语句的它为什么可以正常执行呢在什么阶段进行了处理 答你会发现下面这条语句就是可以正常执行即使sex的类型为int。 select * from users where sex 1 or 11;3、简单封装
一共只需要一个也只需要建立一次数据库连接。开发角度的封装。 抽取connection对象的创建。 public static Connection getConn() 抽取资源的关闭。 public static void close(Connection conn, PreparedStatement pstmt)
单例模式 静态块只在类加载时执行一次。finally关键字不管catch执不执行里面都会执行。条件判断将null写在前面老手null ! pstmt 理论上可以避免空值异常。为啥 感受在jdbcUtil类中多层嵌套的try-catch-finally看起来好丑。 七、MVC系统架构
1、架构介绍
不管java如何先看生活中如何。 顾客前端 静态技术htmlcssjsbs 动态技术jspvue -- 静态数据动态化 下单发送请求 服务员控制层控制整个业务流程走向向前端负责。 接受前端请求并将请求获取到的数据响应前端。技术jspServetSpringMVCSpringBoot 厨师服务层向控制层负责为控制层提供服务。 能够提供各种方法处理控制层的业务。思想面向接口编程。接口定义功能实现类实现功能。控制层只需要调用接口方法即可而无需知道具体实现。 配菜师DAO层数据访问层从数据库中获取数据交给服务层为服务层服务。 只负责数据处理将数据处理的结构反馈给服务层即可。也面向接口编程。数据库连接技术JDBCMyBatis 菜DB数据库存放数据。 MySQLORACLEDB2
MVCModel数据模型View视图Controller控制
流程View -- Controller -- Services -- DAO -- DB
2、系统架构搭建
- src- edu.ft.control- edu.ft.services- edu.ft.dao- edu.ft.util- edu.ft.bean
- WebContent层次展示包结构Package Presentation -- Hierarchical 想法总是只看功能不关心如何实现真的好吗 理解mvc代码执行流程以模拟注册为例 control把注册信息入库得到入库的结果将结果告知用户。 service给控制器提供一个能够入库的功能。 dao给服务层提供一个能够插入数据库的功能。存粹地处理数据而不进行任何业务逻辑的处理。
- control- Test
- services- impl :实现类- IUsersServiceImpl- IUsersService :一个接口
- dao- impl- IUsersDaoImpl- IUsersDao 使用对象传数据避免冗长的参数列表。 问题注解Override是什么 问题给类再包一层接口不会显得多余吗 3、小结
需求分析要做什么。概要设计做成什么样子。详细设计每一个细节怎么做。
各个步骤可以并行开始而不是只能一条龙。
执行计划解析sql
4、Web项目运行部署
要实现静态数据的动态化。 服务器运行项目的一个容器其实就是一个软件如tomcat。汽车要放到马路环境才能启动运行。 在Eclipse中配置tomcatwindows -- Preferences -- Server -- Runtime Environments 给项目配置tomcat右键项目 -- Propenties for … -- Java Build Path -- Libraries 运行项目部署到tomcat中Window -- show view -- 搜索Servers -- open 默认端口号为8080 访问项目urlhttp://IP(localhost):端口号/项目资源 例如http://localhost:8080/friends/index.html