J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring

introduction

J'étudie Java depuis quelques années. Récemment (quoique tardivement) j'ai commencé à étudier le printemps. Immédiatement, j'ai essayé de créer une fonction / écran pour l'administrateur du site d'achat. Je suis toujours pauvre, mais veuillez vous y référer si vous le souhaitez.

Version STS: 4.7.0.RELEASE Version MySQL: 8.0.15 version mysql-connector-java: 8.0.16

SampleApplication.java


package com.example.demo;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@SpringBootApplication
public class Sample1Application {
	@RequestMapping(value = "/index", method = RequestMethod.GET)
    public String index() {
		
		return "index";
    }
    
	public static void main(String[] args) {
		SpringApplication.run(Sample1Application.class, args);
	}
}

SampleController.java


package com.example.demo;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;


@Controller
public class SampleController {
	@Autowired
	JdbcTemplate jdbcTemplate;
	
	@Autowired
	private SampleService sampleService;
	
	@ModelAttribute
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(Model model) {
		LoginForm loginForm = new LoginForm();
		loginForm.setId("");
		loginForm.setName("");
        model.addAttribute("loginForm", loginForm);
        model.addAttribute("message", "Veuillez saisir les informations de l'administrateur");
        
        return "login";
    }

	@ModelAttribute
	@RequestMapping(value = "/login_result", method = RequestMethod.POST)
	public String login_result(LoginForm loginForm, Model model) {
		       List<Map<String, Object>> list;
		       list = jdbcTemplate.queryForList("select * from user");
		       
               for(int i = 0; i < list.size(); i++) {
            	   if (("[" + loginForm.getId() + "," + " " + loginForm.getName() + "]").compareTo((list.get(i).values().toString())) == 0) {
            	        model.addAttribute("message", "Vous vous êtes connecté avec succès");
                   }
               
                   else {
            	         model.addAttribute("message", "Je n'ai pas réussi à me connecter");
                   }
               }

	    	return "login_result";
	}
	
    @ModelAttribute
    @RequestMapping(value = "/admin_menu", method = RequestMethod.GET)
    public String admin_menu(Model model) {
	  model.addAttribute("message", "Veuillez sélectionner un menu");

    return "admin_menu";
    }
    
    @ModelAttribute
    @RequestMapping(value = "/show_product", method = RequestMethod.GET)
    public String show_product(Model model) {
    	List<String> products = null;
    	products = sampleService.selectAll();
    	model.addAttribute("products",products);
	    model.addAttribute("message", "Afficher le produit");

    return "show_product";
    }
    
    @ModelAttribute
    @RequestMapping(value = "/register_product", method = RequestMethod.GET)
    public String register_product(Model model) {
    	ProductForm productForm = new ProductForm();
    	model.addAttribute("productForm", productForm);
	    model.addAttribute("message", "Veuillez enregistrer le produit");

    return "register_product";
    }

	@ModelAttribute
    @RequestMapping(value = "/update_product", method = RequestMethod.GET)
    public String update_product(Model model) {
      ProductForm productForm = new ProductForm();
      model.addAttribute("productForm", productForm);
	  model.addAttribute("message", "Veuillez mettre à jour le produit");

    return "update_product";
    }
	
    @ModelAttribute
    @RequestMapping(value = "/delete_product", method = RequestMethod.GET)
    public String delete_product(Model model) {
      ProductForm productForm = new ProductForm();
      model.addAttribute("productForm", productForm);    	
	  model.addAttribute("message", "Veuillez supprimer l'élément");

    return "delete_product";
    }
    
    @ModelAttribute
    @RequestMapping(value = "/afeter_delete_product", method = RequestMethod.POST)
    public String afeter_delete_product(ProductForm productForm, Model model) {
      sampleService.delete(productForm);	
	  model.addAttribute("message", "Le traitement est terminé");

    return "afeter_delete_product";
    }
    
    @ModelAttribute
    @RequestMapping(value = "/show_result", method = RequestMethod.POST)
    public String show_result(ProductForm productForm, Model model) {
    	sampleService.insert(productForm);
	    model.addAttribute("message", "Le traitement est terminé");

    return "show_result";
    }
}

SampleService.java


package com.example.demo;


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 org.springframework.stereotype.Service;


@Service
public class SampleService {  
  public List<String> selectAll() {
	  List<String> entities = null;
	  entities = new ArrayList<String>();
	  ResultSet resultSet = null;
	  Connection connection = null;
	  
	  try {
		  connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?serverTimezone=JST", "root", "root");
          Statement statement = connection.createStatement();
          resultSet = statement.executeQuery("select * from product");

	  while (resultSet.next()) {
		  String str = resultSet.getString("code") + "  " + resultSet.getString("name") + "  " + resultSet.getString("description") + "  " + resultSet.getString("price") + "  " + resultSet.getString("evaluation");
		  entities.add(str);
	  }

		if (connection != null) {
			connection.close();
		}

	  } catch (SQLException e) {
          e.printStackTrace();
	  }
	  
      return entities;
   }
  
  public void insert(ProductForm productForm) {
	  Connection connection = null;
	  
	  try {
		  connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?serverTimezone=JST", "root", "root");
		  PreparedStatement statement = connection.prepareStatement("INSERT INTO product VALUES (?, ?, ?, ?, ?)");

		  statement.setString(1, productForm.getCode());
          statement.setString(2, productForm.getName());
          statement.setString(3, productForm.getDescription());
          statement.setString(4, productForm.getPrice());
          statement.setString(5, productForm.getEvaluation());
          
          connection.setAutoCommit(true);
          statement.execute();

		if (connection != null) {
			connection.close();
		}

	  } catch (SQLException e) {
          e.printStackTrace();
	  }
   }

  public void update(ProductForm productForm) {
	  Connection connection = null;
	  
	  try {
		  connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?serverTimezone=JST", "root", "root");
		  PreparedStatement statement = connection.prepareStatement("UPDATE product SET code=?, name=?, description=?, price=?, evaluation=? WHERE code=?");

		  statement.setString(1, productForm.getCode());
          statement.setString(2, productForm.getName());
          statement.setString(3, productForm.getDescription());
          statement.setString(4, productForm.getPrice());
          statement.setString(5, productForm.getEvaluation());
          statement.setString(6, productForm.getCode());

          connection.setAutoCommit(true);
          statement.execute();

		if (connection != null) {
			connection.close();
		}

	  } catch (SQLException e) {
          e.printStackTrace();
	  }
   }
  
  public void delete(ProductForm productForm) {
	  Connection connection = null;
	  
	  try {
		  connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?serverTimezone=JST", "root", "root");
		  PreparedStatement statement = connection.prepareStatement("DELETE FROM product WHERE code=?");

          statement.setString(1, productForm.getCode());

          connection.setAutoCommit(true);
          statement.execute();
          
		if (connection != null) {
			connection.close();
		}

	  } catch (SQLException e) {
          e.printStackTrace();
	  }
   }
}

LoginForm.java


package com.example.demo;


public class LoginForm {
    private String id;
    private String name;
    
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

ProductForm.java


package com.example.demo;


public class ProductForm {
    private String code;
    private String name;
    private String description;
    private String price;
    private String evaluation;
    
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public String getDescription() {
		return description;
	}
	
	public void setDescription(String description) {
		this.description = description;
	}
	
	public String getPrice() {
		return price;
	}
	
	public void setPrice(String price) {
		this.price = price;
	}

	public String getEvaluation() {
		return evaluation;
	}
	
	public void setEvaluation(String evaluation) {
		this.evaluation = evaluation;
	}	
}

Stockez les fichiers source ci-dessus dans src / main / java du projet.

index.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p>Spring-Bienvenue sur Shopsite!</p>
<a href="/login" >Si vous êtes administrateur, veuillez cliquer ici</a>
</body>
</html>

login.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<form th:action="@{/login_result}" th:object="${loginForm}" method="post">  
ID:<input type="text" th:field="*{id}">
<BR/>
Nom:<input type="text" th:field="*{name}"> 
<BR/>
<input type="submit" value="S'identifier"/>
<BR/>
</form>
</body>
</html>

login_result.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<div th:if="${#strings.equals(message, 'Vous vous êtes connecté avec succès')}">
<a href="/admin_menu">Menu administrateur</a>
</div>
<div th:if="${#strings.equals(message, 'Je n'ai pas réussi à me connecter')}">
<a href="/login">Veuillez vous reconnecter</a>
</div>
</body>
</html>

admin_menu.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<a href="/show_product">Affichage de tous les produits enregistrés</a>
<br/>
<a href="/register_product">Enregistrement du produit</a>
<br/>
<a href="/update_product">Mise à jour du produit</a>
<br/>
<a href="/delete_product">Supprimer le produit</a>
</body>
</html>

show_product.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<table th:each="product : ${products}">
<tr>
<td>
<p th:text="${product}"></p>
</td>
</tr>
</table>
</body>
</html>

register_product.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<form th:action="@{/show_result}" th:object="${productForm}" method="post">
Code produit:<input type="text" th:field="*{code}">
<BR />
Nom du produit:<input type="text" th:field="*{name}">
<BR />
La description :<input type="text" th:field="*{description}">
<BR />
prix:<input type="text" th:field="*{price}">
<BR />
Évaluation:<input type="text" th:field="*{evaluation}">
<BR />
<input type="submit" value="enregistrement"/>
<BR />
</form>
</body>
</html>

update_product.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<form th:action="@{/show_result}" th:object="${productForm}" method="post">
Code produit:<input type="text" th:field="*{code}">
<BR />
Nom du produit:<input type="text" th:field="*{name}">
<BR />
La description :<input type="text" th:field="*{description}">
<BR />
prix:<input type="text" th:field="*{price}">
<BR />
Évaluation:<input type="text" th:field="*{evaluation}">
<BR />
<input type="submit" value="mise à jour"/>
<BR />
</form>
</body>
</html>

delete_product.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
<form th:action="@{/afeter_delete_product}" th:object="${productForm}" method="post">
Code produit:<input type="text" th:field="*{code}">
<BR />
<input type="submit" value="Effacer"/>
<BR />
</form>
</body>
</html>

after_delete_product.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
</body>
</html>

show_result.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring-Shopsite</title>
</head>
<body>
<p th:text="${message}"></p>
</body>
</html>

Stockez les fichiers modèles ci-dessus dans des modèles sous src / main / resources.

en conclusion

Après cela, générez le projet et il devrait s'exécuter normalement. De ce temps Malheureusement, le projet ne gère pas les images des produits, mais j'ai l'intention de ne conserver que les fonctions de base. Peut-être continuerons-nous ce projet, mais merci encore à ce moment-là. À la prochaine.

Au fait

Je posterai également un pom au cas où.

pom.xml


<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>Sample-1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Sample-1</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
    
</project>

Recommended Posts

J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
Je veux créer une fonction avec kotlin et java!
J'ai essayé de casser le bloc avec java (1)
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé de moderniser une application Java EE avec OpenShift.
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Je veux faire une liste avec kotlin et java!
J'ai essayé d'interagir avec Java
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]
J'ai essayé de créer un environnement de développement padrino avec Docker
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
Un nouvel employé a tenté de créer une fonction d'authentification / autorisation à partir de zéro avec Spring Security
J'ai essayé de créer une fonction de message pour l'extension Rails Tutorial (Partie 2): Créer un écran à afficher
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports 1/3 (paramètres Jasper Reports)
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports 3/3 (contrôle Spring MVC)
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé de créer un environnement de développement Spring MVC sur Mac
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Créez un CRUD simple avec SpringBoot + JPA + Thymeleaf ② ~ Création d'écran et de fonctions ~
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports 2/3 (création de modèle de formulaire)
Je veux afficher des images avec REST Controller de Java et Spring!
Je souhaite créer un SNS Web sombre avec Jakarta EE 8 avec Java 11
Exécutable serveur avec Spring gradle Comment créer JAR et WAR
J'ai écrit une fonction Lambda en Java et l'ai déployée avec SAM
J'ai essayé de faire une authentification de base avec Java
java j'ai essayé de casser un simple bloc
J'ai essayé de créer une application de clonage LINE
J'ai essayé de lier JavaFX et Spring Framework.
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de créer un portefeuille avec AWS, Docker, CircleCI, Laravel [avec lien de référence]
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports Extra (édition Variables)
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports Extra Edition (édition d'image)
[Android] J'ai créé un écran de liste de matériaux avec ListView + Bottom Sheet
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
J'ai essayé de créer une méthode qui applique plusieurs filtres à la fois avec l'API Java Stream. Cela vous convient-il?
[Java] J'ai installé JDBC et essayé de me connecter avec servlet + MySQL. (Il existe une version utilisant DAO / Bean)
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai essayé d'implémenter TCP / IP + BIO avec JAVA
[Java 11] J'ai essayé d'exécuter Java sans compiler avec javac
Créer un site EC avec Rails 5 ⑨ ~ Créer une fonction de panier ~
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
J'ai essayé de démarrer avec Spring Data JPA
J'ai essayé OCR de traiter un fichier PDF avec Java
J'ai essayé d'implémenter Sterling Sort avec Java Collector
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Je veux faire des transitions d'écran avec kotlin et java!
J'ai essayé d'utiliser Wercker pour créer et publier une image Docker qui lance GlassFish 5
J'ai essayé de créer une fonction de message de l'extension Rails Tutorial (Partie 1): Créer un modèle
J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 1 (édition API)
Java pour jouer avec Function
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de vérifier ceci et celui de Spring @ Transactional
J'ai essayé de faire coexister Java Optional et la clause de garde