aanything's blog

プログラミング、雑多な情報を徒然なるままに。気に入ったまとめを保存してます。

jspでMySQL接続【eclipse】

10日でおぼえるJSP/サーブレット
でつまづいたところ

実行環境

  • tomcat7

tomcatの設定ファイルの場所は以下のように設定できる。
f:id:aanything:20140128102514p:plain

catalina/conf/server.xmlはすべてのアプリケーション ここに製作中アプリの設定を書くのはセキュリティ上の問題で素性されてない

catalina/conf/localhost/プロジェクト名.xml
↑これが初回起動時などに生成される。

<Context path="/プロジェクト名" reloadable="true" 
docBase="/Users/----/Documents/workspace/プロジェクト名" 
workDir="/Users/----/Documents/workspace/プロジェクト名/work" />

最初はどこを参照するかといったルーティングだけが記されてるものが生成される。


6日目1限でjspを使ってMySQLにアクセスすると
このコンテキストにバインドされていませんというエラーが出る

テキストに順して作業をすると、


ーjsp10
ーーday06
ーーーinsert1.jsp
ーーーinsert2.jsp
ーーMETA-INF
ーーーcontext.xml


eclipseでプロジェクト右クリックでMETA-INFを新たに作ってそのなかにcontext.xmlを作る。
ここで作っても、workspaceにはMETA−INFが生成されるけど
/apache-tomcat-7.0.50/conf/Catalina/localhost このなかには入らない
/
apache-tomcat-7.0.50/webapps/[app]/META-INF/というのも生成されてない。

テキストどおりにするなら、上図のコンテキスト宣言モードのコンテキストの場所を
/apache-tomcat-7.0.50/webapps/[app]/META-INF/のように設定し、
プロジェクト右クリック>Tomcatプロジェクト>コンテキストの定義を更新で
/apache-tomcat-7.0.50/webapps/[app]/META-INF/ にコンテキストが生成されるようになる。


セキュリティ上、デフォルトのこっちのほうが良さそうなので
catalina/conf/localhost/プロジェクト名.xml
これをテキスト帳でダイレクトに編集して

<?xml version="1.0" encoding="UTF-8" ?>
<Context displayName="JSP10 Samples" path="/プロジェクト名" reloadable="true" docBase="/Users/----/Documents/workspace/プロジェクト名" workDir="/Users/----/Documents/workspace/プロジェクト名/work">
    <Resource name="jdbc/Jsp10" auth="Container"
    type="javax.sql.DataSource" username="jsp10" password="jsp10"
    driverClassName="org.gjt.mm.mysql.Driver"
    url="jdbc:mysql://localhost/jsp10?useUnicode=true&amp;characterEncoding=Windows-31J" maxActive="4" maxWait="5000" maxIdle="2"
    validationQuery="SELECT count(*) FROM book" />
</Context>

こんな感じに書くとOK


tomcat manager は /apache-tomcat-7.0.50/conf/tomcat-users.xml
に下記を追加(Tomcat7)

  <role rolename="admin-gui"/>
  <user username="hoge" password="hoge" roles="manager-gui"/>