@RequestMapping(value = "/view", method = RequestMethod.POST)

public ModelAndView home(HttpServletRequest request) {

String l = request.getParameter("id");

ModelAndView  mv = new ModelAndView();

mv.setViewName("board/view");

mv.addObject("id", l );

return mv;

}


ModelAndView를 사용하는 경우 setViewName()을 이용해서 뷰 이름을 지정한다.


ModelAndView를 사용하는 경우는 addObject()메서드를 사용한다.



블로그 이미지

왕왕왕왕

,

index.jsp


GET방식으로 보내기

<form action="/king/view" method="GET">

<input name="id" type="text">

<input type="submit">

</form>


POST방식으로 보내기

<form action="/king/view" method="POST">

<input name="id" type="text">

<input type="submit">

</form>





컨트롤러

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

public String home(@RequestParam("id") String id, Model model) {

Membar m = new Membar();


m.setId(id);


model.addAttribute("mem", m);


return "board/view";

}


@RequestMapping(value = "/view", method = RequestMethod.POST)

public String home12(@RequestParam("id") String id, Model model) {

Membar m = new Membar();


m.setId(id);


model.addAttribute("mem", m);


return "board/view";

}


컨트롤러에서는 메소드 명만 다르게해서 2개를 같이 만들어놔도된다.

이렇게 되면 index에서 GET이나 POST 아무거나해도 받을 수 있다.



view.jsp


<p>아이디 ${mem.id}  </p>



블로그 이미지

왕왕왕왕

,


@RequestMapping("/student/{student}")

public String getstudent(@PathVariable String student1, Model model) {

model.addAttribute("st", student);

return "board/view";

}


  http://localhost/king/student/10


@PathVariable 어노테이션을 사용하면 위와 같으 URL을 쉽게 처리할 수 있다.

@PathVariable 어노테이션을 사용하면 경로 변수의 값을 파라미터로 전달 받을 수 있다.


위 코드의 경우 {student} 경로 변수의 실제 값을 student1 파라미터를 통해 전달 받게 된다.



@RequestMapping("/student/{student}/student1/{student1}")

public String getstudent(@PathVariable String student, @PathVariable String                                                                     student1, Model model) {

model.addAttribute("st", student);

model.addAttribute("st1",student1);

return "board/view";

}


경로 변수는 한개 이상 사용할 수 있다.

블로그 이미지

왕왕왕왕

,


 컨텍스트 경로

DispatcherServlet

 매핑 URL패턴 

실제 URL 

 /chap07

http://host:port/chap07/event/list 

 /chap07 

/main/*

http://host:port/chap07/main/event/list 


value를 이용해서 경로를 지정할 수 있다.

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

public String home(Locale locale, Model model) {

}


여러 경로를 한 메서드에서 처리하고 싶다면 배열로 경록 목록을 지정 할 수 있다.

@RequestMapping({"/main","/index"})

public String home(Locale locale, Model model) {

}

블로그 이미지

왕왕왕왕

,

@RequestMapping("/view")

public String home(@RequestParam("id")String id,@RequestParam("pw")String pw, Model model) {


//Membar클래스 생성하고 id,pw setter,getter생성

Membar m = new Membar();

m.setId(id);

m.setPw(pw);

      model.addAttribute("mem", m);

     //속성넘겨줄때 객체 그대로 전달


return "board/view";

}



<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>


<p>아이디 ${mem.id} 비밀번호 ${mem.pw} </p>

//Membar클래스에 필드명을 . 을 구분자로 불러온다

 

</body>

</html>

블로그 이미지

왕왕왕왕

,

컨트롤러

@RequestMapping("/view")

public String home(HttpServletRequest http, Model model) {

String id = http.getParameter("id");

String pw = http.getParameter("pw");

model.addAttribute("id", id);

model.addAttribute("pw", pw);


return "board/view";

}


인자로 http,model을 받고


id와 pw에 파라미터를 가져온다.


model에 받은 값으로 속성을 추가해준다.



<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>


<p>아이디$ {id} 비밀번호 ${pw }</p>


</body>

</html>



@@RequestParam 어노테이션


@RequestMapping("/view")

public String home(@RequestParam("id")String id ,

                            @RequestParam("pw")int pw ,Model model) {

// String id = http.getParameter("id");

// String pw = http.getParameter("pw");

model.addAttribute("id", id);

model.addAttribute("pw", pw);


return "board/view";

}



어노테이션으로 작성하면 인자로 한번에 받을 수 있다.

@RequestParam("파라미터명")자료형 변수명 으로 작성한다.


블로그 이미지

왕왕왕왕

,

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


보통 위 처럼 작성하게 된다.


@RequestMapping("/home")


이렇게 작성해도 디폴트로 get방식으로 전송한다. 


간단한거 

블로그 이미지

왕왕왕왕

,

HomeController.java


@Controller

public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

/**

* Simply selects the home view to render by returning its name.

*/

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

public String home(Locale locale, Model model) {

logger.info("Welcome home! The client locale is {}.", locale);

Date date = new Date();

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

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

             //파라미터 넘길때 파라미터명, 넘길 값

return "home";

}

  //컨트롤러 추가하는 경우

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

       value는 패키지명/에 입력하여 접근하는 값이다.

  URL/패키지명/view 하면 이쪽으로 매핑된다.

public String home(Model model) {

logger.info("Welcome home! The client locale is {}.");

return "board/view";

             //servlet-context.xml에 prefix + 뷰 + suffix 로 작성되는데

             //위에 home.jsp는 views디렉터리에 있지만, view.jsp는 views디렉터리 아래                    board디렉터리에 위치시켰다. 

             //prefix는 /WEB-INF/views/ 로 작성되있기때문에, 리턴값을 board/view로 해준                다.

}

}


home.jsp


<%@ 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 server is ${serverTime}. </P>


//${String args0} 컨트롤러에서 serverTime이라는 이름으로 정했다.

//뷰페이지에서 ${serverTime} 을 작성하면 컨트롤러에서 작동된 시간을 파라미터로 넘겨준다.


</body>

</html>



블로그 이미지

왕왕왕왕

,