質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

7642閲覧

Struts2でJSPファイルに紐づいたActionが呼ばれない

Love_minion

総合スコア19

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

2クリップ

投稿2017/08/09 02:42

編集2017/08/10 02:16

###前提・実現したいこと
お世話になります。
現在、Struts2の学習を行っています。
struts.xmlに設定を記述せず、Javaファイル内にアノテーションでActionクラスを宣言し、リクエストが行われた際に呼び出したいのですが、JSPファイルのみ表示され、Actionクラスが呼び出されません。

###参考にさせて頂いたサイト
http://www.cyokodog.net/blog/first-struts2/
http://qiita.com/alpha_pz/items/4a97df916102dad2e2bc

###現在使用しているツールやバージョン情報
Java
Eclipse 4.7.0 Oxygen
jdk1.8.0_131
Tomcat 9.0
struts-2.5.12

###ディレクトリ配置、Jarファイル
Jarファイルの一覧です。
Jarファイルの配置

現在のディレクトリ配置です。
ディレクトリ

###該当のソースコード
web.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 3 <display-name>HelloActionClass</display-name> 4 <filter> 5 <filter-name>struts2</filter-name> 6 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 7 <init-param> 8 <param-name>actionPackages</param-name> 9 <param-value>lipton.milktea</param-value> 10 </init-param> 11 </filter> 12 13 <filter-mapping> 14 <filter-name>struts2</filter-name> 15 <url-pattern>/*</url-pattern> 16 </filter-mapping> 17 18 <welcome-file-list> 19 <welcome-file>index.html</welcome-file> 20 </welcome-file-list> 21</web-app>

struts.xml

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE struts PUBLIC 3"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4"http://struts.apache.org/dtds/struts-2.5.dtd"> 5<struts> 6 <constant name="struts.devMode" value="true" /> 7</struts>

AbstractAction.java

java

1package lipton.milktea; 2 3 4import java.util.Map; 5 6import javax.servlet.http.HttpServletResponse; 7 8import org.apache.struts2.interceptor.ServletResponseAware; 9import org.apache.struts2.interceptor.SessionAware; 10 11import com.opensymphony.xwork2.ActionSupport; 12 13public class AbstractAction extends ActionSupport implements ServletResponseAware,SessionAware { 14 15 private static final long serialVersionUID = 1L; 16 17 public HttpServletResponse response; 18 19 public void setServletResponse(HttpServletResponse response) { 20 this.response = response; 21 } 22 23 public Map sessionMap; 24 25 public void setSession( Map sessionMap) { 26 this.sessionMap = sessionMap; 27 } 28}

LoginAction.java

java

1package lipton.milktea; 2 3 4import org.apache.struts2.convention.annotation.Action; 5import org.apache.struts2.convention.annotation.ExceptionMapping; 6import org.apache.struts2.convention.annotation.ExceptionMappings; 7import org.apache.struts2.convention.annotation.Result; 8import org.apache.struts2.convention.annotation.Results; 9 10import com.opensymphony.xwork2.ActionSupport; 11 12@Results({ 13 @Result( name = ActionSupport.SUCCESS , location = "login.jsp" ) 14}) 15@ExceptionMappings({ 16 @ExceptionMapping(exception="java.lang.Exception" , result="exception") 17}) 18@Action("login") 19 20public class LoginAction extends AbstractAction { 21 private static final long serialVersionUID = 1L; 22 23 public String errmsg; 24 public String userId; 25 public String password; 26 27 public String execute() throws Exception { 28 this.sessionMap.put("userId", null); 29 this.userId = "Struts2"; 30 return ActionSupport.SUCCESS; 31 } 32}

###リクエストした後の画面
リクエストをした後の画面表示です。
HelloActionClass
login.jspが表示されますが、LoginActionクラスが呼び出されず、USER入力欄が空になっています。


独学で学習を進めている為、見苦しい点や理解が及んでいない点、あると思いますが
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2017/08/23 05:28

login.jspが記載されていませんので記載してください。ソースコードを見たところActionクラスにマズい記述はありますが動作はします。
guest

回答1

0

参考サイトと比べてLibにxwork-coreが足りないように見受けますが、関係ないですかね?
個別にダウンロードはできるようなので、入れてみては

手元に環境がないもので検証できていなくてすみません

投稿2017/08/10 04:13

ladybird

総合スコア163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Love_minion

2017/08/10 05:11

回答ありがとうございます! 実際に入れて試してみましたが、挙動が改善されることはありませんでした。 調べてみたところ、xwork-coreはStruts2.5以降、struts2-coreに移動されたみたいです。
ladybird

2017/08/10 05:57 編集

うーん関係ありませんでしたか。失礼しました。 念のため確認ですが 1.画面表示は http://localhost:8080/HelloActionClass/login.action にアクセスした結果(キャプチャでは拡張子が消えていたので念のため) 2.呼び出されない=デバッグしてみてもLogin.Actionのexecute()に入らない ということでよいでしょうか? また、ビルド時や実行時にエラーや警告は出ていないでしょうか。
Love_minion

2017/08/10 06:34

いえ、回答を頂けて感謝しております。 確認についてですが 1.申し訳ありません。 キャプチャは http://localhost:8080/HelloActionClass/login にアクセスした結果でした。 http://localhost:8080/HelloActionClass/login.action にアクセスを行い再度確認しましたが キャプチャと同一の結果となりました。 2.はい、その通りです。 デバッグで確認したところ、ActionSupportのexecute()に入りますが Login.Actionのexecute()には入っておりませんでした。 ビルド時や、実行時にエラーや警告は特にありません。
ladybird

2017/08/10 09:06

ご返信ありがとうございます。 オーバーライドされたはずの親クラスのメソッドに行くのは妙ですね。 ちょっと私ではお手上げかも・・・お役に立てずすみません
Love_minion

2017/08/10 10:10

オーバーライドされていない原因を探っていこうと思います。 検討、考察ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問