- PR -

Webアプリ(Struts)へのアクセスURL

1
投稿者投稿内容
あすてか
会議室デビュー日: 2007/10/05
投稿数: 4
投稿日時: 2007-10-05 03:37
はじめまして。
StrutsでWebアプリを作成しています。

ルートのすぐ下にxxxxx.doでアクセスはできるのですが
 ttp://...../WebAppName/test.do

間に階層を入れてアクセスできるようにするには
ファイル配置、xml記述をどうすれば良いのでしょうか?
 ttp://...../WebAppName/○○/△△/test.do

HTMLやPHPですと単にフォルダ作成でできるのですが、Strutsだとわかりませんでした。
基本的な事かと思いますが、よろしくお願い致します。


以下に現在の、ファイル配置・struts-config.xml・web.xmlを記述します。
---------------------------------
WEB-INF
├struts-config.xml
├web.xml
├classes
│└TestAction.class
└jsp
 └test.jsp
---------------------------------
<struts-config>
<action-mappings>
<action path="/test" type="TestAction">
<forward name="success" path="/WEB-INF/jsp/test.jsp"/>
</action>
</action-mappings>
</struts-config>
---------------------------------
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
---------------------------------
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-10-05 06:55
<param-name>config</param-name> ← ここにアル操作を加えると別階層にできる。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2007-10-05 09:15
<action path="/test" type="TestAction"> ← ここにアル操作を加えても別階層にできると思う。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-10-05 09:29
静的なWebページなどを作った経験などがあると、
htmlを配置するフォルダ構造と、URLの階層とが対応付いていて
切っても切れない関係のように思うかもしれませんが
実際にはURLの階層とフォルダ階層が同じである必要はありません。

HTTPでGETコマンド(つまりWebページの表示)を投げた場合、

GET /hoge/piyo.html HTTP/1.1

といったコマンドが送られてくるわけですが、これに対して何を返すのかを
Webアプリケーションでは自由にプログラムすることができます。

Servletの場合、web.xmlの<servlet-mapping>タグでどういったURLに対して
どういったServletを呼び出すかを設定できます。
Strutsを使う場合は

コード:
 <servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


としますが、これは*.doにマッチするURLはすべてactionという
Servletに処理させるという意味です。
フォルダなんて全然見ていないんですね。
同じ拡張子は全部同じServletで処理するという観点なんです。

んで、Strutsの本体であるServletの中ではstruts-config.xmlを見て
再びどのURLでどのActionをどう処理するかを設定しているのです。
その設定が <action-mappings>タグの部分。

プログラムはただコピー&ペーストするのではなく、
それぞれの記述の意味を理解すると多彩な表現ができるようになります。
あすてか
会議室デビュー日: 2007/10/05
投稿数: 4
投稿日時: 2007-10-06 23:34
朝日奈ありす さん
ありがとうございます。下記で実現できました。
<param-name>xxx/yyy

Java僧 さん
ありがとうございます。下記で実現できました。
<action path="xxx/yyy"

nagise さん
完全にフォルダ階層と思い込んでおりました。
丁寧な説明ありがとうございます。
色々いじってみたいと思います。

皆さんどうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)