Learn More →
Address.java(サーブレット)
package kadai04;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Purchase
*/
@WebServlet("/Address")
public class Address extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Address() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//データベース接続管理クラスの変数宣言
DBManager dbm = new DBManager();
//個人情報取得
AddressDTO[] list = dbm.getData();
//HTTPRequestに格納
request.setAttribute("data", list);
//サーブレットの転送
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher("/address.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");
if(!request.getParameter("name").equals("")) {
AddressDTO dto = new AddressDTO();
dto.setName(request.getParameter("name"));
dto.setAddress(request.getParameter("address"));
dto.setTel(request.getParameter("tel"));
//データベース接続管理クラスの変数宣言
DBManager dbm = new DBManager();
//個人情報取得
dbm.saveData(dto);
}
doGet(request, response);
}
}
AddressDAO.java(DAOクラス)
package kadai04;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AddressDAO {
// データベース接続に必要な情報
final String DSN = "jdbc:mysql://localhost:3306/kadai04?characterEncoding=utf8";
final String USER = "root";
final String PASSWORD = null;
// データベースの接続情報を返す
public Connection getConnection(){
Connection conn = null;
try {
// JDBC ドライバのロード
Class.forName("com.mysql.jdbc.Driver");
// データベースへ接続
conn = DriverManager.getConnection(DSN, USER, PASSWORD);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
// Connection 型変数が持つデータベースと JDBC リソースの解放
public void close(Connection conn) {
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// PreparedStatement 型変数が持つデータベースと JDBC リソースの解放
public void close(Statement stmt) {
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// ResultSet 型変数が持つデータベースと JDBC リソースの解放
public void close(ResultSet rset) {
if(rset != null){
try {
rset.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
AddressDTO.java
package kadai04;
import java.util.Date;
public class AddressDTO {
private int id;
private String name;
private String address;
private String tel;
private Date date;
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
DBManager.java
package kadai04;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class DBManager extends AddressDAO {
public AddressDTO[] getData() {
Connection conn = null; // データベース接続情報
PreparedStatement pstmt = null; // SQL 管理情報
ResultSet rset = null; // 検索結果
AddressDTO[] datas = null; //個人情報
String sql = "SELECT * FROM address ORDER BY id DESC";
try {
// データベース接続情報取得
conn = getConnection();
// SELECT 文の登録と実行
pstmt = conn.prepareStatement(sql); // SELECT 構文登録
rset = pstmt.executeQuery();
//1件1件のデータを格納
ArrayList<AddressDTO> list = new ArrayList<AddressDTO>();
// 検索結果があれば
while (rset.next()) {
// 必要な列から値を取り出し、個人情報オブジェクトを生成
AddressDTO data = new AddressDTO();
data.setId(rset.getInt("id"));
data.setName(rset.getString("name"));
data.setAddress(rset.getString("address"));
data.setTel(rset.getString("tel"));
data.setDate(rset.getDate("date"));
list.add(data);
}
//1件1件のデータを配列にまとめていく
datas = new AddressDTO[list.size()];
for (int i = 0; i < list.size(); i++) {
datas[i] = list.get(i);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// データベース切断処理
close(rset);
close(pstmt);
close(conn);
}
return datas;
}
public void saveData(AddressDTO dto) {
Connection conn = null; // データベース接続情報
PreparedStatement pstmt = null; // SQL 管理情報
ResultSet rset = null; // 検索結果
String sql = "INSERT INTO address(name,address,tel,date) VALUES (?,?,?,now())";
try {
// データベース接続情報取得
conn = getConnection();
pstmt = conn.prepareStatement(sql);
//SQL文(追加処理)の作成と実行
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getAddress());
pstmt.setString(3, dto.getTel());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// データベース切断処理
close(rset);
close(pstmt);
close(conn);
}
}
}
address.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="kadai04.AddressDTO" %>
<%
AddressDTO[] list = (AddressDTO[])request.getAttribute("data");
%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>アドレス帳</title>
</head>
<body>
<h1>アドレス帳</h1>
<form method="post" action="Address">
名前:<input type="text" name="name"><br />
住所:<input type="text" name="address"><br />
TEL:<input type="text" name="tel"><br />
<input type="submit" value="登録">
</form>
<p>
<table border=1>
<tr>
<td>名前</td>
<td>住所</td>
<td>TEL</td>
<td>登録日時</td>
</tr>
<%
for (int i = 0; i < list.length; i++) {
out.print("<tr><td>"+ list[i].getName() +"</td>"); //名前
out.print("<td>"+ list[i].getAddress() +"</td>"); //住所
out.print("<td>"+ list[i].getTel() +"</td>"); //電話番号
out.print("<td>"+list[i].getDate()+"</td></tr>"); //日時
}
%>
</table>
</body>
</html>
備忘録 1.Cognitoだとログインに関するトークンがid token,session token,refresh token の3種類がある 2.セッション情報は何もしない限り永続にローカルストレージに残る 3 ローカルストレージはドメイン毎の情報を永続的に保存する   →問題が共用PC等でログアウトし忘れるとなりすましが簡単になってしまう 4 トークンの2種類(id tokenやsession token)は1時間で期限が切れるため平気だが、   refresh tokenの有効期限はAWS側で設定するので、
Dec 8, 202111/5 今年の夏くらいからゼミの活動として、7人グループでWebアプリを開発している。そこでつまづいたりして解決まで導いた手順を特にメモしてなかったのでこれからしていこうと思う。 今までにやったこととしてPMがメンバー毎に役割を与えて自分は裏方であるサーバー側を担当している。 基本的に活動時間が週に3時間程度しかないのでかなりの長期間で開発することになっている。 サーバー側の担当として、クラス図やAPI設計を担当してきた。 ほかのフロント側の担当やテスト担当等メンバーによって様々な作業があるが、最初の方に決めたWBSに基づいて予定を進めている。 最近になってようやくクラス図とAPI設計が終わり、作りたいものの形や使うサービスが決まってきたのでそろそろコーディングの作業に入る日が近くなった。 今まで授業ではコーディングは様々な言語(PHP,Python,java,C,C#等簡単な基礎だけ)をやってきたが、javaをメインで開発することにしている。そのため、上流工程はあまり経験していなかったのでかなり苦戦した。 API設計は今まで見たこともなく、1から調べながらやった。
Nov 5, 2021Client.java(Clientクラス) public class Client { public static void main(String[] args) { Suuchi s = new Suuchi(); Observer o1 = new NishinHyouji(); Observer o2 = new JyuurokushinHyouji(); s.attach(o1); s.attach(o2); int i = 0;
Jul 15, 2021TimeAdmin.java(Observerインターフェース) interface TimeAdmin { public void update(Subject subject); } CuckooClock.java(ConcreteObserverクラス) class CuckooClock implements TimeAdmin { public void update(Subject subject) { int cnt; cnt = ((concreteSubject) subject).getHour();
Jul 8, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up