java实训课web网页相关知识点总结
Posted Jucway
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实训课web网页相关知识点总结相关的知识,希望对你有一定的参考价值。
文章目录
mysql 基础操作
使用方法:
方式一:
SQL:结构化查询语言
DDL(定义),DML(操作),DQL(查询),DCL(控制)
mysql:
操作指令
连接数据库
// 进入mysql
mysql -u root -p
// 显示数据库
show databases;
show tables;
//进入某个数据表
use dataname;
// 当前数据库显示其他数据表
show tables from mysql; 从mysql 显示mysql
// 显示当前是在哪个数据量
show database();
//插入数据
INSRERT INTO (字段名) values (插入数据值);
//学习DAO模式
增删改查
web 的学习
怎么封装jdbc;
// 更新表内容
update news_users set uname='jucw' where uname='zcw';
// 删除
delete from news_users where uname = 'jucw';
delete from 表名 where 字段匹配;
- 使用where需要查找多个的时候,使用IN来匹配多个
数据库实验
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class jdbc
public static void main(String[] args)
Connection con = null;
ResultSet rs = null;
try
// 1. 引入驱动
String sql = "select * from news_users where usid = 10";
Class.forName("com.mysql.cj.jdbc.Driver");
// 访问驱动管理程序
con = DriverManager.getConnection("jdbc:mysql://localhost/db_news?useSSL=FALSE&serverTimezone=Asia/Shanghai","root","123456");
Statement stmt = con.createStatement();
rs = stmt.executeQuery(sql); // 这里返回了第一条记录数据
while(rs.next()) //这里rs 已经是第二条数据,
// 使用游标获取当前行,每次往下移动
//获取当前行的每一列数据
int id = rs.getInt("usid");
String uname = rs.getString("uname");
String pwd = rs.getString("upwd");
System.out.println(id+uname+pwd);
System.out.println("\\t连接成功");
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
try
// 插入数据
System.out.println("\\t插入数据 ");
// 1. 创建执行语句
String sql1 = "insert into news_users(uname, upwd) values('zcw', '123456')";
// 2. 声明用于执行数据库语句
Statement stmt = con.createStatement();// statement 来执行数据库
// 3. 将数据执行插入到数据库
stmt.executeUpdate(sql1);
System.out.println("\\t数据更新成功+'zcw', '123456'!!!");
catch (Exception e)
e.printStackTrace();
try
// 插入数据
System.out.println("\\t统计数据: ");
// 1. 创建执行语句
String sql1 = "select COUNT(*) from news_users";
// 2. 声明用于执行数据库语句
Statement stmt = con.createStatement();// statement 来执行数据库
// 3. 将数据执行插入到数据库
rs = stmt.executeQuery(sql1);
rs.next();
int c = rs.getInt(1);
System.out.println("\\tcount:"+c);
catch (Exception e)
e.printStackTrace();
try
// 插入数据
System.out.println("\\t统计数据: ");
// 1. 创建执行语句
String sql1 = "DELETE FROM news_users where usid = 16";
// 2. 声明用于执行数据库语句
Statement stmt = con.createStatement();// statement 来执行数据库
// 3. 将数据执行插入到数据库
int row = stmt.executeUpdate(sql1);
System.out.println("\\t删除了:"+row);
System.out.println();
catch (Exception e)
e.printStackTrace();
DAO 模式
-
Data Access Object 数据访问对象,数据访问层,持久层
-
orm 框架:object relational mapping 对象关系映射
作用: 程序怎么操作数据库表的记录, 程序中设计实体模型,看出是数据库表在程序中的一种体现
orm 映射内容:
- 数据库表 ---- java类(entry)实体类
- 表字段 ---- java 类的属性
- 数据类型 ----java数据类型对应
- 表的一条记录 ----- java类的某个实体
-
通用DAO
打开数据库的连接
关闭数据库的连接
-
DAO的实现
表 ----- 用户的实体类
-
preparedStatement :预处理的接口
-
- 通过占位符设参数
-
定义函数
-
查找用户
String sql = "select * from 表名 where usid=?"; //传进来的参数是id #使用prepareStatement 可以预编译sql #设置占位符的参数 pre.setInt(1,id) # 这里的占位符跟format 是一样的,指定的位置是第几个参数 # 开始执行参数 rs = pre.executeQuery() # 这里不同于Statement 不用传进来sql 使用try catch finally 最终在finally关闭连接
-
添加用户
# 需要传进来两个参数 用户名和密码 String sql = "Insert into 表名(uname, upwd) value (?,?)" # 在这里占位 # 预编译sql # 设置占位符的值 pre.setString(1, user.getUsername()); #传进来数据 pre.setString(2, user.getUserpwd()); # 传进来密码
-
修改用户数据
# 将所有数据重新写入一边 #一行设置
-
删除数据
# 根据指定的id把用户数据删除 pre.setInt(1,id); # 将sql 语句的值补充完整
-
-
测试的时候:
-
添加用户
- 创建新的用户类,设置新的用户信息,将新的用户信息传到添加函数里面去;
-
删除用户
-
根据指定的id找到指定的用户
-
将指定的用户添加到删除函数里面,返回删除的行数
-
-
修改用户数据
- 根据id查找到指定的用户
- 将找到的用户添加到修改函数里,返回删除的行数
-
查找用户
- 根据指定的id查找的用户
- 提取用户的字段显示
-
DAO 封装的增删改查代码
import javax.jws.soap.SOAPBinding;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao extends BaseDao // 继承
ResultSet rs = null;
public List<entry.Users> findAllUsers() throws SQLException
// 查询所有用户
String sql = "select * from news_users";
Connection con = this.getConnection();
Statement stamt = null;
ResultSet rs = null;
List<entry.Users> list = new ArrayList<>();
stamt = con.createStatement();
rs = stamt.executeQuery(sql);
while (rs.next())
entry.Users user = new entry.Users();
user.setId(rs.getInt("usid"));
user.setUsername(rs.getString("uname"));
user.setPassword(rs.getString("upwd"));
list.add(user);
return list;
public entry.Users findUsersById(int id)
String sql = "SELECT * FROM news_users WHERE usid=?"; // 传进来一个id 返回一个用户
Connection con = this.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
entry.Users user = null;
try
pstmt = con.prepareStatement(sql); //预编译sql
//设置占位符参数
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
if(rs.next()) //移动数据库游标 ,往下移一行
//获取当前行的每一列的数据
user = new entry.Users();
user.setId(rs.getInt("usid"));
user.setUsername(rs.getString("uname"));
user.setPassword(rs.getString("upwd"));
catch (SQLException e)
e.printStackTrace();
finally
this.closeDB(con, pstmt, rs);
return user;
/**
* 添加用户
* @param user 用户对象的载体
* @return 返回影响行数
*/
public int addUser(entry.Users user) // 返回值是int
String sql = "INSERT INTO news_users(uname,upwd) VALUES(?,?)";
Connection con = this.getConnection();
PreparedStatement pstmt = null;
int row = 0;
try
pstmt = con.prepareStatement(sql); //预编译sql 使用占位符
//设置占位符参数
pstmt.setString(1, user.getUsername()); // 用户名在第一位
pstmt.setString(2, user.getPassword()); // 密码在第二位
row = pstmt.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
this.closeDB(con, pstmt, null);
return row;
/**
* 修改用户
* @param user 用户对象的载体
* @return 返回影响行数
*/
public int updateUser(entry.Users user)
String sql = "UPDATE news_users SET uname=?,upwd=? WHERE usid=?";
Connection con = this.getConnection();
PreparedStatement pstmt = null;
int row = 0;
try
pstmt = con.prepareStatement(sql); //预编译sql // 给预编译占位符设置初始值
//设置占位符参数
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setInt(3, user.getId());
row = pstmt.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
this.closeDB(con, pstmt, null);
return row;
public int deleteUser(int id)
String sql = "DELETE FROM news_users WHERE usid=?";
Connection con = this.getConnection();
PreparedStatement pstmt = null;
int row = 0;
try
pstmt = con.prepareStatement(sql); //预编译sql
//设置占位符参数
pstmt.setInt(1, id);
row = pstmt.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
this.closeDB(con, pstmt, null);
return row;
DAO封装的增改查测试代码
import java.sql.SQLException;
import java.util.List;
public class testDao
private static int id = 1;
private int row = 1;
public static void main(String[] args) throws SQLException
UserDao userDao = new UserDao();
List<entry.Users> list = userDao.findAllUsers();
for (entry.Users users : list)
System.out.println(users.getId()+','+users.getUsername()+","+users.getPassword());
// 添加数据
// entry.Users user = new entry.Users();
// user.setUsername("jucw");
// user.setPassword("1323");
// int row = userDao.addUser(user);
// System.out.println("\\t 第"+row+"行添加数据!!!");
// 删除
// entry.Users user = userDao.findUsersById(id);
// int row = userDao.updateUser(user);
// System.out.println("\\t 成功删除第"+row+"行数据!!!");
// 修改密码数据
// int id = 3;
// entry.Users user = userDao.findUsersById(id); // 查找到用户的Id
// user.setPassword("5201314");
// int row = userDao.updateUser(user);
// System.out.println("\\t 更新第"+row+"行数据成功");
// 查找id
// int id = 3;
// entry.Users user = userDao.findUsersById(id); // 查找id返回user
// System.out.println(user.getUsername()+','+user.getPassword());
jsp
-
jsp 和 servelet 本子是相同的
-
jsp = java server pages
-
作用:主要是呈现动态内容,也可以接受请求做出响应
-
jsp 页面元素
- html 元素
- java 脚本: 小脚本 表达式
- jsp 页面上的标签技术:jstl ,el表达式
-
jsp运行流程:
jsp 转义成,java类(servelet)
java 通过jvm编译成.class 文件
jvm 执行.class 文件 生成html 文件返回给客户端
java Web
- 目标:主要开发动态网页,交互性,和数据库进行交互
servele / jsp 是一对
-
javaweb 运行环境
- jre javaweb
- jre javaweb
-
servelet = server + let
服务器的小程序,是一个Java类运行在服务器上;
是应用程序和数据库之间的中间件
- Web 工程目录结构
-
MCV 模式
- Model 模型
- View 视图
- Controller 控制器
-
访问路径:
https://localhost:8080/目录的路径/文件路径
接受请求之后做出响应;
改为server 接受请求的方法
请求和响应
// 设置响应的编码
response.setContetType("text/html,charset=utf8");
//网页的输出流
PrintWriter out = response.getWriter();
out.print("这是第一个程序");
out.flush();
out.close();
创建一个新的工程文件
- 导包
- 创建新闻流
IDEA
- 数据库连接
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9FqxL5W9-1640679132246)(D:\\resourse\\gui\\Mysql\\mysql.assets\\image-20211228102155741.png)]
配置 Web 项目环境
环境 : IDEA+tomcat
包链接:tomacat 8.0.50 and jstl-1.2.jaar 存在阿里云盘大三作业
在当前的文件过程下配置web
右键项目选择添加框架;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVHgV65x-1640679132247)(D:\\resourse\\gui\\Mysql\\mysql.assets\\image-20211228153155618.png)]
添加网页项目文件
添加tomcat 本地连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9LWqHoz-1640679132248)(D:\\resourse\\gui\\Mysql\\mysql.assets\\image-20211228153349097.png)]
在项目结构里面设置依赖环境
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJk1nn5j-1640679132248)(D:\\resourse\\gui\\Mysql\\mysql.assets\\image-20211228153515516.png)]
配置web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 添加部分 -->
<display-name>FirstServlet</display-name><!-- FirstServlet类名 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file> <!-- 欢迎界面,默认 -->
</welcome-file-list>
<!-- <--! 声明servlet –>-->
<servlet>
<!-- servlet的别名 -->
<servlet-name>first</servlet-name>
<servlet-class>FirstServlet</servlet-class> <!-- 类名部分 -->
</servlet>
<!-- 将Servlet与URL绑定 -->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/hi</url-pattern> <!-- 使用映射类名,浏览器访问使用 -->
</servlet-mapping>
</web-app>
总结:
配置web项目的时候将相关依赖进行设置有服务器Tomcat和设置jsp 时候使用的jstl 两个文件包
在配置tomcat 的时候需要设置相关访问设置
web 项目配置过程中将
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ec0hE21B-1640679132249)(D:\\resourse\\gui\\Mysql\\mysql.assets\\image-20211228160610447.png)]
web下面可以创建两个文件夹:
classes 和 lib
- classes : 在工程结构中设置Output 路径
- lib : 存放需要的包文件
- 本路径下的index.jsp 是默认的文件
- jsp 文件在这个目录下进行创建,之后需要的时候进行导入;
以上是关于java实训课web网页相关知识点总结的主要内容,如果未能解决你的问题,请参考以下文章