2016-08-04 1 views
0

나는 Spring MVC textbox example에서 튜토리얼을 시도한다. 잘 작동하지만, 나는 링크의 이름을 다루는 것에 대해 전혀 모른다.Spring MVC를 사용하여 JSP에서 HTML로 링크 설정하기

유일하게 작동하는 것은 http://localhost:8080/SpringMVC/textbox.html이며, textbox.html 부분을 다른 것으로 변경하는 방법을 모르겠습니다.

의견과 모든 정보에 따르면 나는 그것이 제어 클래스에 따라 명명 된 것을 깨달았습니다.

TextBoxController.java -> textbox.html 여기

는 관련 코드 :

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

MVC - 디스패처-servlet.xml에

의 web.xml

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

<bean class="nch.customer.controller.TextBoxController"> 
    <property name="formView" value="CustomerForm" /> 
    <property name="successView" value="CustomerSuccess" /> 
    // Anything to put here? 

    <property name="validator"> 
     <bean class="nch.customer.validator.CustomerValidator" /> 
    </property> 
</bean> 

TextBoxController.java

public class TextBoxController extends SimpleFormController { 

public TextBoxController() { 
    setCommandClass(Customer.class); 
    setCommandName("customerForm"); 
    // Or anything to put here? 
} 

@Override 
protected ModelAndView onSubmit (
    HttpServletRequest request, HttpServletResponse response, 
    Object command, BindException errors) throws Exception { 

    Customer customer = (Customer) command; 
    return new ModelAndView("CustomerSuccess","customer",customer); 
} 

내 질문입니다. 어떻게 클래스의 이름을 변경하지 않고 링크 이름을 변경하려면? 예 :

TextBoxController.java -> txb.html

+0

URL 매핑 어딘가에있을 것이다, 주석 또는 XML에서 중. 그걸 찾아서 보여 주실 수 있습니까? – Stewart

+0

@Steward 연결된 예제에서 XML을 사용하고 주석을 사용하지 않았습니다. 패키지 이름을 제외하고 변경 사항은 없습니다. –

+0

Rocherlee의 대답을 참조하십시오. 그는 'SimpleUrlHandlerMapping'을 사용하여 작업을 완료했습니다. 그게 내가 말하는거야. 당신은 어딘가에 매핑을 지정해야합니다. 그렇지 않으면 기본 동작을 얻게됩니다. – Stewart

답변

3

이 빈 ControllerClassNameHandlerMapping는 변환이 설정으로 TextBoxController -> /textbox*

, 모두 textbox.htmltextboxxx.html 작업을하고있다.

... 클래스의 짧은 이름을 사용하려면 '컨트롤러'접미사가 있으면 제거하고 소문자로 된 나머지 텍스트는 줄 바꿈 /로 매핑하십시오.

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

다른 콩 SimpleUrlHandlerMapping로 교체하고, 당신이 당신의 경로를 정의 할 때 TextBoxController 콩에 대한 id을 제공합니다. 귀하의 mvc-dispatcher-servlet.xml는 다음과 같이 표시됩니다

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/txb.html">txtboxController</prop> 
    </props> 
    </property> 
</bean> 

<bean id="txtboxController" class="nch.customer.controller.TextBoxController"> 
    <property name="formView" value="CustomerForm" /> 
    <property name="successView" value="CustomerSuccess" /> 
    <property name="validator"> 
     <bean class="nch.customer.validator.CustomerValidator" /> 
    </property> 
</bean> 
관련 문제