Spring Legacy Project에서 쿼리스트링이 아닌 URL을 변수로 받는 방법에 대해 알아보겠습니다. Dynamic Web Project에서의 방법은 다음 링크를 참고해 주세요.
클라이언트가 URL에 mytime/임의값 을 입력할 시 임의값을 서버에서 변수로 받아 보여주도록 만들어 보겠습니다. @PathVariable
을 이용해 보겠습니다.
/src/main/java/com.mycompany.myapp/HomeController.java
package com.mycompany.myapp;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
@RequestMapping(value = "/mytime/{time}", method = RequestMethod.GET)
public String urlTime(@PathVariable("time") String urlTime, Model model) throws Exception{
model.addAttribute("myTime", urlTime);
return "home";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the URL is ${myTime}. </P>
</body>
</html>
클라이언트가 URL에 mytime/12:10AM
이라고 입력했을 때 mytime/
뒤에 12:10AM
부분을 서버가 변수로 받아 보여주는 것을 볼 수 있습니다.