SpringMVC--实现数据库的增删改查

本次主要是从基础开始配置SpringMVC,包括环境搭建,参数传递,返回值,重定向等细节的讲解。当然最后还会实现对Mysql名为“test”数据库的“jvm”表的增删改查。这是一张关于MVC请求流程的逻辑图,等你实现了一个MVC项目,你会对这张图理解更加深刻《》

SpringMVC的配置

项目准备

我用的是IDEA,首先新建一个WebApplication项目,然后到入jar包,前七个jar包是支持spring所用的jar包,后面两个web和webmvc jar包是支持mvc工程的需要用到的
接着配置一个Tomcat用来启动项目,需要注意的是,你需要在Project Structure->Artifacts的里面添加热部署,(我的默认有一个war exploded)在deployment里面将右边的jar包全选后右击put into web lib的下面。当然后面还会用的jstl和servelt.api这两个jar包,你可以一起导入。

包结构设计

这里主要讲一下spring-mvc.xml的内容,它是一个spring的配置文件,新建是可以在XML Configuration File->Spring Config里面新建文件。需要加一些语句,包扫描声明以及识别mvc注解。里面还需建一个bean对象,是视图解析器,添加返回值路径前缀与后缀。
之后,我们就要在web.xml声明MVC请求中的DispatcherServlet。

Controller

控制器首先要定义@controller注解和@RequestMapping注解。

  1. 对于参数传递可以写在函数后面用@PathVariable声明–变量名要和jsp定义的input名相同或者跟在RequestMapping里面用{
    }指定。

  2. 返回值可以直接返回一个string字符串,之前spring-mvc.xml里面解析会给字符串加上前后缀补全路径。

  3. 重定向只需返回一个redirect,例如return “redirect:/jvm/test”。

这里有一个方便的处理前端显示后端的数据,一是函数返回String类型,通过定义ModelMap modelMap对象,只要通过modelMap.addAtributes(“名称”,entity对象),返回entity对象名就可以了,二是返回ModelAndView对象,定义一个ModelAndView model对象,通过model.addObject(“名称”,entity对象),返回model就可以了-----前端就可以用js标签${jvm.id}取到值了

项目目录

这里我放一张目录结构的图,希望有心的同学可以好好做!

下面是代码部分:

controller.JvmController

package top.jff.connector.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import top.jff.connector.entity.Jvm;
import top.jff.connector.service.JvmServiceImpl;

import javax.servlet.http.HttpServletRequest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@Controller
@RequestMapping("jvm")
public class JvmController {

    @RequestMapping(value = "/insert")
    public String insert(Jvm jvm){

        int id=jvm.getId();
        int instances=jvm.getInstances();
        int bytes=jvm.getBytes();
        String class_name=jvm.getClass_name();
        int num=jvm.getNum();

        JvmServiceImpl jvmService=new JvmServiceImpl();
        jvmService.insert(id,instances,bytes ,class_name ,num );
        return "success";
    }
    @RequestMapping(value = "/find")
    public String find(int id,ModelMap modelMap){
        JvmServiceImpl jvmService=new JvmServiceImpl();
        Jvm jvm=new Jvm();
        jvm=jvmService.find(id);
        modelMap.addAttribute("jvm",jvm);
        return "jvm";
    }
}

entity.Jvm

package top.jff.connector.entity;

public class Jvm {
    private int id;
    private int instances;
    private int bytes;
    private String class_name;
    private int num;

    public int getId() {
        return id;
    }

    public int getInstances() {
        return instances;
    }

    public int getBytes() {
        return bytes;
    }

    public String getClass_name() {
        return class_name;
    }

    public int getNum() {
        return num;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setInstances(int instances) {
        this.instances = instances;
    }

    public void setBytes(int bytes) {
        this.bytes = bytes;
    }

    public void setClass_name(String class_name) {
        this.class_name = class_name;
    }

    public void setNum(int num) {
        this.num = num;
    }
}

service.JvmService

package top.jff.connector.service;

import top.jff.connector.entity.Jvm;

public interface JvmService {
     public void insert(int id,int stances,int bytes,String class_name,int num);
     public Jvm find(int id);
}

service.JvmServiceImpl

package top.jff.connector.service;

import top.jff.connector.entity.Jvm;

import java.sql.*;

public class JvmServiceImpl implements JvmService{
    @Override
    public void insert(int id,int instances,int bytes,String class_name,int num){
        String sql="insert into jvm(id,instances,bytes,class_name,num) values(?,?,?,?,?)";
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 数据库连接字符串
        String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8";
        // 数据库用户名
        String username = "root";
        // 数据库密码
        String password = "123456";
        // 创建Connection连接
        try {
            Connection conn = null;
            conn = DriverManager.getConnection(url, username, password);
            PreparedStatement preparedStatement= null;

            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1,id );
            preparedStatement.setInt(2,instances );
            preparedStatement.setInt(3,bytes);
            preparedStatement.setString(4,class_name );
            preparedStatement.setInt(5,num );
            preparedStatement.execute();
            System.out.println("插入成功");
        } catch (SQLException e) {
            System.out.println("错误");
            e.printStackTrace();
        }

    }
    @Override
    public Jvm find(int id){
        Jvm jvm=new Jvm();
        String sql="select * from jvm where id=?";
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8";
        // 数据库用户名
        String username = "root";
        // 数据库密码
        String password = "123456";
        try {
            Connection connection=DriverManager.getConnection(url, username, password);
            PreparedStatement preparedStatement=connection.prepareStatement(sql);
            ResultSet resultSet=preparedStatement.executeQuery();
            while (resultSet.next()){
                jvm.setId(resultSet.getInt(1));
                jvm.setInstances(resultSet.getInt(2));
                jvm.setBytes(resultSet.getInt(3));
                jvm.setClass_name(resultSet.getString(4));
                jvm.setNum(resultSet.getInt(5));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return jvm;
    }
}

jsp页面

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: JFF
  Date: 2020/5/16
  Time: 5:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="/jvm/insert" method="post">
    <input type="text" name="id" />
    <input type="text" name="instances" />
    <input type="text" name="bytes" />
    <input type="text" name="class_name" />
    <input type="text" name="num" />
    <input type="submit" value="提交mvc" />
  </form>
  <form action="/jvm/find" method="post">
    <input type="text" name="id"/>
    <input type="submit" value="查询"/>
  </form>
  </body>
</html>

jvm.jsp

<%--
  Created by IntelliJ IDEA.
  User: JFF
  Date: 2020/5/16
  Time: 5:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
success  ${jvm.id}  ${jvm.instances} ${jvm.bytes} ${jvm.class_name} ${jvm.num}
</body>
</html>

两个配置文件需要特特特别注意

web.xml-----为DispatcherServlet创建入口

<?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">
    <servlet>
        <servlet-name>ssm-blog</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:./top/jff/connector/resource/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ssm-blog</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

resource.spring-mvc.xml–包扫描,识别注解,定义视图解析bean对象

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <mvc:annotation-driven/>
    <context:component-scan base-package="top.jff.connector.**"></context:component-scan>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    </bean>
</beans>

终于写完了,如果有什么不完善的地方,还请各位指教。需要完整jar包的可以留言。

原创文章 2 获赞 5 访问量 519

猜你喜欢

转载自blog.csdn.net/EndlessJF/article/details/106153301