前提・実現したいこと
ログイン画面を作り、IDとPASSを入力してログインボタンを押下することでメニュー画面に遷移する機能を作っています。
メニュー画面は一旦後回しにして、とりあえずログインボタン押下時にActionまで動くか試そうとしているのですが、ボタン押下時に404エラーとなってしまいます。
発生している問題・エラーメッセージ
HTTPステータス 404 - Not Found The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
該当のソースコード
jsp
1<html:form action="/login"> 2 <table> 3 <tr> 4 <th>ログインID:</th> 5 <th><input type="text" name="loginid"/></th> 6 </tr> 7 <tr> 8 <th>パスワード:</th> 9 <th><input type="text" name="password"/></th> 10 </tr> 11 </table> 12 <input type="submit" class="login" value="ログイン" /> 13</html:form>
java
1public class LoginAction extends Action { 2 public ActionForward execute( 3 ActionMapping mapping, 4 ActionForm form, 5 HttpServletRequest req, 6 HttpServletResponse res) throws NotInputException, LoginNgException { 7 // formをLoginFormにキャスト 8 LoginForm lf = (LoginForm)form; 9 10 DataSource ds = getDataSource(req); 11 LoginLogic ll = new LoginLogic(ds); 12 13 // ログインチェック 14 ll.checkLoginOk(lf.getLoginid(), lf.getPassword()); 15 16 ActionForward af = mapping.findForward("OK"); 17 18 return af; 19 } 20}
java
1public class LoginForm extends ActionForm{ 2 private String loginid; 3 private String password; 4 5 // getter/setter 6 public String getLoginid() { 7 return loginid; 8 } 9 10 public void setLoginid(String loginid) { 11 this.loginid = loginid; 12 } 13 14 public String getPassword() { 15 return password; 16 } 17 18 public void setPassword(String password) { 19 this.password = password; 20 } 21}
xml
1 <form-beans> 2 <form-bean 3 name="loginForm" 4 type="form.LoginForm" /> 5 </form-beans> 6 <action-mappings> 7 <action path="/login" type="action.LoginAction" 8 name="loginForm" 9 scope="request"> 10 <forward name="OK" path="/menu.jsp"/> 11 </action> 12 </action-mappings>
xml
1<?xml version="1.0" encoding="windows-31j"?> 2 3<!DOCTYPE web-app 4 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 5 "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 6 7<web-app> 8 <display-name>Struts Blank Application</display-name> 9 10 <!-- Standard Action Servlet Configuration (with debugging) --> 11 <servlet> 12 <servlet-name>action</servlet-name> 13 <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 14 <init-param> 15 <param-name>config</param-name> 16 <param-value>/WEB-INF/struts-config.xml</param-value> 17 </init-param> 18 <init-param> 19 <param-name>debug</param-name> 20 <param-value>2</param-value> 21 </init-param> 22 <init-param> 23 <param-name>detail</param-name> 24 <param-value>2</param-value> 25 </init-param> 26 <load-on-startup>2</load-on-startup> 27 </servlet> 28 29 30 <!-- Standard Action Servlet Mapping --> 31 <servlet-mapping> 32 <servlet-name>action</servlet-name> 33 <url-pattern>*.do</url-pattern> 34 </servlet-mapping> 35 36 37 <!-- The Usual Welcome File List --> 38 <!-- �X�^�[�g��ʂ�ݒ� --> 39 <welcome-file-list> 40 <welcome-file>index.jsp</welcome-file> 41 </welcome-file-list> 42 43 44 <!-- Struts Tag Library Descriptors --> 45 <taglib> 46 <taglib-uri>/tags/struts-bean</taglib-uri> 47 <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> 48 </taglib> 49 50 <taglib> 51 <taglib-uri>/tags/struts-html</taglib-uri> 52 <taglib-location>/WEB-INF/struts-html.tld</taglib-location> 53 </taglib> 54 55 <taglib> 56 <taglib-uri>/tags/struts-logic</taglib-uri> 57 <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> 58 </taglib> 59 60 <taglib> 61 <taglib-uri>/tags/struts-nested</taglib-uri> 62 <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> 63 </taglib> 64 65 <taglib> 66 <taglib-uri>/tags/struts-tiles</taglib-uri> 67 <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> 68 </taglib> 69 70</web-app>
試したこと
<html:form action="/login">を
<form action="/login"> に変更したりしましたが駄目でした。 ### 補足情報(FW/ツールのバージョンなど)Struts1.2.9
ご提示の、struts-config.xmlでなく、
web.xmlって、どうなってます?
すみません、あまり変更していないので関係ないのかと思っていました。
全内容追記しました。
404なのでアクションサーブレットが未定義なのかなと思ったので。どうやら問題なさそうです。
menu.jspは作ってあります?
menu.jspは作っていないですが、
menu.jspをindex.jspに変更しても同じだったので一緒かなと・・・
一度menu.jspを作って動かしてみます
<forward name="OK" path="/menu.jsp"/>と、なってるので、作ってみてください」
「手順書通りに」と仰いますが、その手順書についての情報が提示されていません。
>>momon-ga さん
menu.jspを作ってみましたがやはり同じように404エラーです・・・
>>m.ts10806 さん
すみません、手順書はどう載せたらよいかわからないですが
手順書に記載されているコードはAction、web.xml、struts-config.xmlすべて上記と同じです
jspは自分で書いてますがxmlの設定が間違いなければ<html:form action="/login">でActionが動くはずなんですが・・・
jspの配置場所が違うのでは?手順書と比べてください。
pathは"/menu.jsp"としてるので
WebContent直下にmenu.jspは置いています
デバッグでサーバー立ててLoginAction.javaにブレークポイントつけてみましたがやはりActionが動いていないです・・・
あら・・・Strutsしばらく触ってないから忘れてしまったが。actionが動いていないなら
action="/login" を action="/login.do" にしたら、どうでしょうか。
ダメですね・・・
ちなみにURLは.doつける前と後どちらも
http://localhost:8080/プロジェクト名/login.do
なのですが、これで大丈夫なんでしょうか。
http://localhost:8080/プロジェクト名/menu.jsp
になるのは正常にActionが動いたときということでしょうか。
acrionが動くのは、login.doの時だけです。
では本来ならこれで動いてるはずなんですね・・・
うーん、わからない・・・
ちなみに、直接、login.doをたたいた場合、action動きますよね?
直接URLたたきましたが動いていません。
webアプリのリモートデバッグは経験済みで、ブレークポイント使った確認方法は間違っていないと思ってよい?(要は、actionは動いてるってことない?)
もし、動いてないんだとしたらweb.xmとStruts-configに問題がありそう。
あと再起動してないから読み込まれてないとか・・・
デバッグは以前Spring勉強の際に使っていたので使い方の問題はないはずです。
自分も問題があるとしたらxmlのどちらかになるかとは思うのですが何度も見直してますがいまいち・・・
再度確認し直してみます。
サーバーの再起動は都度行っています。
回答1件
あなたの回答
tips
プレビュー