0

私はApache 7.xxアプリケーションでSpring MVCを開発しており、エラーなしですべてをセットアップしています。

私のアプリケーションでは、ディスパッチャ サーブレットを HomeController にマップしています。これは、ビュー "home/View" も機能しています。

春のセキュリティで配線および反復する前に、ユーザーアカウントと登録のユースケースを実装したいと考えています。

ただし、フォーム送信時の登録フォーム (Register.jsp) (または action="UserRegisteration/RegisterForm" method="POST">) は、ビューを提供するのではなく、404 エラーを返します (テストのために、UserRegisterationController に Register.jsp を再度提供させます)


Register.jsp (フォーム スニペット)

<form action="/UserRegisteration/RegisterForm" method="POST">
                <table width="283" border="1">
  <tr>
    <td width="123"><label for="firstname">First Name</label></td>
    <td width="144"><input type="text" name="firstname" id="firstname"></td>
  </tr>
  <tr>
    <td><label for="lastname">Last Name</label></td>
    <td><input type="text" name="lastname" id="lastname"></td>
  </tr>
  <tr>
    <td><label for="email">Email</label></td>
    <td><input type="text" name="email" id="email"></td>
  </tr>
  <tr>
    <td><label for="phonecontact1">Phone Contact 1</label></td>
    <td><input type="text" name="phonecontact1" id="phonecontact1"></td>
  </tr>
  <tr>
    <td><label for="phonecontact2">Phone Contact 2</label></td>
    <td><input type="text" name="phonecontact2" id="phonecontact2"></td>
  </tr>
  <tr>
    <td><label for="address1">Address 1</label></td>
    <td><input type="text" name="address1" id="address1"></td>
  </tr>
  <tr>
    <td><label for="address2">Address 2</label></td>
    <td><input type="text" name="address2" id="address2"></td>
  </tr>
  <tr>
    <td><label for="industry ">Industry </label></td>
    <td><input type="text" name="industry " id="industry "></td>
  </tr>
  <tr>
    <td><label for="password">Enter Desired Password</label></td>
    <td><input type="text" name="password" id="password"></td>
  </tr>
  <tr>
    <td><input type="reset" name="clear " id="clear " value="Clear Fields"></td>
    <td><input type="submit" name="register" id="register" value="Register"></td>
  </tr>
</table>
</form>

次のメソッド createUserAccountRegisteration() がマップされています

@RequestMapping(value="/RegisterForm", method=RequestMethod.POST) 以下を参照してください。

(UserRegisterationController.java)
@Controller
@RequestMapping("/UserRegisteration")
public class UserRegisterationController {
    @Autowired
    private RegisterationService registerationService;
    @Autowired
    private UserAccountService userAccountService;
    @Autowired
    private PasswordService passwordService;
    public UserRegisterationController() {
    }
    public UserRegisterationController(RegisterationService registerationService, UserAccountService userAccountService, PasswordService password) {
        this.registerationService = registerationService;
        this.userAccountService = userAccountService;
        this.passwordService = password;
    }
    //if checked on register link , forward to registeration page
    @RequestMapping(value="/RegisterForm", method=RequestMethod.GET)
    public String serveRegisterationView()
    {
       return  "UserAccount/Register";
    }
    @RequestMapping(value="/RegisterForm", method=RequestMethod.POST)
    public String createUserAccountRegisteration()
    {
     //if submited registeration 
    //check for previous registeration 
    //if registered prompt , forward to sign in 
    //else create registeration , and user account , and password , forward to main user page  
       return  "UserAccount/Register";
    }

}

web.xml

<web-app metadata-complete="true" version="3.0" 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">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        /WEB-INF/applicationContext.xml
        /WEB-INF/hibernate-context.xml
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>cmgr</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cmgr</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout> 
            30 
        </session-timeout>
    </session-config>
</web-app>

spring-servlet 関連スニペット (私の場合は cmgr-servlet)

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"     
        p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" />

applicationContext.xml (関連スニペット)

 <!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config />
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans.   For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.cmgr.*" />    
    <!-- Configures the annotation-driven Spring MVC Controller programming model.  Note that, with Spring 3.0, this tag works in Servlet MVC only!  --> 
    <mvc:annotation-driven/>
    <!-- mapping of static resources-->
    <mvc:resources mapping="/resources/**" location="/resources/" />

</beans>

Register.jsp フォームの送信結果:

ブラウザの URL: (http://localhost:8084/UserRegisteration/RegisterForm)

HTTP ステータス 404 - /UserRegisteration/RegisterForm


タイプ ステータス レポート

message /UserRegisteration/RegisterForm

説明 要求されたリソース (/UserRegisteration/RegisterForm) は利用できません。


アパッチ トムキャット/7.0.22


私が気付いたのは、ブラウザの URL にアプリケーション コンテキスト (/cmgr) がありません。正しい URL は "http://localhost:8084/cmgr/UserRegisteration/RegisterForm" である必要があります。

4

1 に答える 1

0

Register.jsp フォームの送信結果: ブラウザの URL: (http://localhost:8084/UserRegisteration/RegisterForm)

私が気付いたのは、ブラウザの URL にアプリケーション コンテキスト (/cmgr) がありません。正しい URL は「http://localhost:8084/cmgr/UserRegisteration/RegisterForm」である必要があります。

そうです、コンテキストルート「/cmgr」がありません。おそらくフォームアクションが問題です。

次のように、Spring url タグを使用できます。

<spring:url value="/UserRegisteration/RegisterForm" var="targetURL"/>

<form action="${targetURL}" [...] >
</form>`
于 2012-08-29T23:16:18.930 に答える