これが最も簡単な解決策です
<%@page import="java.util.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%!
//This List is just for demonstration purposes
List<String> names = new ArrayList<String>();
%>
<%
if(request.getParameter("name")!=null ){
names.add(request.getParameter("name"));
session.setAttribute("nameList", names);
//Here you put your database insert code
//Whenever the code execution reaches this line ,
//then it means that you have a new page submission
//and not a refresh or f5 case
response.sendRedirect("index.jsp");
}
%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="index.jsp" method="post">
<input type="text" id="name" name="name"/>
</form>
<p>
<table>
<c:forEach items="${nameList}" var="element">
<tr>
<td>Name: <c:out value="${element}"/> </td>
</tr>
</c:forEach>
</table>
</p>
</body>
</html>
秘訣はにありますresponse.sendRedirect("index.jsp");
。これにより、null
すべてのリクエストパラメータが作成されます。f5
またはrefresh
がヒットした場合、if
は実行されません。通常の送信の場合は、if
が実行され、を呼び出します response.sendRedirect("index.jsp");
。
要約すると、あなたが本当にする必要があるのは:
1)チェックif(request.getParameter("name")!=null )
2)上記が当てはまる場合は、データベースを挿入します
3)上記が当てはまる場合response.sendRedirect("index.jsp");
アップデート
if(request.getParameter("name")!=null ){
DbUtility.addNameToDb(request.getParameter("name"));
ArrayList<String> currentList = DbUtility.getAllNamesFromDb();
session.setAttribute("nameList", currentList);
response.sendRedirect("index.jsp");
}
これらの2つのメソッドを実装する必要があります。はデータベースaddNameToDb(String)
に作成insert
されます。そして、はデータベースのエントリを表すオブジェクトをgetAllNamesFromDb()
返します。(そして、私の最初の回答で以前に紹介したリストArrayList<String>
はもう必要ありません)names