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による検索
10.4 Ajaxによるインターフェースの改良
prototype.jsをダウンロードし、prototype.jsという名前でWebContentに追加する必要がある。
ユーザ認証
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>
