【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 映射内容:

  1. 数据库表 ---- java类(entry)实体类
  2. 表字段 ---- java 类的属性
  3. 数据类型 ----java数据类型对应
  4. 表的一条记录 ----- java类的某个实体
  • 通用DAO

    打开数据库的连接

    关闭数据库的连接

  • DAO的实现

表 ----- 用户的实体类

  • preparedStatement :预处理的接口

    1. 通过占位符设参数
  • 定义函数

    • 查找用户

      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 语句的值补充完整
      

  • 测试的时候:

    • 添加用户

      1. 创建新的用户类,设置新的用户信息,将新的用户信息传到添加函数里面去;
    • 删除用户

      1. 根据指定的id找到指定的用户

      2. 将指定的用户添加到删除函数里面,返回删除的行数

    • 修改用户数据

      1. 根据id查找到指定的用户
      2. 将找到的用户添加到修改函数里,返回删除的行数
    • 查找用户

      1. 根据指定的id查找的用户
      2. 提取用户的字段显示
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
      + [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-egYa3MNJ-1640679132245)(D:\resourse\gui\Mysql\mysql.assets\image-20211228151634481.png)]
  • servelet = server + let

    服务器的小程序,是一个Java类运行在服务器上;

    是应用程序和数据库之间的中间件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9Qz1KgN-1640679132246)(D:\resourse\gui\Mysql\mysql.assets\image-20211228103509516.png)]

  • Web 工程目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jl6UBNJY-1640679132246)(D:\resourse\gui\Mysql\mysql.assets\image-20211228121833286.png)]

  • MCV 模式

    1. Model 模型
    2. View 视图
    3. 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)]

tomat IDEA

配置 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>
<!--    <&#45;&#45;! 声明servlet &ndash;&gt;-->
    <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 文件在这个目录下进行创建,之后需要的时候进行导入;
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jucway

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值