第九章 Spring MVC框架

1.MVC原理

M 代表 模型(model)即数据(dao、bean)

V 代表 视图 (view) 即网页、JSP,用来展示模型中的数据

C 代表 控制器 (controller)即用控制器将不同的数据(model)显示到不同的视图(view)上,在本文章中Servlet就充当控制器,把Hero对象显示在JSP上。

 

2.Spring MVC环境搭建

1.添加Spring MVC依赖的jar包

所需要添加的包老师已经提供了资源,下载解压之后赋值粘贴到“WebContent/WEB-INF/lib”目录下即可,添加完成后如下图所示:

2.导入必须的servlet-api.jar包

导入方法:右键->properties->Java Build Path ->Libraries->Add External JARs

导入结果如下图所示:

 

3.导入数据(bean、dao)

bean、bao代码老师已经提供了,直接使用即可,创建目录如下:

, 

baen中具体代码如下:

package 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;
	}
	public int getDamage() {
		return damage;
	}
	public void setDamage(int damage) {
		this.damage = damage;
	}
     
}

dao中具体代码如下:

package dao;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
import bean.Hero;
  
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;
    }
  
}

4.新建servelet

实现将数据库内容进行显示

具体代码如下:

package servlet;
import bean.Hero;
import dao.HeroDAO;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * Servlet implementation class HeroListServlet
 */
@WebServlet("/HeroListServlet")
public class HeroListServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	List<Hero> heros = new HeroDAO().list();
        request.setAttribute("heros", heros);
        request.getRequestDispatcher("listHero.jsp").forward(request, response);

	}

}

运行结果为:

3.进行增删改查操作

1.查询操作

具体代码如下:

package servlet;
import bean.Hero;
import dao.HeroDAO;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * Servlet implementation class HeroListServlet
 */
@WebServlet("/HeroListServlet")
public class HeroListServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	List<Hero> heros = new HeroDAO().list();
        request.setAttribute("heros", heros);
        request.getRequestDispatcher("listHero.jsp").forward(request, response);

	}

}

运行结果为:

2.删除操作

具体代码如下:

<%@ 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", "123456");
    Statement stmt = conn.createStatement();
	int trn = stmt.executeUpdate("delete from hero where name='盖伦'");
	out.print("删除成功"+trn+"条");
    stmt.close();
    conn.close();
	%>
	</body>
</html>

运行结果为:

再次查询结果为:

 

3.修改操作

具体代码如下:

<%@ 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", "123456");
	Statement stmt = conn.createStatement();
	int trn = stmt.executeUpdate("update hero set name='疾风剑豪' where name='222'");//注意语句中的写法有的地方是,分隔 有的地方是空格分隔
	out.print("修改成功"+trn+"条");
	stmt.close();
	conn.close();
%>

 允许结果为:

再次查询结果为:

 

 4.增加操作

具体代码如下:

<%@ 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", "123456");
    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();
%> 

运行结果:

 再次查询的结果为:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值