Java Web学习笔记
预备知识C/S架构Client / Server(客户端 / 服务器)
C/S架构的特点:需要安装特定的客户端软件
B/S架构Browser / Server(浏览器 / 服务器)
B/S结构的系统,其实就是开发网站,开发一个WEB系统
Tomcat服务器安装官网tomcat.apache.org下载解压
配置环境变量CATALINA_HOME和Path
启动和关闭startup //启动服务器
shutdown.bat //关闭服务器(建议改为stop)
ServletServlet规范
规范了哪些接口
规范了哪些类
规范了一个web应用中应该有哪些配置文件
规范了一个web应用中配置文件的名字
规范了一个web应用中配置文件存放的路径
规范了一个web应用中配置文件的内容
规范了一个合法有效的web应用它的目录结构应该是怎么样的。
…
开发一个带有Servlet的Web App
在webapps目录下新建一个目录,起名crm(webapp的名字)
在webapp的根下新建一个目录:WEB-INF ...
Java SE学习笔记
类变量什么是类变量类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
…
下面来看一段代码
class Child{
private String name;
public static int count=0; //定义一个变量count,是一个类变量(静态变量),被Child类的所有对象实例共享
public Child(String name) {
this.name = name;
}
public void join(){
System.out.println(name+" 加入了游戏..");
count++;
}
}
静态域因jdk版本不同,可能存放在堆里,也有可能在方法区里
但可以肯定的是,静态变量被所有对象共享,而且在类加载的时候就生成了(new的时候加载一次,且只加载一次)
关于上面代码里 ...
JDBC
编写步骤概念使用Java语言操作关系型数据库的一套API
具体步骤
创建工程,导入驱动jar包
注册驱动
Class.forName("com.mysql.jdbc.Driver");
获取连接
Connection conn = DriverManager.getConnection(url, username, password);
Java代码需要发送SQL给MySQL服务端,就需要先建立连接
定义SQL语句
String sql = “update…” ;
获取执行SQL对象
执行SQL语句需要SQL执行对象,而这个执行对象就是Statement对象
Statement stmt = conn.createStatement();
执行SQL
stmt.executeUpdate(sql);
处理返回结果
释放资源
代码public class JDBCDemo {
public static void main(String[] args) throws Exception {
Class.forName ...
数据库设计
备忘录…
数据库设计概念表结构以及表与表之间的关联关系
数据库设计的步骤
ER图:
表关系一对一
用户 和 用户详情
多用于表拆分,经常用的字段放一个表一个表,不经常用的字段放另一个表,提升查询性能
一对多(多对一)
部门 和 员工
M-1(M代表多)
多对多
商品 和 订单
一个商品对应多个订单,一个订单包含多个商品
一对多在M(多)的一方建立外键,指向1的一方主键
多对多建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
一对一在任意一方加入外键,关联另一方主键,并且设置外键为唯一(unique)
SQL
本文以mysql为例…
SQL通用语法
SQL语句可以单行或多行,分号结尾
MySQL数据库的SQL语句不区分大小写,关键字建议大写
注释如下(注意-- 后面有空格)
单行注释: -- 注释内容 或 #注释内容(MySQL特有)
多行注释: /* 注释 */
SQL分类
DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改
DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)
DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
DDL-操作数据库、表操作数据库
查询
show databases;
创建数据库
create database 数据库名称;
create database if not exists 数据库名称; -- 判断否存在
删除数据库
drop database 数据库名称;
drop ...
MySQL、Navicat安装
下载、解压MySQL安装包官网下载地址:https://dev.mysql.com/downloads/mysql/
下载完解压到C:\MySQL\mysql-5.7.24-winx64
配置MySQL环境变量,系统变量--->新建---->变量名为MYSQL_HOME,变量值为你的路径名
我的变量值是:C:\MySQL\mysql-5.7.24-winx64
然后更改Path环境变量,新增量为:%MYSQL_HOME%\bin
my.ini文件在解压后的根目录新建一个my.ini文件
文件内容如下
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\MySQL\mysql-5.7.24-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\MySQL\mysql-5.7.24-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字 ...
房屋出租项目
第二个项目…应该比第一个复杂一点
一个一个功能逐步实现 [明确完成功能=>思路分析=>代码实现]
这次创建多个包,各司其职,再利用HouseRentApp来完成调用
需求说明对房屋信息的各种操作(添加、修改和删除),可以用数组实现
输出房屋明细表
主菜单界面如下
引入Utility工具类这里用了韩顺平老师的代码,使用类.方法()
因为当一个方法是static时,就是静态方法
静态方法可以直接通过类名调用
源码如下
package utils;
/**
工具类的作用:
处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。
*/
import java.util.*;
/**
*/
public class Utility {
//静态属性。。。
private static Scanner scanner = new Scanner(System.in);
/**
* 功能:读取键盘输入的一个菜单选项,值:1——5的范围
* @return 1——5
*/
...
零钱通项目
第一个简单的小项目
先使用面向过程编写,再用面向对象重写
零钱通项目需求具体界面如下图
一共包含4个功能
1.零钱通明细:可以查询入账+消费的流水
2.收益入账:对余额进行充值,输入金额,输出明细
3.消费:顾名思义就是花钱,输入用途和金额,输出明细,并且对金额进行验证,不能出现透支等情况
4.退出:写一个是否确认退出输入y/n的条件
如下图
面向过程编写创建一些基本的属性因为刚入门所以采用比较简单的字符串拼接方法来显示流水
Boolean loop=true; //判断是否退出程序
Scanner sc=new Scanner(System.in);
String key=""; //接收数字选择菜单
String details="---------------零钱通明细---------------\n";
double money=0; //接收金额
double balance=0; //余额
String note=""; //消费用途
因为流水要显示日期,所以临时浅学了个Data
Date date=null;
SimpleDateFormat sd ...
Hexo博客搭建
欢迎来到我的博客!这是我的第一篇文章学长写的教程
以下纯过程记录…
环境安装安装git、Nodejs用下面两条语句检查是否安装成功
node -v
npm -v
安装cnpm,检查版本npm install -g cnpm --registry=http://registry.npm.taobao.org
cnpm -v
安装hexo框架我第一次就是这里卡了导致后面博客加载不出来……..
cnpm install -g hexo-cli
hexo -v
博客程序安装连接Githubgit config --global user.name "GitHub 用户名"
git config --global user.email "GitHub 邮箱"
创建ssh公钥秘钥ssh-keygen -t rsa -C "GitHub 邮箱"
将id_rsa.pub中的公钥添加到github的账号里
用bash验证连接这个地方我看的教程说会出现are you sure,但我验证的时候没出现,
ssh -T git@github.com
这里出现了个but还以为出了什么问题,搜了一圈发现 ...