###前提・実現したいこと
お世話になります。
現在、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ファイルの一覧です。
現在のディレクトリ配置です。
###該当のソースコード
web.xml
xml
<?xml version="1.0" encoding="UTF-8"?> <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"> <display-name>HelloActionClass</display-name> <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>lipton.milktea</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
struts.xml
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.devMode" value="true" /> </struts>
AbstractAction.java
java
package lipton.milktea; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class AbstractAction extends ActionSupport implements ServletResponseAware,SessionAware { private static final long serialVersionUID = 1L; public HttpServletResponse response; public void setServletResponse(HttpServletResponse response) { this.response = response; } public Map sessionMap; public void setSession( Map sessionMap) { this.sessionMap = sessionMap; } }
LoginAction.java
java
package lipton.milktea; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ExceptionMapping; import org.apache.struts2.convention.annotation.ExceptionMappings; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; @Results({ @Result( name = ActionSupport.SUCCESS , location = "login.jsp" ) }) @ExceptionMappings({ @ExceptionMapping(exception="java.lang.Exception" , result="exception") }) @Action("login") public class LoginAction extends AbstractAction { private static final long serialVersionUID = 1L; public String errmsg; public String userId; public String password; public String execute() throws Exception { this.sessionMap.put("userId", null); this.userId = "Struts2"; return ActionSupport.SUCCESS; } }
###リクエストした後の画面
リクエストをした後の画面表示です。
login.jspが表示されますが、LoginActionクラスが呼び出されず、USER入力欄が空になっています。
独学で学習を進めている為、見苦しい点や理解が及んでいない点、あると思いますが
よろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう