パラメーターの値を取得する

$_GET[“id”] で取得できます。

-サンプル

if(isset($_GET["id"])){
	$id = $_GET["id"];
}

echo $id;

次に、mysqlにidと紐づくURLを格納します。

まず、create tableします。
mysql> create database redirect;
Query OK, 1 row affected (0.11 sec)

続いてtableを作ります。
create table url (
no int unsigned auto_increment primary key,
id int,
url varchar(255)
);

次に、insert tableしていきます。

プルリク

[vagrant@localhost dev]$ git init
Initialized empty Git repository in /home/vagrant/dev/.git/
[vagrant@localhost dev]$ git add .
[vagrant@localhost dev]$ git commit -m “first commit”
[master (root-commit) 2b3c0b9] first commit
2 files changed, 8 insertions(+)
create mode 100644 .htaccess
create mode 100644 index.php
[vagrant@localhost dev]$ git remote add origin https://github.com/hoge/hoge.git

[vagrant@localhost dev]$ git push -u origin master
Password for ‘https://hoge@github.com’:
Counting objects: 4, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 420 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for ‘master’ on GitHub by visiting:
remote: https://github.com/hoge/hoge/pull/new/master
remote:
To https://github.com/hoge/hoge.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

プルリクとは?
開発者のローカルリポジトリでの変更を他の開発者に通知する機能です。 プルリクエストは次のような機能を提供します。 機能追加や改修など、作業内容をレビュー・マージ担当者やその他関係者に通知します。

Amazon Kinesis

動画とデータストリームをリアルタイムで容易に収集、処理、分析 Amazon Kinesis は、リアルタイムのストリーミングデータを容易に収集、処理、分析できるため、タイムリーな洞察を得て、新しい情報に迅速に対応することができる。

  • Generate streaming data containing stock quote information
  • Send the data to an Amazon Kinesis Firehose delivery stream
  • Amazon Kinesis Firehose will then call an AWS Lambda function to transform the data
  • Amazon Kinesis Firehose will then collect the data into batches and send the batches to an Amazon Elasticsearch service cluster
  • You will use Kibana to visualize the streaming data stored in the Elasticsearch cluster
  • Amazon Kinesis Firehose is a fully managed service that delivers real-time streaming data to destinations such as Amazon Simple Storage Service (Amazon S3), Amazon Elasticsearch Service and Amazon Redshift. With Firehose, you do not need to write any applications or manage any resources. You configure your data producers to send data to Firehose and it automatically delivers the data to the specified destination.

    jdbc

    JDBC (Java Database Connectivity) は、MySQLやPostgreSQLといった数々のSQLデータベース、あるいはスプレッドシートなどのデータファイルにJavaからアクセスするためのAPI。
    アクセス先ごとに専用のドライバが提供されているため、事前にインストールしておく必要がある。

    本家のサイトからMySQL Connectorsを押下する。

    eclipseでweb開発をする

    helpから行きます。

    これでいいのかな?

    入りました!!

    servletの作成

    run on servlet
    tomcatが起動する。localhost:8080は404

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Hello, World!</title>
    </head>
    <body>
        <%= new java.util.Date() %>
    </body>
    </html>
    

    何故だ?ようわからん。。

    Eclipseを使おう

    txtファイルのエンコーディングを設定します。

    Caluclation.java

    package myPackage.calc;

    public class Calculation {
    protected int value = 0;
    protected int result = 0;

    /*
    * 計算に使用する値を取得します。
    * @return
    */
    public int getValue() {
    return value;
    }
    /*
    * 計算に使用する値を設定します。
    * @param value計算に使用する値
    */

    public void setValue(int value) {
    this.value = value;
    }
    /**
    * 計算結果をコンソールに出力します。
    */

    public void output(){
    System.out.println(this.result);
    }

    }
    [/java]

    package myPackage.calc;
    
    public class Square extends Calculation {
    	
    	/*
    	 * 値を二乗します。
    	 */
    	public void calculate(){
    		this.result = this.value * this.value;
    		this.output();
    	}
    
    }
    
    package myPackage.main;
    
    import myPackage.calc.Square;
    
    public class Program {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		Square square = new Square();
    		
    		square.setValue(Integer.parseInt(args[0]));
    		square.calculate();
    
    	}
    
    }
    

    Android studioにやや似ているから助かってるが、これどーしろっていうんだろう。。

    strutsライブラリ

    HTML:タグなどからなるフォーム部品。ほぼHTMLのフォームタグに対応するが、Modelで生成された値のデフォルト表示やエラー時のフィードバックなどリッチな機能を提供する
    Logic:条件分岐や繰り返し、値の比較など、プログラミング言語が提供する基本的な制御ロジックをタグ化する
    Beans:Modelから引き継がれたJavaBeans(データオブジェクト)にアクセスするための手段を提供する。ヘッダ値やクッキーなど不可視のリクエストデータについても、Beansタグライブラリを介してアクセスすることができる。また、国際化対応メッセージを制御する
    Nested:タグで囲まれた内部の属性(変数)名を略記可能とします。例えば、「xxxx.yyyy.zzzz」のような変数を「zzzz」と記述することが可能になる
    Tiles:テンプレート機能を提供する。Tilesを利用することで、ヘッダ、メニュー、コンテンツなどの部分から構成される画面を分割管理することが可能になり、デザインの統一を図りやすくなる

    アクションサーブレット:Strutsにおけるコアエンジンです。アクションサーブレットは、ユーザーが別に用意した設定ファイルを手掛かりにして、入出力データの振り分けや画面遷移の制御を一手に引き受けます。

    アクションフォームBeans:ユーザーからの入力データを格納し、ビジネスロジックに引き渡すための役割を果たします。入力データの検証処理やデフォルト値のセットなど、これまでアプリケーション本流のロジックに混在しがちであった部分を一元的に管理することで、ビジネスロジックをスリム化することができます。

    Validator:「Validator」もまたStruts 1.1から導入された機能です。クライアントからの入力データを設定ファイルで定義された内容(検証対象、チェック内容、エラーメッセージ)に基づいて検証します。

    strutsに必要なソフトウェア
    J2SE(Java2 Software Development Kit, Standard Edition):Javaアプリケーション開発の基本的なツール、および実行環境を提供します。Java仮想マシンをはじめ、コンパイラ(javac)、ドキュメント生成エンジン(javadoc)、エンコーディングユーティリティ(native2ascii)などを含みます。Strutsもまたサーバサイドで動作するJavaアプリケーションですので、まずはこのJ2SEをサーバ上にインストールしておく必要があります。

    サーブレットコンテナ
    Strutsは「サーブレット」技術をベースにおくアプリケーション・フレームワークです。実行に際しては、サーブレットを動作させるための実行エンジン(コンテナ)を必要とします。一般的には、サーブレットコンテナはユーザーからのリクエスト処理を制御するWebサーバと連携して動作しますが、Tomcatには簡易なWebサーバとしての機能も実装されています。

    データベースサーバ:
    MySQL

    サーバー: J2SE, Tomcat, Strutus, MySQL

    struts-config.xml

    <?xml version="1.0" encoding="Shift_JIS" ?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
      <data-sources></data-sources>
      <form-beans></form-beans>
      <global-exceptions></global-exceptions>
      <global-forwards></global-forwards>
      <action-mappings></action-mappings>
    </struts-config>
    

    warファイルとは

    Java 製のWebアプリで利用されるクラスファイル(servlet)、設定ファイル、JSPやHTMLファイル、JAR形式のライブラリなどがまとめられているアーカイブ。 また、web.xmlが含まれ、TomcatなどのアプリケーションサーバにWARファイルを配布すると、これを元にデプロイされる。

    warファイルはzip形式で圧縮されたアーカイブにすぎません。しかし、ほかの形式とは異なり、warファイルを規定のアプリケーションフォルダ(Tomcatなら、%CATALINA_HOME%\webapps)にコピーしておくと、コンテナの(再)起動時に自動的に展開され、Webブラウザからアクセス可能になる

    jarコマンドにcvfオプションを付加して、そのパス名を引数として渡すだけで作成できる。

    なるほど、動くことは分かったので、strutsがどういう仕組みで、どういう風に書いていけばいいのかですな。
    課題としては
    – ファイル構成がわからない
    – jar, war, jsp, javaなど使用するファイルが、phpやpython、rbなど他のスクリプト言語に較べて多い


    「Maven」とは、要するにJavaプログラムをビルドするためのツールです。
    C言語を触ったことがある人は、makeのようなものと言えばイメージがしやすいかと思います。
    似たようなツールに、AntやGradleなどありますが、使い方とかが違うだけで、本質的には同じです。
    コンパイルの前後に依存するライブラリを自動で揃えたり、XMLさえ書けば、いろんなことがビルドと一緒にできるツール

    JSPとは、JavaServer Pages の略で、Javaによるサーバサイド・スクリプティングを実現するためのテクノロジです。 … JavaScriptは、Webサーバから転送されるHTMLファイルの中に記述されており、その実行は、クライアントであるWebブラウザ上で行われる。
    Webサーバ(ホームページのファイルを置くサーバ)上でお仕事をするJavaのプログラムで、HTMLファイルとJavaのプログラムが合体したもの

    jspの例

    <html>
    <head>
    	<title>title</title>
    </head>
    
    <body>
    <%
    	String word1 = "hello world!";
    	out.println(world1);
    %>
    </body>
    </html>
    

    View JSP/HTML
    Control サーブレット
    Model JavaBeans

    <table border="1">
    	<tr><th>タイトル</th><th>著者</th><th>出版社</th><th>価格</th></tr>
    	<logic:iterator id="data" name="aryData" scope="request">
    	<tr>
    		<td><bean:write name="data" property="title"></td>
    		<td><bean:write name="data" property="author"></td>
    		<td><bean:write name="data" property="publish"></td>
    		<td><bean:write name="data" property="price"></td>
    	</tr>
    </logic:iterator>
    </table>
    

    vagrantでstrutsを動してみよう♪

    まずlibの権限変更
    [vagrant@localhost apache-tomcat-8.5.33]$ sudo chmod 755 lib

    strutsのjarファイルをtomcatのlibに移動する。
    [vagrant@localhost struts-1.3.10]$ sudo mv lib/*.jar /opt/tomcat/apache-tomcat-8.5.33/lib

    これでOKらしい。

    続いて、appsのwarファイルをtomcatのwebappsに移動
    mv apps/struts-examples-1.3.10.war /opt/tomcat/apache-tomcat-8.5.33/webapps

    [vagrant@localhost webapps]$ ls
    ROOT examples manager struts-examples-1.3.10.war
    docs host-manager struts-examples-1.3.10

    tomcat再起動
    [vagrant@localhost webapps]$ sudo /opt/tomcat/apache-tomcat-8.5.33/bin/shutdown.sh
    [vagrant@localhost struts-1.3.10]$ sudo /opt/tomcat/apache-tomcat-8.5.33/bin/startup.sh
    Using CATALINA_BASE: /opt/tomcat/apache-tomcat-8.5.33
    Using CATALINA_HOME: /opt/tomcat/apache-tomcat-8.5.33
    Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.5.33/temp
    Using JRE_HOME: /usr
    Using CLASSPATH: /opt/tomcat/apache-tomcat-8.5.33/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.5.33/bin/tomcat-juli.jar
    Tomcat started.

    以下のURLを叩く
    http://192.168.33.10:8080/struts-examples-1.3.10/welcome.do

    うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
    なにこれ?????????????????????

    動いたのは分かったが、framework触ってる気が全くしないぞ。。