eclipseとtomcatとmysql DB接続で躓いたところ
夏から練習として作り始めたショッピングサイトでずっと躓いていたDB接続の問題、少し進歩があって嬉しかったのでメモ。
環境がだいたい同じだったので、こちらの記事を参考に接続テストを試みた。
突き当たっていた問題は二つほどある。
一つ目はブラウザで日本語が文字化けすること。(???みたいになる)
サーブレットのhtmlの日本語部分を英語や数字にするとそれはちゃんと表示される。
ブラウザ側に「これはutf-8で」とお知らせする記述はしてあったので、
このソースは何で記述しますという宣言をする。
結果的に
response.setCharacterEncoding("UTF-8");
を書いたらうまく表示された。
これを書かなくても、多分server.xmlとかそういうのに記述する方法があるはずだよと言われたのでそれは後々。
なんかもっとわかりやすい説明してもらったんだけど、
昨日書く時間なかったから抜けてる・・・。
わかったら追記。
ここら辺は今度また勉強し直す予定。
もう一つの問題は、そもそもDBに接続できていない疑惑があったこと。
これはライブラリの問題だった。
訳のわからないところから参照していたのがいけなかったみたい。
tomcatがあるところが/Library/Tomcatなので、/Library/Tomcat/libからのみ参照することにしたら、うまく繋がるようになった。
教えてもらったのでわかったのだけど、自分はいまいち参照先とかファイルの移動や保存場所など、ファイル管理ができていない。
もう少し普段からフォルダの階層構造とか意識した方がいいのかな。
今回参考にしたものは、サーブレットにhtmlも全て書いちゃうやつ。
htmlの記述はJSPに任せるといいとのこと。
なので次は自分が使いたいデータでもちゃんとできるか試してから
役割ごとにソースを分けていきたいと思う。
最近はコードをみてもわけわからんっていうことだけじゃなくなってきたし、これは何をしていて次はここみたいなのが少しわかるようになってきた。今は、Javaの全く理解できなかったところを勉強し直しているけど、前より全然わかるので不思議。
ちょっとしたことだけど、何が問題でどこまではOKなのかをいじって確かめたり、必要な情報を集めたり、どこで躓いていて何までは確認できているのかを伝えたり。
そういう力がちょっとだけついた気がする。
普段マイナスなことしか感じないので、昨日は少し嬉しかったし、わかるのって楽しいなあと思ったのでした。
GitHubにcommitするときのコメントの注意点
コメント内容について
「~を変更した」ではなく、「何を追加したか」「どういうことができるようになったか」などをかく(どこを変更したかは見ればわかるため)
commit頻度について
複数行に渡るコメントを書く必要があるというのは、commitの単位がでかすぎるということ
だいたい一行くらいでコメントが書けるよう、頻繁に分けてcommitすること
20170801(Tue)
今日したこと
ShoppingSite
cssページをpush
最近のまとめ
最近したこと
HTML/CSS入門教室(CSSの基礎知識)
・簡単にまとめられているけど今までなんでそうなのかわからなかったことなどについて詳しく書かれていてよかった
・半日くらいで終わる量なのでありがたい
・細かいことは自分で調べて補う形になるが最初に自分で色々作るのにはためになる
・イラストが多いので疲れない
・楽しくて良い本だった
cssでページのレイアウトをいじる
詰まっていたところ(Sessionオブジェクトに複数値を格納する)を相談して解決
<button type="submit" name="productName" value="りんご">購入</button>
<button type="submit" name="productName" value="バナナ">購入</button>
request.setCharacterEncoding("UTF-8");
String productName = request.getParameter("productName");
HttpSession session = request.getSession();
Product product = new Product();
product.setName(productName);
session.setAttribute("Product", product);
nameを共通化して、選択された方のvalueをセットするようにした
現状ではどちらか一つしか選択できないので、今後複数選択を可能にしたい
今後変更する箇所
cssを使いページをもっと見やすくする
複数商品の購入を可能にする
アカウントの登録などを可能にする
データベースと商品やアカウントの情報をやり取りできるようにする
20170714(Fri)
今日したこと
ShoppingSite
購入結果ロジック作成
購入結果画面作成
GitHubにPush
詰まっているところ
Sessionオブジェクトに配列を格納する
今後のページのイメージ(追加するもの、追加の仕方)
課題
的確な検索ワードで検索をする(欲しい情報をすぐ見つける)
学んだことを応用して使う
20170711(Tue)
今日したこと
ShoppingSite
詰まったところ
・値渡しのロジック?
カートロジックはsessionを使ったけど
フォワード先で怒られてしまう
デバッグを使いこなして原因を探すことを勧められた
Product product = (Product)session.getAttribute("Product");
ここで、"Product"はStringだったから型キャストできませんって怒られてて、
HttpSession session = request.getSession();
Product product = new Product();
product.setName(ringo);
session.setAttribute("Product", product);
これしたらちゃんとできるようになった
助けてもらったところだから微妙や〜
言葉で説明できるようになったらいいかな
1回目のplan完成まではもうちょっとだ
20170710(Mon)
今日したこと
ShoppingSite
Eclipseでしていたpushをターミナル作業に変更する
進行状況をgithubにpush
画像の指定→絶対パスを調べる
shoppingカートへ選んだ商品を追加する
< form >で飛ばす(ロジックを作るためJavaに飛ばしてからjsp)
サーブレットは、WebブラウザからURLや、Webページの中のリンクにURLを指定して呼び出す。
そのURLは、Eclipseのプロジェクト名とサーブレットの@WebServletというアノテーションと関連付く。
URLで指定して呼び出す場合
http://サーバホスト名:ポート番号/Eclipseプロジェクト名/@WebServletアノテーション
※ポート番号は省略可。省略した場合はポート番号は80となる。
Webページの中のリンクから呼び出す場合
<a href="Eclipseプロジェクト名/@WebServletアノテーション">Click Here</a>
フォームから呼び出す場合
<form action="Eclipseプロジェクト名/@WebServletアノテーション" method=post>
ターミナルからGitHubへEclipseのプロジェクトをpush
・前回、リモートからクローンしたリポジトリをeclipseで開く
静的プロジェクトができるので、プロジェクトのプロパティからプロジェクト・ファセットでJavaと動的Webプロジェクトにチェックを入れると動的Webプロジェクトになる
・色々作っていく
・ターミナルに行って、リモートと連携してる?ディレクトリに移動
・中を見ると
WebContent build memo1.txt src
ってなってたので、WebContent src の二つをaddする
git add WebContent
git add src
次にコメントをつけてコミット(コメントって何にしたらいいのかわからない)
git commit -m "20170710"
最後にリモートにpush
git push リモート名 ブランチ名
これでeclipseからチーム・プロジェクト共有ってしないで
ターミナルで全てできるようになる
まだできていないところ
20170707(Fri)
今日したこと
ShoppingSite
ログインロジックビュー
メイン
ログアウトロジックビュー
進行状況をgithubにpush
商品一覧ページの作成
MYSQLとEclipseの連携(文字化けするけどブラウザに表示されるとこまでは進んだ)
質問
・githubの現在の状況がよくわからない(前回クローンしてからローカルとリモートの関係性がめちゃくちゃでわからない)
・eclipseからのpushをターミナルからと言われたけど、現在ターミナルからpushしたことのあるものはvimで作ったテキストのみでよくわからない
・クローンしたあと、eclipseに取り込んだ内容をブラウザで試せない(動的webプロジェクトではなくなってしまっている。ただ外部JARを足せばいいだけかもしれないけど)
・商品画像をネットから拾ってローカルに保存してからリンクを貼ったけど、実際amazonとかのページはどこから画像を持ってくるのか(後画像でないのなんで)