저는 Spring MVC뿐만 아니라 웹 개발의 초보자입니다. 컨트롤러에 대한 어리석은 예제를 테스트 중이지만 컨트롤러가 호출 된 적이 없거나 적어도 예상대로 작동하지 않는 것 같습니다.스프링 MVC : 컨트롤러에 적합한 URL을 얻는 방법?
목표는 "test.jsp"페이지에서 하이퍼 링크를 클릭하고 컨트롤러가 호출 된 상태에서 "customers.jsp"페이지로 이동하여 메시지가 "customers.jsp"페이지로 전달되도록하는 것입니다. 페이지.
이제 "customers.jsp"페이지가 올바르게 표시되지만 전송 된 메시지는 표시되지 않습니다. URL은 http://localhost:8080/WebProject/view/customers.jsp
입니다.
문제를 찾는데 도와 주시겠습니까? 컨트롤러에 매핑 된 URL 때문이라고 생각합니다. 하지만 컨트롤러에 매핑 할 올바른 URL을 확인할 수있는 방법이 있습니까? 감사! 마지막에
* 업데이트 *
프로젝트 구조는 다음과 같다 : 여기
--webapp |--view |--*.jsp |--WEB-INF |--*.xml
test.jsp를
<a href='<c:url value="customers.jsp"/>'>show customers</a>
또는
<a href="customers.jsp">show customers</a>
모두 제대로 작동합니다.
customers.jsp
<h2>return: ${list}</h2>
컨트롤러 :
@Controller
@RequestMapping("/customers")
public class MenuController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView listCustomers() {
ModelAndView model = new ModelAndView("customers");
model.addObject("list", "controller: a list of customers");
return model;
}
}
및 구성 :
web.xml의
<servlet>
<servlet-name>myDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
myDispatcher-servlet.xml에
이 게시물 나중에 볼 수 있습니다 사람들을 위해<context:component-scan base-package="com.example.spring.controller" />
<context:component-scan base-package="com.example.spring.model" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/view/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
UPDATE :
@javafan 및 @Beri으로 표시된 바와 같이 URL 맵핑의 문제가 실제로 있습니다. 하지만 URL을 <a href="customers">show customers</a>
으로 변경 한 후에도 오류 404가 발생했습니다 (http://localhost:8080/WebProject/customers
). 실제로 이것은 패키지 스캔 오류로 인해 발생하므로 컨트롤러를 찾을 수 없습니다. 이 문제를 해결하려면 단순히 "myDispatcher-servlet.xml에"파일에서 줄을 변경 :
<context:component-scan base-package="com.example.spring.controller" />
<context:component-scan base-package="com.example.spring.model" />
에
<context:component-scan base-package="controller" />
<context:component-scan base-package="model" />
이 도움이 :) 당신은 직접 customer.jsp를 호출
답변 주셔서 감사합니다! 설명이 참으로 유용합니다. 하지만 href를 "고객"으로 변경하면 url 'WebProject/customers'에서 404 오류가 발생합니다. 어떠한 제안? – Truely
첫 번째 web.xml 변경/ url-pattern> ~ /* url-pattern>. 모든 경로가 매핑 될 수 있도록 /뿐 아니라 –
Beri
두 번째로 다음과 같이 코드 정의에 포함되어 있습니다 : . 여기에서는 컨트롤러가 my.app.controllers 패키지에 있다고 가정합니다. 이 줄은이 패키지의 모든 클래스를 검색하여 컨트롤러를 검색합니다. –
Beri