본문 바로가기

Programming/SPRING

Spring mvc 프로젝트 url에 따라 원하는 페이지로 가게 설정하는 방법

Spring MVC프로젝트를 생성하고 프로젝트 그대로 빌드합니다. (서버가 설정되어 있어야 함)

http://localhost/프로젝트명/ (처음 실행시 나오는 화면) 에서 Hello world! 시간표시가 되면 정상적으로 빌드된 것입니다.(안되면  clean하신 후에 다시 시도해보세요)


프로젝트 명이 test이고 

http://localhost:8080/test/a/mem

이 url을 쳤을때 원하는 페이지로 이동하게 하겠습니다.


web.xml에서 빨간색 부분을 바꾸어줍니다.

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>/a/*</url-pattern>

</servlet-mapping>


그 다음 Java Resources폴더의 src/main/java안에 패키지명안의 HomeController.java를 엽니다.

빨간색 부분을 원하는 데로 바꾸면 됩니다.


@RequestMapping(value = "/mem", method = RequestMethod.GET)

public String home(Locale locale, Model model) {

logger.info("Welcome home! the client locale is "+ locale.toString());

Date date = new Date();

DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

return "mem";

}


@RequestMapping(value = "/mem" 의 녹색부분과  http://localhost:8080/test/a/mem 녹색부분이 서로 매치됩니다.

그리고 return되는 String이 보여주고자 하는 페이지 이름이 됩니다. 

return "mem"이므로 mem.jsp 혹은 mem.html 이렇게 될겁니다.


return으로 매핑되는 페이지들에 대한 설정은 WEB-INF -> spring -> appSerlet -> servlet-context.xml 에서 빨간색 글 부분과 매치됩니다. 보여주고자 하는 페이지 경로가 다르다면 이 부분을 수정해야 합니다.

지금 설정된 대로라면 mem.jsp는 WEB-INF/views/mem.jsp에 위치해 있는거지요.


<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>


요청한 url이 없을 시 에러 페이지(해당 페이지를 찾을 수 없습니다)로 가게 하려면 해당  Controller.java 에서 @RequestMapping(value="/*" 로 설정하고, return "에러 페이지(ex. error)" 로 설정하면 url이 맞지 않을 경우 error.jsp로 이동하게 할 수 있습니다.