J'ai créé un babillard simple en utilisant mysql.
-Afficher l'ID, le nom, le commentaire et l'horodatage sur le tableau d'affichage. -Si aucun nom ou commentaire n'est entré, un message d'erreur apparaîtra.
-Je ne savais pas comment récupérer les données stockées dans la base de données. Au début, j'ai essayé de récupérer l'ID, le nom, le commentaire et l'horodatage séparément dans le tableau, mais cela n'a pas fonctionné. ArrayList peut stocker l'instance entière!
-Je ne savais pas comment récupérer le contenu de ArrayList avec jsp.
J'ai essayé de le supprimer avec la méthode EL, mais cela n'a pas fonctionné.
J'ai pu le récupérer en utilisant forEach
dans la bibliothèque de balises principale de JSTL.
-Une erreur de fuseau horaire se produit lors de la connexion à mysql. Modifiez l'URL de connexion en vous référant à ce qui suit. Si vous souhaitez utiliser l'heure japonaise, remplacez la fin par JST. Que faire si "La valeur du fuseau horaire du serveur" donne une erreur lors de l'exécution de l'application dans Grails 3 + MySQL
model
Board.java
package model;
import java.io.Serializable;
import java.sql.Timestamp;
public class Board implements Serializable {
private int id;
private String name;
private String comment;
private Timestamp time;
public Timestamp getTime() {
return time;
}
public void setTime(Timestamp time) {
this.time = time;
}
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 String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
FindCommentDAO.java
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class FindCommentDAO {
public List<Board> findcomment() {
// id,name,Liste pour stocker les commentaires
List<Board> list = new ArrayList<>();
final String jdbcId = "id";
final String jdbcPass = "password";
final String jdbcUrl = "jdbc:mysql://localhost:3306/dbname?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=JST";
Connection con = null;
try {
con = DriverManager.getConnection(jdbcUrl, jdbcId, jdbcPass);
System.out.println("Connected....");
try {
Statement st = con.createStatement();
String sql = "select * from board";
try {
//Envoyer SQL
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
//Identifiant récupéré de la base de données,name,définir le commentaire sur JavaBeans
Board bo = new Board();
bo.setId(rs.getInt("id"));
bo.setName(rs.getString("name"));
bo.setComment(rs.getString("comment"));
bo.setTime(rs.getTimestamp("time"));
//Enregistrez-en un dans la liste. Des éléments sont ajoutés à la fin.
list.add(bo);
}
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//Connexion à la base de données déconnectée
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Connection Failed.");
return null;
}
return list;
}
}
FindCommentLogic.java
package model;
import java.util.List;
public class FindCommentLogic {
public List<Board> executeFindComment() {
FindCommentDAO fcdao = new FindCommentDAO();
List<Board> list = fcdao.findcomment();
return list;
}
}
AddCommentDAO.java
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class AddCommentDAO {
//ID à DB,name,Méthode pour ajouter un commentaire
public AddCommentDAO(Board bo) {
if(bo.getName().isEmpty()) {
bo.setName( "Anonyme");
}
if(bo.getComment().isEmpty()) {
bo.setComment( "sans commentaire");
}
final String jdbcId = "id";
final String jdbcPass = "password";
final String jdbcUrl = "jdbc:mysql://localhost:3306/dbname?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=JST";
Connection con = null;
try {
con = DriverManager.getConnection(jdbcUrl, jdbcId, jdbcPass);
System.out.println("Connected....");
try {
PreparedStatement ps = con.prepareStatement("INSERT INTO board (name, comment) VALUES (?, ?)");
ps.setString(1, bo.getName());
ps.setString(2, bo.getComment());
//Envoyer du papier à lettres
int r = ps.executeUpdate();
if (r != 0) {
System.out.println(r + "Ajout de l'écriture.");
} else {
System.out.println("Impossible d'écrire.");
}
ps.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//Connexion à la base de données déconnectée
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Connection Failed.");
}
}
}
AddCommentLogic
package model;
public class AddCommentLogic {
public void executeAddComment(Board bo) {
AddCommentDAO acdao = new AddCommentDAO(bo);
}
}
view
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function check(){
var flag = 0;
if(document.form1.name.value == ""){
flag = 1;
}
else if(document.form1.comment.value == ""){
flag = 1;
}
if(flag){
window.alert('Veuillez entrer votre nom et commentaire');
return false; //Arrêter d'envoyer
}
else{
return true; //Effectuer l'envoi
}
}
</script>
<title>tableau d'affichage</title>
</head>
<body>
<form action="/board/BoardServlet" method="post" name="form1" onSubmit="return check()">
<p>Nom:<input type="text" name="name"></p>
<p>commentaire:<br>
<textarea name="comment" rows="5" cols="40"></textarea>
</p>
<p><input type="submit" value="Envoyer"><input type="reset" value="réinitialiser">
</p>
</form>
<c:forEach var="list" items="${listAttribute}">
<p>ID:<c:out value="${list.id}"/>Nom:<c:out value="${list.name}"/>Date:<c:out value="${list.time}"/><br>
<c:out value="${list.comment}"/></p>
</c:forEach>
</body>
</html>
controller
BoardServlet.java
package servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
import model.AddCommentLogic;
import model.Board;
import model.FindCommentLogic;
/**
* Servlet implementation class BoardServlet
*/
@WebServlet("/BoardServlet")
public class BoardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BoardServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Je veux passer à la classe d'auditeur
request.setCharacterEncoding("UTF-8");
//Vérifier les commentaires existants
FindCommentLogic fcl = new FindCommentLogic();
List<Board> list = fcl.executeFindComment();
//Enregistrer la liste de commentaires dans l'étendue de la session
HttpSession session = request.getSession();
session.setAttribute("listAttribute", list);
RequestDispatcher rd =request.getRequestDispatcher("/WEB-INF/jsp/main.jsp");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//Obtenez la valeur saisie
String name = request.getParameter("name");
String comment = request.getParameter("comment");
//Stocker dans JavaBeans
Board bo = new Board();
bo.setName(name);
bo.setComment(comment);
//Stocker dans mysql
AddCommentLogic acl = new AddCommentLogic();
acl.executeAddComment(bo);
//Obtenez le commentaire qui vient d'être saisi et le commentaire existant de mysql
FindCommentLogic fcl = new FindCommentLogic();
List<Board> list = fcl.executeFindComment();
//Enregistrer la liste de commentaires dans l'étendue de la session
HttpSession session = request.getSession();
session.setAttribute("listAttribute", list);
RequestDispatcher rd =request.getRequestDispatcher("/WEB-INF/jsp/main.jsp");
rd.forward(request, response);
}
}
Recommended Posts