sprintboot-web+angularjs+jdbc


这里介绍一个springboot项目的搭建过程,并结合springboot-jdbc获取数据,angularjs展示数据。

环境搭建

  1. 使用Idea新建springboot项目
    项目建立的时候选择springboot模板;
    maven配置文件pom.xml中需要引入:spring-boot-starter-web,参见:

    <?xml version="1.0" encoding="UTF-8"?>
    
    	4.0.0
    
    	com.yihengliu
    	angularjs_demo
    	0.0.1-SNAPSHOT
    	jar
    
    	angularjs_demo
    	Demo project for Spring Boot
    
    	
    		org.springframework.boot
    		spring-boot-starter-parent
    		1.5.9.RELEASE
    		 
    	
    
    	
    		UTF-8
    		UTF-8
    		1.8
    	
    
    	
    		
    			org.springframework.boot
    			spring-boot-starter-web
    		
    
    		
    			org.springframework.boot
    			spring-boot-starter-test
    			test
    		
    	
    
    	
    		
    			
    				org.springframework.boot
    				spring-boot-maven-plugin
    			
    		
    	
    
    
  2. 新建项目结构

angularjs_demo/
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── yihengliu
    │   │           └── angularjs_demo
    │   │               ├── AngularjsDemoApplication.java
    │   │               ├── controller
    │   │               ├── dao
    │   │               ├── model
    │   │               └── service
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       |    ├── css
    │       |    └── js
    |       └── templates
    └── test
        ├── java
        │   └── com
        │       └── yihengliu
        │           └── angularjs_demo
        │               └── AngularjsDemoApplicationTests.java
        └── resources
  1. 编写controller代码

    • RestController
      返回值字符串被直接传送到浏览器并显示给用户。

      package com.yihengliu.angularjsdemo.controller;
      
      import org.springframework.web.bind.annotation.PathVariable;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestMethod;
      import org.springframework.web.bind.annotation.RestController;
      
      /**
       * 访问controller
       *
       * @author liucheng
       * @version 0.1
       * @since 0.1 2018-01-22 上午11:49
       **/
      @RestController
      @RequestMapping("/server")
      public class RestRequestController {
          @RequestMapping("/index")
          public String method() {
              return "Index Page";
          }
      
          @RequestMapping("/users/{username}")
          public String userProfile(@PathVariable("username") String username) {
              return String.format("user %s", username);
          }
      
          @RequestMapping("/posts/{id}")
          public String post(@PathVariable("id") int id) {
              return String.format("post %d", id);
          }
      
          @RequestMapping(value = "/login", method = RequestMethod.GET)
          public String loginGet() {
              return "Login Page";
          }
      
          @RequestMapping(value = "/login", method = RequestMethod.POST)
          public String loginPost() {
              return "Login Post Request";
          }
      }
      
    • Controller
      使用模板返回使用Thymeleaf模板引擎渲染后的HTML代码。
      引入依赖:

      
          org.springframework.boot
          spring-boot-starter-thymeleaf
      
      

    controller编写:

     ```java
     package com.yihengliu.angularjsdemo.controller;
    
     import org.springframework.stereotype.Controller;
     import org.springframework.ui.Model;
     import org.springframework.web.bind.annotation.PathVariable;
     import org.springframework.web.bind.annotation.RequestMapping;
    
     /**
      * 普通controller
      *
      * @author liucheng
      * @version 0.1
      * @since 0.1 2018-01-22 下午1:42
      **/
     @Controller
     public class HelloController {
         @RequestMapping("/hello/{name}")
         public String hello(@PathVariable("name") String name, Model model) {
             model.addAttribute("name", name);
             return "hello";
         }
     }
     ```
    

    html页面:

     ```html
     
     
     
         
         Getting started: Serving Web Content
     
     
         

    ```

引入JDBC + angularjs

准备

  1. 创建表

    CREATE TABLE `t_user` (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(20) NOT NULL,
        password VARCHAR(20)
    );
    
  2. 修改pom.xml

    
        org.springframework.boot
        spring-boot-starter-test
        test
    
    
        org.springframework.boot
        spring-boot-devtools
        true
    
    
        org.springframework.boot
        spring-boot-starter-jdbc
    
    
        mysql
        mysql-connector-java
    
    
        commons-dbcp
        commons-dbcp
    
    

代码编写

User.java model

package com.yihengliu.angularjsdemo.model;

/**
 * 用户类
 *
 * @author liucheng
 * @version 0.1
 * @since 0.1 2018-01-22 下午3:28
 **/
public class User {
    private Integer Id;
    private String name;
    private String password;

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

UserDao.java

package com.yihengliu.angularjsdemo.dao;

import com.yihengliu.angularjsdemo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.stereotype.Repository;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 用户Dao类
 *
 * @author liucheng
 * @version 0.1
 * @since 0.1 2018-01-22 下午3:29
 **/
@Repository
public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List findAll() {
        List list = new ArrayList<>();
        String sql = "SELECT * FROM t_user";
        SqlRowSet rows = jdbcTemplate.queryForRowSet(sql, new Object[]{});
        while (rows.next()) {
            User user = new User();
            user.setId(rows.getInt("id"));
            user.setName(rows.getString("name"));
            user.setPassword(rows.getString("password"));
            list.add(user);
        }
        return list;
    }

    public User get(String id) {
        User user = null;
        String sql = "SELECT * FROM t_user WHERE ID = ?";
        SqlRowSet rows = jdbcTemplate.queryForRowSet(sql, new Object[]{id});
        while (rows.next()) {
            user = new User();
            user.setId(rows.getInt("id"));
            user.setName(rows.getString("name"));
            user.setPassword(rows.getString("password"));
        }
        return user;
    }

    public Integer insert(User user) {
        String sql = "INSERT INTO t_user (name, password) VALUE (?, ?)";
        Map tableStatus = jdbcTemplate.queryForMap("SHOW TABLE STATUS WHERE NAME='T_USER';");
        jdbcTemplate.update(sql, new Object[]{user.getName(), user.getPassword()});
        BigInteger id = (BigInteger) tableStatus.get("Auto_increment");
        return id.intValue();
    }

    public void update(User user) {
        String sql = "UPDATE t_user SET NAME = ?, PASSWORD = ? WHERE ID = ?";
        jdbcTemplate.update(sql, new Object[]{user.getName(), user.getPassword(), user.getId()});
    }

    public void delete(String id) {
        String sql = "DELETE FROM t_user WHERE ID = ?";
        jdbcTemplate.update(sql, new Object[]{id});
    }
}

UserController.java

package com.yihengliu.angularjsdemo.controller;

import com.yihengliu.angularjsdemo.dao.UserDao;
import com.yihengliu.angularjsdemo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用户controller类
 *
 * @author liucheng
 * @version 0.1
 * @since 0.1 2018-01-22 下午3:34
 **/
@Controller
public class UserController {
    @Autowired
    private UserDao userDao;

    @GetMapping("/")
    public String index() {
        return "index";
    }

    @PostMapping("/save")
    @ResponseBody
    public Map save(@RequestBody User user) {
        Map result = new HashMap<>(5);
        if (user.getId() == null) {
            user.setId(userDao.insert(user));
        } else {
            userDao.update(user);
        }
        result.put("id", user.getId());
        return result;
    }

    @PostMapping("/get")
    @ResponseBody
    public User get(String id) {
       return userDao.get(id);
    }

    @ResponseBody
    @RequestMapping("/findAll")
    public List findAll() {
        return userDao.findAll();
    }

    @PostMapping("/delete")
    @ResponseBody
    public Map delete(String id) {
        Map result = new HashMap<>(2);
        userDao.delete(id);
        result.put("id", id);
        return result;
    }
}

数据库配置

server.port=8088

# database settings
spring.datasource.initialize=false
spring.datasource.url=jdbc:mysql://192.168.6.209:3306/test
spring.datasource.username=system
spring.datasource.password=system
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

页面编写

使用tymeleaf模板+angularjs请求数据并绑定数据。
index.html




    
    sprint boot web
    
    


sprint boot web

用户信息:

用户Id: 用户名: 密码:

用户列表:

操作 ID 用户名 密码
{{row.id}} {{row.name}} {{row.password}}


访文章博客

测试效果

代码下载

springboot_angularjs_jdbc