JavaWeb 数据库应不应该取别名
除了查询的数据表可以取别名来方便操作外,对数据列也是可以取别名的。
我先来说我的观点:对于数据列,是不建议取别名的。假设有以下两张表
-- 部门表CREATE TABLE department( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));-- 员工信息表CREATE TABLE employee( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), dept_id INT, CONSTRAINT fk_dept_id FOREIGN KEY(dept_id) REFERENCES department(id));INSERT INTO department(name) VALUES('教学部'),('研发部'),('产品部');INSERT INTO employee(name, dept_id) VALUES('张三', 1),('李四', 3),('王五& ...
JavaWeb 解决数据库中文乱码 详细版
检查前端页面编码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
修改Eclipse字符集Window > Preferences > General > Workspace,修改Text file encoding项。
选择 Other,下拉框选择UTF-8
原先项目乱码解决然后你就会发现你的项目里的汉字全是乱码,这时候随便在某个地方创建一个Java文件,命名为Main.java
// A code blockimport java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import j ...
JavaWeb 总结性介绍
前言:次文章乃个人理解,如与实际知识点有出入,欢迎讨论指教,谢谢各位——作者:小麦
8/3/2021 - 对Ajax获取数据之前讲的不严谨,对其增加案例讲解;补充SQL语句的介绍
JavaJava是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
Java是干前端还是后端的这个嘛,都有,只是Java设计后端的知识点更多,前端Java的代表就是安卓开发。后端的话,就是接下来我们要讲的。
为什么要学JavaJava语言是目前中国市场需求量最高的编程语言,就冲这一点——赚钱!
生涩难懂的概念
以下知识点都是个人理解,用最基本的方式去搞清楚这些概念。可能和专业认知有出入,欢迎指正
什么是JavaWeb?用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
前端Internet上被人访问的We ...
JavaWeb 航空管理系统后端笔记
解决中文乱码Response.setContentType(text/html;charset=utf-8);
将浏览器编码设置为utf-8,使其出现中文时不会乱码
404报错servlet 名称没有更改成和 api 文档中一致,或者是文件夹包名命名错误,解决方法就是将其改为一致。
500报错空指针异常代码中数据定义出错,缺少定义或者代码本身错误,解决方案是检查代码的数据定义,以及代码本身问题。
Size > 1sql语句出现问题,在返回数据时参数位置写反,以及sql语句中,应该为’?’的地方写出了具体数据,解决方案是将其修正过来。
在sql条件为两个时,需要用and连接,如果没有连接则会报错。在部分接口startDate和endDate的获取是根据departureDate时,引号中间有空格。
JavaWeb 解决后端中文乱码
修改数据库可以保存中文
以下方法适用于 MySQL 5.0 和 8.0。
首先打开 MySQL Command Line Client(就是 MySQL 的终端程序),输入数据库密码。
在第一行输入 show variables like '%char%';,它会返回一张表。上面是数据库编码。
+--------------------------+--------------------------------------+| Variable_name | Value |+--------------------------+--------------------------------------+| character_set_client | gbk || character_set_connection | gbk || charac ...
JavaWeb 笔记 12 三层 JDBC
回顾步骤回顾要进行一次完整的数据库增删改查,我们需要执行以下的步骤:
获得 URL 的参数
将参数拼接成 SQL 语句
访问数据库(省略 MySqlHelper 所做的操作)
处理数据
Servlet 界面显示返回值
一层 JDBC
MySqlHelper + Servlet(界面)
Servlet 负责接收 URL 参数
然后将 SQL 语句和参数传递给 MySqlHelper 的方法
MySqlHelper 查询数据库之后处理返回值对象,并合并为 List 对象返回给 Servlet
Servlet 将其转换成 JSON 字符串,输出。
注: 这个版本的 JSON 也不是我们想要输出的样子,因为它没有 data 和 flag 键。
两层 JDBC
MySqlHelper + DAO + Servlet,外加一个 pojo.Result 实体类
DAO = Data Access Object 数据访问层
DAO 保存了 SQL 语句
Servlet 负责接收 URL 参数
将参数传给对应的 DAO
DAO 拼接参数,调用 MySqlHelper 得到 List 对象
...
JavaWeb 笔记 10 MySqlHelper 类第 3 版
目标引入 HashMap,让返回值变为哈希表,而不是 ResultSet。因为 ResultSet 不能直接转为 JSON 字符串。
HashMap 是键值对,键是唯一的,值是不唯一的。所以可以通过键来找到对应的值。
修改函数的返回值为:HashMap<String, Object>。意味着我们需要的键值对为字符串和 Object 类型
然后再将数据通过 Servlet 返回
仅仅通过 HashMap 返回是不行的。因为我们需要返回的数据可能是多条,而 HashMap 只能是一条记录。下面我们会一步一步的去升级它,看着!
准备首先,我们最后要返回的是 JSON 字符串。所以需要下载阿里巴巴的 FastJson 包。到 Central Repository: com/alibaba/fastjson/1.2.78 (maven.org) 下载 fastjson-1.2.78.jar。然后拖入项目的 src/main/webapp/WEB-INF/lib 文件夹下。
第一次升级修改 executeQuery:
这里我省略了 中间一大段,改为注释。
public static ...
JavaWeb 笔记 9 MySqlHelper 类第 2 版
目标之前的 MySqlHelper 在调用的时候是这样的
String sql = "SELECT * FROM [table] WHERE [col1] = [value1] AND [col2] = [value2]";ResultSet rs = MySqlHelper.executeQuery(sql);
可以发现,我们之前的 SQL 语句已经写死了所有的数据。这样在后续开发的时候非常不方便,且不安全。容易出现 SQL 注入等情况。
现在,我们要优化我们的 MySqlHelper 类,让它的函数定义为:
public static ResultSet executeQuery(String sql, Object[] param) {}public static ResultSet executeUpdate(String sql, Object[] param) {}
解释一下,Object[] param 是 SQL 语句的参数。为什么是 Object 类型?因为我们的参数可能是 String 也可能是 Integ ...
JavaWeb 笔记 8 MySqlHelper 类第 1 版
复习先来复习一遍要对数据库进行操作的步骤
增删改
注册驱动
连接数据库
准备 PrepareStatement,预处理 SQL 语句
调用 executeUpdate() 得到 int 类型返回值
处理数据
关闭连接
查
注册驱动
连接数据库
准备 PrepareStatement,预处理 SQL 语句
调用 executeQuery() 得到 ResultSet 类型返回值
处理数据
关闭连接
原先代码如果说看不懂上面我想表达什么,看看这两份代码
增删改// 注册驱动String driver = "com.cj.mysql.jdbc.Driver";try { Class.forName(driver);} catch (ClassNotFoundException e) {}// 建立连接String url = "jdbc:mysql://localhost:3306/数据库名";try { Connection conn = DriverManager.getConnection(u ...
JavaWeb 笔记 7 SQL 语句
插入数据数据要和字段一一对应。如果是自增的字段可以直接略过
INSERT INTO 表名 (字段1, 字段2, 字段n)VALUES (数据1, 数据2, 数据n);
查询数据* 代表返回所有字段
SELECT * FROM 表名WHERE 条件
条件可以是零个或多个
零个代表直接返回所有数据
多个条件可以用逻辑 AND 和 OR 进行隔开
条件的语句通常为
字段名 = 值
字段名 LIKE 值的样式(比如包含某些字母……)
星号代表返回查询到的所有字段