ソースコード

10章 ウェブアプリの例

10.1 郵便番号検索

テーブル:zipsのためのCREATE TABLE文

CREATE TABLE zips(
  jis CHAR(10) DEFAULT '' NOT NULL,
  old_zip CHAR(5) NOT NULL,
  zip CHAR(7) NOT NULL,
  addr1_ruby VARCHAR(10) DEFAULT '' NOT NULL,
  addr2_ruby TEXT NOT NULL,
  addr3_ruby TEXT NOT NULL,
  addr1 VARCHAR(10) DEFAULT '' NOT NULL,
  addr2 TEXT NOT NULL,
  addr3 TEXT NOT NULL,
  addr4 TEXT NOT NULL,
  establishment_ruby TEXT NOT NULL,
  establishment TEXT NOT NULL,
  KEY zip_idx (zip)
) DEFAULT CHARACTER SET utf8;

郵便番号データ

データのロード

LOAD DATA LOCAL INFILE "KEN_ALL_UTF8.CSV" INTO TABLE zips
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
(jis,old_zip,zip,addr1_ruby,addr2_ruby,addr3_ruby,addr1,addr2,addr3);

LOAD DATA LOCAL INFILE "JIGYOSYO_UTF8.CSV" INTO TABLE zips
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
(jis,establishment_ruby,establishment,addr1,addr2,addr3,addr4,zip,old_zip);

10.2 GETによる検索

zip.jsp

10.4 Ajaxによるインターフェースの改良

 prototype.jsをダウンロードし、prototype.jsという名前でWebContentに追加する必要がある。

zip.html

ユーザ認証

JDBCRealmを利用するための準備

USE mydb;

CREATE TABLE users (
  user_name VARCHAR(15) NOT NULL PRIMARY KEY,
  user_pass VARCHAR(15) NOT NULL
);

CREATE TABLE user_roles (
  user_name VARCHAR(15) NOT NULL,
  role_name VARCHAR(15) NOT NULL,
  PRIMARY KEY (user_name, role_name)
);

INSERT INTO users (user_name,user_pass) VALUES ('testA','passA');
INSERT INTO user_roles (user_name,role_name) VALUES ('testA','guest');

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myweb" docBase="myweb" reloadable="true">
  <Realm
    className="org.apache.catalina.realm.JDBCRealm"
    connectionURL="jdbc:mysql://localhost/mydb"
    connectionName="test"
    connectionPassword="pass"
    debug="99"
    driverName="com.mysql.jdbc.Driver"
    userTable="users"
    userNameCol="user_name"
    userCredCol="user_pass"
    userRoleTable="user_roles"
    roleNameCol="role_name" />
</Context>

web.xmlに追記する要素

  <security-role>
    <role-name>guest</role-name>
  </security-role>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>secure pages</web-resource-name>
      <url-pattern>/HelloWorld.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>guest</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>DIGEST</auth-method>
  </login-config>