第八周 Spring MVC框架

1.运行mysql数据库(之前没关闭mysql数据库的可省略)

2.在MYSQL-front新建一个名为hero的数据库

3.按要求下载好j2ee.rar案例并解压,并将其中一些文件拷贝到IDEA项目里的lib中,再导入必须的servlet-api.jar包

4.进行查询操作

        作为控制器的HeroListServlet.java,其作用就是通过HeroDAO获取所有的heros对象,然后放在request中,跳转到listHero.jsp。

Hero.java文件代码:

package com.pjn.bean;

public class Hero {
    public int id;
    public String name;
    public float hp;
    public int damage;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getHp() {
        return hp;
    }
    public void setHp(float hp) {
        this.hp = hp;
    }
}

HeroDAO.java文件代码: 

package com.pjn.dao;

import com.pjn.bean.Hero;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;


public class HeroDAO {
    public HeroDAO() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root",
                "123456");
    }

    public int getTotal() {
        int total = 0;
        try (Connection c = getConnection(); Statement s = c.createStatement();) {

            String sql = "select count(*) from hero";

            ResultSet rs = s.executeQuery(sql);
            while (rs.next()) {
                total = rs.getInt(1);
            }

            System.out.println("total:" + total);

        } catch (SQLException e) {

            e.printStackTrace();
        }
        return total;
    }

    public void add(Hero hero) {

        String sql = "insert into hero values(null,?,?,?)";
        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

            ps.setString(1, hero.name);
            ps.setFloat(2, hero.hp);
            ps.setInt(3, hero.damage);

            ps.execute();

            ResultSet rs = ps.getGeneratedKeys();
            if (rs.next()) {
                int id = rs.getInt(1);
                hero.id = id;
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

    public void update(Hero hero) {

        String sql = "update hero set name= ?, hp = ? , damage = ? where id = ?";
        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

            ps.setString(1, hero.name);
            ps.setFloat(2, hero.hp);
            ps.setInt(3, hero.damage);
            ps.setInt(4, hero.id);

            ps.execute();

        } catch (SQLException e) {

            e.printStackTrace();
        }

    }

    public void delete(int id) {

        try (Connection c = getConnection(); Statement s = c.createStatement();) {

            String sql = "delete from hero where id = " + id;

            s.execute(sql);

        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

    public Hero get(int id) {
        Hero hero = null;

        try (Connection c = getConnection(); Statement s = c.createStatement();) {

            String sql = "select * from hero where id = " + id;

            ResultSet rs = s.executeQuery(sql);

            if (rs.next()) {
                hero = new Hero();
                String name = rs.getString(2);
                float hp = rs.getFloat("hp");
                int damage = rs.getInt(4);
                hero.name = name;
                hero.hp = hp;
                hero.damage = damage;
                hero.id = id;
            }

        } catch (SQLException e) {

            e.printStackTrace();
        }
        return hero;
    }

    public List<Hero> list() {
        return list(0, Short.MAX_VALUE);
    }

    public List<Hero> list(int start, int count) {
        List<Hero> heros = new ArrayList<Hero>();

        String sql = "select * from hero order by id desc limit ?,? ";

        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

            ps.setInt(1, start);
            ps.setInt(2, count);

            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                Hero hero = new Hero();
                int id = rs.getInt(1);
                String name = rs.getString(2);
                float hp = rs.getFloat("hp");
                int damage = rs.getInt(4);
                hero.id = id;
                hero.name = name;
                hero.hp = hp;
                hero.damage = damage;
                heros.add(hero);
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
        return heros;
    }

}

 HeroListServlet.java文件代码:

package com.pjn.servlet;

import com.pjn.bean.Hero;
import com.pjn.dao.HeroDAO;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.List;

@WebServlet("/hero.do")
public class HeroListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Hero> heros = new HeroDAO().list();
        req.setAttribute("heros", heros);
        req.getRequestDispatcher("listHero.jsp").forward(req, resp);
    }
}

listHero.jsp 文件代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" import="java.util.*"%>


<table align='center' border='1' cellspacing='0'>
    <tr>
        <td>id</td>
        <td>name</td>
        <td>hp</td>
        <td>damage</td>
        <td>edit</td>
        <td>delete</td>
    </tr>
    <c:forEach items="${heros}" var="hero" varStatus="st">
        <tr>
            <td>${hero.id}</td>
            <td>${hero.name}</td>
            <td>${hero.hp}</td>
            <td>${hero.damage}</td>
            <td><a href="editHero?id=${hero.id}">edit</a></td>
            <td><a href="deleteHero?id=${hero.id}">delete</a></td>
        </tr>
    </c:forEach>
</table>

四个文件写完后,调试listHero.jsp 文件,即可在网页中查询到相关数据库

 

 5.对数据表继续进行增删改查的操作

         查询文件代码:

<%@ page language="java" import="java.sql.*, java.lang.System" pageEncoding="UTF-8" %>
<%
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        out.println("加载数据库驱动时抛出异常,内容如下:");
        e.printStackTrace();
    }
    Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost/how2java",
            "root", "admin");
    Statement stmt = conn.createStatement();

    ResultSet rs = stmt.executeQuery("select * from hero");

    while (rs.next()) {
        out.println("id:" + rs.getString(1) + "         name: " + rs.getString(2) + "        hp:" + rs.getString(3) + "       damage:" + rs.getString(4) +"<br>");
    }
    rs.close();
    stmt.close();
    conn.close();
%>

 后面每进行一次操作就查看数据表一次,观察操作是否成功

        插入文件代码 :

<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<%
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        System.out.println("加载数据库驱动时抛出异常,内容如下:");
        e.printStackTrace();
    }
    Connection conn = DriverManager
            .getConnection(
                    "jdbc:mysql://localhost/how2java?useUnicode=true&characterEncoding=utf8",
                    "root", "admin");
    Statement stmt = conn.createStatement();
    int trn = stmt.executeUpdate("insert into hero(name,hp,damage) values('333','11','22')");
    out.print("插入成功"+trn+"条");
    stmt.close();
    conn.close();
%>

 插入数据成功后再进行下一步修改操作

        修改文件代码:

<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<%
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        System.out.println("加载数据库驱动时抛出异常,内容如下:");
        e.printStackTrace();
    }
    Connection conn = DriverManager
            .getConnection(
                    "jdbc:mysql://localhost/how2java?useUnicode=true&characterEncoding=utf8",
                    "root", "admin");
    Statement stmt = conn.createStatement();
    int trn = stmt.executeUpdate("update hero set name='111' where name='333'");
    out.print("修改成功"+trn+"条");
    stmt.close();
    conn.close();
%>

修改数据成功后,再进行下一步的删除操作

        删除文件代码:

<%@ page language="java" import="java.sql.*" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>删除操作</title>
</head>
<body>
<%
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        System.out.println("加载数据库驱动时抛出异常,内容如下:");
        e.printStackTrace();
    }
    Connection conn = DriverManager
            .getConnection(
                    "jdbc:mysql://localhost/how2java?useUnicode=true&characterEncoding=utf8",
                    "root", "admin");
    Statement stmt = conn.createStatement();
    int trn = stmt.executeUpdate("delete from hero where name='111'");
    out.print("删除成功"+trn+"条");
    stmt.close();
    conn.close();
%>
</body>
</html>

 

 

 

练习总结:本次练习难度稍大, 昨天问题一直没解决,今天才找到解决方案。通过这次练习,对Spring MVC框架有个一些认识,理解到了一些新的知识点,但是还不够熟练,后面还要花点时间对这次练习进行一些优化。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值