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

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

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

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

Java

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

Struts 2

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

3039閲覧

Struts2.5.25へのアップデートで404エラー

nok123

総合スコア11

JSP

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

Java

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

Struts 2

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2020/11/14 13:11

編集2020/11/15 08:14

Struts2.3.32からStruts2.5.25へアップデートを試みています。

Tomcatの起動までに紆余曲折あり、やっと正常に起動できたのですが、
初期画面が表示できなくなってしまいました。
(Actionクラスにブレイクポイントを置いているが到達していない)
何か気づいたことがあれば、ぜひ、教えてください。

あたりがつけられていないため、少し長くなってしまいますが、
関連するクラスと設定ファイルの内容を記載します。
画面遷移用のクラスとjson形式で値を返すクラスがありますが、
まずは初期画面を表示したい次第です。

追記

web.xmlのurl-patternを /* と書き換えたところ、
内部で404が呼ばれるものの、ページの一部が表示されました。
/hoge/* だとダメで /* だと良いというのは何か参考になりますでしょうか。

http://localhost:8080/xxx/hoge/indexにアクセスした際の
Stacktracesは下記の通りです。(devModeをtrueにしています)

log

1Stacktraces 2There is no Action mapped for namespace [/hoge] and action name [index] associated with context path [/xxx]. - [unknown location] 3 com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:195) 4 org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:57) 5 org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:32) 6 com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:60) 7 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) 8 org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) 9 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) 10 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 11 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 12 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 13 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 14 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 15 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 16 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 17 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 18 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) 19 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) 20 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 21 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) 22 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) 23 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 24 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 25 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 26 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 27 java.lang.Thread.run(Thread.java:722)

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <listener> <listener-class>jp.co.company.common.listener.InitialServletContext</listener-class> </listener> <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value> jp.co.company.common.struts, jp.co.company.basic.action.webapi, jp.co.company.basic.action.content, jp.co.company.action </param-value> </init-param> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>struts.custom.i18n.resources</param-name> <param-value>ApplicationResources</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/hoge/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>/index.html</welcome-file> </welcome-file-list> <error-page> <error-code>401</error-code> <location>/WEB-INF/tiles/panel/basic/httpUnauthorizedLayout.jsp</location> </error-page> <error-page> <error-code>403</error-code> <location>/WEB-INF/tiles/panel/basic/httpForbiddenLayout.jsp</location> </error-page> <!-- error-page> <error-code>404</error-code> <location>/WEB-INF/tiles/panel/basic/httpNotfoundLayout.jsp</location> </error-page --> <error-page> <error-code>500</error-code> <location>/WEB-INF/tiles/panel/basic/httpInternalErrorLayout.jsp</location> </error-page> <session-config> <session-timeout>1440</session-timeout> </session-config> </web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.action.extension" value="" /> <constant name="struts.multipart.maxSize" value="5097152" /> <package name="struts-hoge" namespace="/hoge" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> <result-type name="redirect" class="org.apache.struts2.result.ServletActionRedirectResult" /> </result-types> </package> <package name="json-hoge" namespace="/hoge" extends="json-default"> <result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> <interceptors> <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/> </interceptors> </package> </struts>

IndexActionクラス

package jp.co.company.basic.action.content; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import jp.co.company.basic.action.content.base.AbstractBasicAction; import jp.co.company.common.manager.SystemSettingManager; import jp.co.company.common.struts.AbstractNormalAction; @ParentPackage(value=AbstractNormalAction.PARENT_PACKAGE) @Results ({ @Result(name = IndexAction.INPUT, location="/WEB-INF/content/index.jsp") }) public class IndexAction extends AbstractBasicAction { @Override public void subBasicPrepare() throws Exception { } @Override public String subBasicExecute() throws Exception { return INPUT; } }

IndexActionクラスの親クラス

package jp.co.company.common.struts; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; import jp.co.company.common.log.ThermoLogger; import jp.co.company.common.manager.SystemSettingManager; import jp.co.company.common.manager.session.SessionManager; import jp.co.company.dao.db.User; @ParentPackage(value=AbstractNormalAction.PARENT_PACKAGE) @Results ({ @Result(name = ActionSupport.ERROR, location="/WEB-INF/content/error.jsp") , @Result(name = AbstractNormalAction.SESSION_ERROR, location = "index", type = "redirect") , @Result(name = AbstractNormalAction.PERMISSION_ERROR, location = "index", type = "redirect") }) public abstract class AbstractNormalAction extends ActionSupport implements Preparable { public static final String PARENT_PACKAGE = "struts-hoge"; public static final String NS_THERMO = "/hoge"; protected static final String SESSION_ERROR = "session-error"; protected static final String PERMISSION_ERROR = "permission-error"; public AbstractNormalAction() { } @Override public final void prepare() throws Exception { this.subPrepare(); }; public abstract void subPrepare() throws Exception ; @Override public String execute() throws Exception { String res = this.subExecute(); return res; } protected abstract String subExecute() throws Exception; }

環境は下記の通りです。
Windows10
Eclipse
Java 1.7
Tomcat 8.0

不足している情報があればご指摘ください。

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

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

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

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

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

guest

回答1

0

自己解決

web.xmlのurl-patternを /hoge/* から /* と書き換えたところ、config-browserが表示できるようになりました。
そこで/hogeではなくなぜか/contentにマッピングされていることが分かりました。
原因は不明なままですが、404エラーからは抜け出せたので、当質問は閉じたいと思います。

投稿2020/11/15 09:26

nok123

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問