wuheng 2 лет назад
Родитель
Сommit
b0d1312256

+ 2 - 1
day03/pom.xml

@@ -16,10 +16,11 @@
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
     <dependencies>
+
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
-            <version>5.1.9.RELEASE</version>
+            <version>5.3.22</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>

+ 26 - 11
day03/src/main/java/com/lovecoding/mvc/contorller/BookContorller.java

@@ -4,7 +4,12 @@ import com.lovecoding.mvc.dao.BookDao;
 import com.lovecoding.mvc.service.BookService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 必须使用 RustFul 风格的操作
@@ -18,28 +23,38 @@ public class BookContorller {
     @Autowired
     BookService bookService;
 
-    @PostMapping("/add")
+    @PostMapping("/")
     public String add(BookDao book){
         int add = bookService.add(book);
         return "/success.jsp";
     }
 
     @DeleteMapping("/{bookId}")
-    public String del(Long bookId){
+    @ResponseBody
+    public String del(@PathVariable Long bookId){
         bookService.del(bookId);
-        return "/success.jsp";
+        return "操作成功";
     }
 
-    @PutMapping("/{bookId}")
-    public String update(Long bookId){
-        bookService.update(bookId);
-        return "/success.jsp";
+    @PutMapping("/")
+    @ResponseBody
+    public String update(BookDao book){
+        bookService.update(book);
+        return "操作成功!";
     }
 
-    @GetMapping(("/{bookId}"))
-    public String get(Long bookId){
-        bookService.get(bookId);
-        return "/success.jsp";
+    @GetMapping({"/{bookId}", "/"})
+    public String get(@PathVariable(required = false) Long bookId, Model model){
+
+        if ( bookId == null ) {
+            List<Map<String, Object>> bookDaos = bookService.get();
+            model.addAttribute( "books", bookDaos );
+            return "/list.jsp";
+        }
+        BookDao bookDao = bookService.get(bookId);
+        model.addAttribute("book", bookDao);
+        return "/update.jsp";
+
     }
 
 

+ 4 - 1
day03/src/main/java/com/lovecoding/mvc/dao/BookDao.java

@@ -4,5 +4,8 @@ import lombok.Data;
 
 @Data
 public class BookDao {
-    String name;
+    Long book_id;
+    String book_name;
+    Long price;
+    Long stock;
 }

+ 6 - 2
day03/src/main/java/com/lovecoding/mvc/model/Book.java

@@ -2,9 +2,13 @@ package com.lovecoding.mvc.model;
 
 import com.lovecoding.mvc.dao.BookDao;
 
+import java.util.List;
+import java.util.Map;
+
 public interface Book {
     int add(BookDao book);
     int del(Long bookId);
-    int update(Long bookId);
-    int get(Long bookId);
+    int update(BookDao book);
+    List<Map<String, Object>> get();
+    BookDao get(Long bookId);
 }

+ 39 - 11
day03/src/main/java/com/lovecoding/mvc/model/BookMapper.java

@@ -2,8 +2,13 @@ package com.lovecoding.mvc.model;
 
 import com.lovecoding.mvc.dao.BookDao;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
+import org.springframework.validation.BeanPropertyBindingResult;
+
+import java.util.List;
+import java.util.Map;
 
 @Repository
 public class BookMapper implements Book {
@@ -13,29 +18,52 @@ public class BookMapper implements Book {
 
     @Override
     public int add(BookDao book) {
-        String sql = "UPDATE `test`.`test` SET `id` = 1";
-        int update = jdbcTemplatel.update(sql);
+        Object[] insert = new Object[] {
+                book.getBook_name(),
+                book.getPrice(),
+                book.getStock()
+        };
+        String sql = "INSERT INTO`t_book` (`book_name`, `price`, `stock`) VALUES (?, ?, ?)";
+        int update = jdbcTemplatel.update(sql, insert);
         return update;
     }
 
     @Override
     public int del(Long bookId) {
-        String sql = "UPDATE `test`.`test` SET `id` = 1";
-        int update = jdbcTemplatel.update(sql);
+        Object[] id = new Object[]{bookId};
+        String sql = "DELETE FROM `t_book` WHERE `book_id` = ?";
+        int update = jdbcTemplatel.update(sql, id);
         return update;
     }
 
     @Override
-    public int update(Long bookId) {
-        String sql = "UPDATE `test`.`test` SET `id` = 1";
-        int update = jdbcTemplatel.update(sql);
+    public int update(BookDao book) {
+        Object[] args = new Object[]{
+                book.getBook_name(),
+                book.getPrice(),
+                book.getStock(),
+                book.getBook_id()
+        };
+        String sql = "UPDATE `t_book` SET book_name = ?, price = ?, stock = ?  WHERE `book_id` = ? ";
+        int update = jdbcTemplatel.update(sql, args);
+        System.out.println( update );
+        System.out.println( book );
         return update;
     }
 
     @Override
-    public int get(Long bookId) {
-        String sql = "UPDATE `test`.`test` SET `id` = 1";
-        int update = jdbcTemplatel.update(sql);
-        return update;
+    public BookDao get(Long bookId) {
+        String sql = "SELECT book_id, book_name, price, stock FROM `t_book` WHERE book_id = ?";
+        Object[] id = new Object[]{bookId};
+        BookDao bookDao = jdbcTemplatel.queryForObject(
+                sql, id, new BeanPropertyRowMapper<BookDao>(BookDao.class));
+        return bookDao;
+    }
+
+
+    public List<Map<String, Object>> get() {
+        String sql = "SELECT book_id, book_name, price, stock  FROM `t_book`";
+        List<Map<String, Object>> maps = jdbcTemplatel.queryForList(sql);
+        return maps;
     }
 }

+ 6 - 2
day03/src/main/java/com/lovecoding/mvc/service/BookService.java

@@ -2,9 +2,13 @@ package com.lovecoding.mvc.service;
 
 import com.lovecoding.mvc.dao.BookDao;
 
+import java.util.List;
+import java.util.Map;
+
 public interface BookService {
     int add(BookDao book);
     int del(Long bookId);
-    int update(Long bookId);
-    int get(Long bookId);
+    int update(BookDao book);
+    BookDao get(Long bookId);
+    List<Map<String, Object>> get();
 }

+ 14 - 6
day03/src/main/java/com/lovecoding/mvc/service/BookServiceImpl.java

@@ -5,6 +5,9 @@ import com.lovecoding.mvc.model.Book;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 @Service
 public class BookServiceImpl implements BookService {
 
@@ -23,14 +26,19 @@ public class BookServiceImpl implements BookService {
         return add;
     }
 
-    @Override
-    public int update(Long bookId) {
-        int add = this.book.update(bookId);
-        return add;
+
+    public int update(BookDao book) {
+        int update = this.book.update(book);
+        return update;
+    }
+
+
+    public BookDao get(Long bookId) {
+        return this.book.get(bookId);
     }
 
     @Override
-    public int get(Long bookId) {
-        return 0;
+    public List<Map<String, Object>> get() {
+        return this.book.get();
     }
 }

+ 1 - 0
day03/src/main/resources/spring-mvc.xml

@@ -21,4 +21,5 @@
         <property name="dataSource" ref="dataSource"></property>
     </bean>
 
+
 </beans>

+ 13 - 0
day03/src/main/webapp/WEB-INF/web.xml

@@ -39,4 +39,17 @@
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 
+
+
+    <filter>
+        <filter-name>PutFilter</filter-name>
+        <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>PutFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
+
 </web-app>

+ 42 - 0
day03/src/main/webapp/list.jsp

@@ -0,0 +1,42 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ page import="com.lovecoding.mvc.dao.BookDao" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.Map" %><%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-01
+  Time: 上午 11:43
+  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>
+<table style="width: 500px; margin: 0 auto;" border="1" >
+    <tr>
+        <td>id</td>
+        <td>名字</td>
+        <td>价格</td>
+        <td>库存</td>
+        <td>操作</td>
+    </tr>
+    <c:forEach items="${books}" var="book">
+        <tr>
+            <td>${book.book_id}</td>
+            <td>${book.book_name}</td>
+            <td>${book.price}</td>
+            <td>${book.stock}</td>
+            <td>
+
+                <a href=""> 删除 </a>
+                <a href="<%=request.getContextPath()%>/book/${book.book_id}"> 修改 </a>
+
+            </td>
+        </tr>
+    </c:forEach>
+</table>
+</body>
+</html>

+ 9 - 0
day03/src/main/webapp/success.jsp

@@ -9,8 +9,17 @@
 <html>
 <head>
     <title>Title</title>
+
 </head>
 <body>
 <h1>操作成功</h1>
+
+<script>
+
+    setTimeout(function(){
+        window.location.href = "<%=request.getContextPath()%>/book/"
+    }, 3000)
+
+</script>
 </body>
 </html>

+ 62 - 0
day03/src/main/webapp/update.jsp

@@ -0,0 +1,62 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-01
+  Time: 上午 11:43
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+    <script src="https://cdn.bootcss.com/qs/6.5.1/qs.min.js"></script>
+</head>
+<body>
+
+
+<form action="#">
+    <input id="book_id" name="book_id" value="${book.book_id}" />   <br />
+    <input id="book_name" name="book_name" value="${book.book_name}" />  <br />
+    <input id="price" name="price" value="${book.price}" />  <br />
+    <input id="stock" name="stock" value="${book.stock}" />  <br />
+    <input  type="button" onclick="update()" value=" 提交修改 ">
+</form>
+
+
+<script>
+
+
+    function update(){
+
+        var book_id = document.querySelector("#book_id").value
+        var book_name = document.querySelector("#book_name").value
+        var price = document.querySelector("#price").value
+        var stock = document.querySelector("#stock").value
+        var formData = {
+            book_id : book_id,
+            book_name : book_name,
+            price : price,
+            stock : stock,
+        }
+        var xmlHttpRequest = new XMLHttpRequest();
+        xmlHttpRequest.open(
+            "PUT",
+            "http://localhost:8080/day03_war_exploded/book/"
+        )
+        xmlHttpRequest.setRequestHeader(
+            "Content-Type", "application/x-www-form-urlencoded" )
+        xmlHttpRequest.onreadystatechange = function(){
+            if ( xmlHttpRequest.status == 200
+                && xmlHttpRequest.readyState == 4 ) {
+                window.location.href = "<%=request.getContextPath()%>/success.jsp"
+            }
+        }
+        xmlHttpRequest.send( Qs.stringify(formData) )
+    }
+
+</script>
+
+
+
+</body>
+</html>

+ 19 - 0
day04/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>SpringMvc</artifactId>
+        <groupId>org.example</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>day04</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 31 - 0
day04/src/main/java/com/lovecoding/mvc/Application.java

@@ -0,0 +1,31 @@
+package com.lovecoding.mvc;
+
+import org.springframework.web.WebApplicationInitializer;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+import org.springframework.web.servlet.DispatcherServlet;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+
+public class Application implements WebApplicationInitializer {
+
+    @Override
+    public void onStartup(ServletContext servletContext) throws ServletException {
+        System.out.println( "我被调用了!!!" );
+
+        XmlWebApplicationContext applicationContext = new XmlWebApplicationContext();
+
+        applicationContext.setConfigLocation("classpath:spring.xml");
+
+        DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
+
+        ServletRegistration.Dynamic dispatcher =
+                servletContext.addServlet("dispatcher", dispatcherServlet);
+
+        dispatcher.setLoadOnStartup(1);
+        dispatcher.addMapping("/");
+
+    }
+
+}

+ 15 - 0
day04/src/main/java/com/lovecoding/mvc/TestController.java

@@ -0,0 +1,15 @@
+package com.lovecoding.mvc;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class TestController {
+
+
+    @GetMapping("/test")
+    public String test(){
+        return "/test.jsp";
+    }
+
+}

+ 9 - 0
day04/src/main/resources/spring.xml

@@ -0,0 +1,9 @@
+<?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"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
+
+    <context:component-scan base-package="com.lovecoding.mvc" />
+
+</beans>

+ 7 - 0
day04/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<?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">
+
+</web-app>

+ 16 - 0
day04/src/main/webapp/index.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-01
+  Time: 下午 2:30
+  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>
+<h1>我是一个单纯的 JSP</h1>
+</body>
+</html>

+ 16 - 0
day04/src/main/webapp/test.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-01
+  Time: 下午 2:52
+  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>
+    <h1> 看到此页面 证明 SpringMVC 配置正确! </h1>
+</body>
+</html>

+ 8 - 2
pom.xml

@@ -12,6 +12,7 @@
         <module>day01</module>
         <module>day02</module>
         <module>day03</module>
+        <module>day04</module>
     </modules>
 
     <properties>
@@ -20,6 +21,11 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.el</artifactId>
+            <version>3.0.1-b12</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
@@ -27,8 +33,8 @@
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>javax.servlet.jsp</groupId>