package sample.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Search extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void searchRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Jsp & Servlet - Sample Sqlite DB : datatableを扱う</title>");
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"SampleServlet.css\"/>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Search</h1>");
out.println("<br />");
// NAMEの検索
out.println("<div>");
out.println("<form method=\"POST\" name=\"Search2\" action=\"Search2\" target=\"_self\">");
out.println("<span>NAME:</span>");
out.println("<input type=\"text\" name=\"keyword\" size=\"20\" required>");
out.println("<input type=\"radio\" checked=\"checked\" name=\"option\" value=\"AND\">AND");
out.println("<input type=\"radio\" name=\"option\" value=\"OR\">OR");
out.println("<br /><br />");
out.println("<input type=\"submit\" name=\"searche\" value=\"search\" class=\"submit\">");
out.println("</form>");
out.println("</div>");
out.println("<br />");
out.println("<a href=\"Select\">Show AllData</a><br />");
out.println("<a href=\"index.jsp\">Index</a>");
out.println("</body>");
out.println("</html>");
}
// このページにGETでアクセス
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
searchRequest(request, response);
}
}
package sample.view;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sample.util.SqliteDB;
public class Search2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void search2Request(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String keyword = request.getParameter("keyword");
String option = request.getParameter("option");
// 検索抽出条件の作成
String tempWhere = extraction( keyword, option );
SqliteDB db = new SqliteDB();
String sql = "SELECT * FROM exampleTbl "+tempWhere;
ResultSet rs = null;
String tempHtml = "";
try {
db.open();
rs = db.executeQuery(sql);
while(rs.next()){
tempHtml += "<tr>";
tempHtml += "<td>" + rs.getInt("id") + "</td>";
tempHtml += "<td>" + rs.getString("name") + "</td>";
tempHtml += "<td>" + rs.getString("address") + "</td>";
tempHtml += "<td>" + rs.getString("email") + "</td>";
tempHtml += "<td>" + rs.getString("phone_number") + "</td>";
tempHtml += "<td>" + rs.getString("memo") + "</td>";
tempHtml += "<td>" + rs.getString("created_at") + "</td>";
tempHtml += "<td>" + rs.getString("updated_at") + "</td>";
tempHtml += "<td><a href='Update?upparam=" + rs.getInt("id") + "'>Edit</a></td>";
tempHtml += "<td><a href='Delete?delparam=" + rs.getInt("id") + "' onclick=\"return deleteConfirm(" + rs.getInt("id") + ");\">Delete</a></td>";
tempHtml += "</tr>";
}
} catch (SQLException e) {
System.out.println("executeQuery Error : " + e);
throw e;
} finally {
if (rs != null) {
rs.close();
}
db.descon();
}
out.println("<html>");
out.println("<head>");
out.println("<title>Jsp & Servlet - Sample Sqlite DB : datatableを扱う</title>");
out.println("<link rel=\"stylesheet\" href=\"https://cdn.datatables.net/v/bs4-4.1.1/jq-3.3.1/dt-1.10.18/sl-1.2.6/datatables.min.css\"/>");
out.println("<script src=\"http://code.jquery.com/jquery-1.11.3.min.js\"></script>");
out.println("<script src=\"https://cdn.datatables.net/v/bs4-4.1.1/jq-3.3.1/dt-1.10.18/sl-1.2.6/datatables.min.js\"></script>");
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"SampleServlet.css\"/>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Search Result</h1>");
out.println("<br />");
out.println("<table id=\"example\" class=\"table table-striped table-bordered nowrap\" width=\"100%\">");
out.println("<thead>");
out.println("<tr>");
out.println("<th>ID</th>");
out.println("<th>NAME</th>");
out.println("<th>ADDRESS</th>");
out.println("<th>EMAIL</th>");
out.println("<th>TEL</th>");
out.println("<th>MEMO</th>");
out.println("<th>CREATED</th>");
out.println("<th>UPDATED</th>");
out.println("<th width=\"10\" style=\"background:#dedede;\"> </th>");
out.println("<th width=\"20\" style=\"background:#dedede;\"> </th>");
out.println("</tr>");
out.println("</thead>");
out.println("<tbody>");
out.println(tempHtml);
out.println("</tbody>");
out.println("</table>");
// datatable Menu
out.println("<script type=\"text/javascript\">"
+"$(document).ready(function() {"
+"var table = $('#example').DataTable( {"
+"\"lengthMenu\":[[5, 10, 25, 50, -1], [5, 10, 25, 50, \"All\"]]"
+"});"
+"});"
+"</script>");
// 削除確認ダイアログ
out.println("<script type=\"text/javascript\">"
+"function deleteConfirm (id) {"
+"var id;"
+"var flag = confirm('[ '+id+' ]番のデータを削除します。間違いなければ[OK]ボタンを押して下さ。');"
+"return flag;"
+"}"
+"</script>");
out.println("<br />");
out.println("<a href=\"Search\">Search</a><br />");
out.println("<a href=\"Select\">Show AllData</a><br />");
out.println("<a href=\"index.jsp\">Index</a>");
out.println("</body>");
out.println("</html>");
}
// 検索抽出条件の作成
public String extraction(String keyword, String option) {
// keyword入力チェック(文字の先頭と末尾の全角半角の空白を取り除く)
if(keyword != null && !keyword.equals("")) {
keyword = trimLR(keyword);
}
// 半角の空白に置き換える。
keyword = keyword.replaceAll("[ ]+", " ");
// 抽出条件の組み立て
String[] array = keyword.split(" ");
int cnt = array.length;
String where = "WHERE ";
for(int i=0; i < cnt; i++){
where += "name LIKE '%" +array[i]+ "%'";
if(i < cnt-1){
where +=" "+option+" ";
}
}
return where;
}
// 文字列の先頭末尾の空白を削除
public String trimLR (String cs){
if(cs == null){
return "";
} else {
cs = cs.replaceAll("^ +","");
cs = cs.replaceAll(" +$","");
return cs;
}
}
// このページにPOSTでアクセス
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
search2Request(request, response);
} catch (ServletException | IOException | ClassNotFoundException | SQLException e) {
Logger.getLogger(Select.class.getName()).log(Level.SEVERE, null, e);
}
}
}
package sample.view;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sample.util.SqliteDB;
public class Update extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void updateRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
int prefid = Integer.parseInt(request.getParameter("upparam"));
SqliteDB db = new SqliteDB();
ResultSet rs = null;
String sql = "SELECT * FROM exampleTbl WHERE id =" + prefid;
int id = 0;
String name = "";
String address = "";
String email = "";
String phone_number = "";
String memo = "";
try {
db.open();
rs = db.executeQuery(sql);
while(rs.next()){
id = rs.getInt("id");
name = rs.getString("name");
address = rs.getString("address");
email = rs.getString("email");
phone_number = rs.getString("phone_number");
memo = rs.getString("memo");
}
} catch (SQLException e){
System.out.println("executeQuery Error! : " + e);
throw e;
} finally {
if (rs != null) {
rs.close();
}
db.descon();
}
out.println("<html>");
out.println("<head>");
out.println("<title>Jsp & Servlet - Sample Sqlite DB : datatableを扱う</title>");
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"SampleServlet.css\"/>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Edit</h1>");
out.println("<br />");
out.println("<form name=\"upform\" action=\"Update2\" method=\"post\">");
out.println(""
+"<table>"
+"<tr><td><b>ID</b></td><td> : <input type=\"text\" value=\"" + id + "\" disabled=\"disabled\"></td></tr>"
+"<tr><td><b>NAME</b></td><td> : <input type=\"text\" name=\"name\" value=\"" + name + "\" disabled=\"disabled\"></td></tr>"
+"<tr><td><b>ADDRESS</b></td><td> : <input type=\"text\" name=\"address\" value=\"" + address + "\"></td></tr>"
+"<tr><td><b>EMAIL</b></td><td> : <input type=\"text\" name=\"email\" value=\"" + email + "\"></td></tr>"
+"<tr><td><b>TEL</b></td><td> : <input type=\"text\" name=\"phone_number\" value=\"" + phone_number + "\"></td></tr>"
+"<tr><td><b>MEMO</b></td><td> : <input type=\"text\" name=\"memo\" value=\"" + memo + "\"></td></tr>"
+"<tr rowspan=\"2\"><td colspan=\"2\"> </td></tr>"
+"<tr><td colspan=\"2\"><input type=\"submit\" name=\"Save\" value=\"save\" class=\"submit\"> <input type=\"reset\" value=\"reset\" class=\"submit\"></td></tr>"
+"</table>"
);
// id値は編集しないためこちらから送信
out.println("<input type=\"hidden\" name=\"cd\" value =" + id + ">");
out.println("</form>");
out.println("<br />");
out.println("<a href=\"Select\">Show AllData</a><br />");
out.println("<a href=\"index.jsp\">Index</a>");
out.println("</body>");
out.println("</html>");
}
// このページにGETでアクセス
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
updateRequest(request, response);
} catch (ServletException | IOException | ClassNotFoundException | SQLException e) {
Logger.getLogger(Insert2.class.getName()).log(Level.SEVERE, null, e);
}
}
}
package sample.view;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sample.util.SqliteDB;
public class Update2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void update2Request(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
int id = Integer.parseInt(request.getParameter("cd"));
String address = request.getParameter("address");
String email = request.getParameter("email");
String phone_number = request.getParameter("phone_number");
String memo = request.getParameter("memo");
String updatedTime = "datetime(CURRENT_TIMESTAMP,'localtime')"; // 編集日時を更新
SqliteDB db = new SqliteDB();
String sql = "UPDATE exampleTbl SET updated_at = " + updatedTime + ", address = '" + address + "', email = '" + email + "', phone_number = '" + phone_number + "', memo = '" + memo + "' WHERE id = " + id;
try {
db.open();
db.executeUpdate(sql);
} catch (SQLException | ClassNotFoundException e){
System.out.println("executeUpdate Error! : " + e);
throw e;
} finally {
db.descon();
}
out.println("<html>");
out.println("<head>");
out.println("<title>Jsp & Servlet - Sample Sqlite DB : datatableを扱う</title>");
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"SampleServlet.css\"/>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Edit Success</h1>");
out.println("<br />");
out.println("<a href=\"Select\">Show AllData</a><br />");
out.println("<a href=\"index.jsp\">Index</a></li>");
out.println("</body>");
out.println("</html>");
}
// このページにPOSTでアクセス
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
update2Request(request, response);
} catch (ServletException | IOException | ClassNotFoundException | SQLException e) {
Logger.getLogger(Insert2.class.getName()).log(Level.SEVERE, null, e);
}
}
}