controller/jsp 파일을 작성하는 경로 설정하는 부분
<context:component-scan base-package="com.app.controller"></context:component-scan>
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/"></beans:property>
<beans:property name="suffix" value=".jsp"></beans:property>
</beans:bean>
POST 방식일 경우 parameter가 body에 숨겨져서 전달된다.
체크박스와 같은 같은 키 값으로 동일한 값이 여러개 들어오는 경우 다음과 같이 받을 수 있다.
request.getParameterValues("p4")
for(String s : request.getParameterValues("p4")) {
System.out.println("p4 : " + s);
}
@Controller
public class ParamController {
@RequestMapping("case1") //GET, POST 다 처리할 수 있다.
public String paramCase1(HttpServletRequest request) {
//Request에서 추출
System.out.println(request.getParameter("p1"));
System.out.println(request.getParameter("p2"));
System.out.println(request.getParameter("p3"));
for(String s : request.getParameterValues("p4")) {
System.out.println("p4 : " + s);
}
return "param_result";
}
@RequestMapping("case2")
public String paramCase2(@RequestParam(value = "ppp") String p1,
@RequestParam(value = "kk") String p2,
@RequestParam String p3,
@RequestParam String[] p4) {
//RequestParam으로 받기
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);
for(String s : p4) {
System.out.println(s);
}
return "param_result2";
}
@RequestMapping("case3")
public String paramCase3(@RequestParam(value = "ppp", required = false) String p1,
@RequestParam(value = "kk", required = false, defaultValue = "default") String p2) {
//RequestParam으로 받기
//kk 이름으로 parameter가 넘어오지 않는 경우 에러가 난다.
//required = false를 설정해서 값이 넘어 오지 않는 경우를 처리할 수 있다.
//default는 required = true !!
System.out.println(p1);
System.out.println(p2);
return "param_result";
}
/*
@RequestMapping("category/123")
@RequestMapping("category/012")
@RequestMapping("category/233")
*/
// case4/goods/1001
// /chair/123542
@RequestMapping("case4/{path1}/{path2}") //URL Path URL 경로 요청한 주소 경로
public String paramCase4(@PathVariable(name="path1") String path1,
@PathVariable(name="path2") String path2) {
//PathVariable
System.out.println(path1);
System.out.println(path2);
//path1 어떤 테이블
//path2 특정 식별자 where id = ?
return "param_result";
}
@RequestMapping("case5")
public String paramCase5(@RequestParam Map<String, String> map,
@RequestParam List<String> p3) {
System.out.println("case5 파라미터 Map으로 전달받기");
System.out.println(map.get("p1"));
System.out.println(map.get("p2"));
//map.get("id")
//map.get("name")
//map.get("password")
for(String s : p3) {
System.out.println(s);
}
return "param_result";
}
@RequestMapping("case6")
public String paramCase6(@ModelAttribute MemberDto memberDto) {
//파라미터를 받아서 비교, 저장, 업데이트 등등
//값이 여러개가 넘어오는 경우
//아이디 이름 비번 주소 전번...
//객체 자체를 그냥 출력
System.out.println(memberDto);
//toString()
//insertMember(memberDto);
return "param_result";
}
}
@Controller
public class AttributeController {
//Server -> View -> User
@RequestMapping("return1")
public String return1(HttpServletRequest request) {
//request를 활용해서 화면으로 값 전달하기
request.setAttribute("attr1", "전달하는 값1");
request.setAttribute("attr2", "전달하는 값2");
//return은 뷰이름(.jsp 파일이름)
return "return_result";
}
@RequestMapping("return2")
public String return2(Model model) {
//모델 활용해서 화면에 값 전달하기
model.addAttribute("attr1", "모델로 주입한 값 1");
model.addAttribute("attr2", "모델로 주입한 값 2");
//데이터는 모델에 담기
//리턴은 뷰이름(.jsp 파일이름)
return "return_result";
}
@RequestMapping("return3")
public ModelAndView return3() {
ModelAndView mv = new ModelAndView();
mv.addObject("attr1", "모델앤드뷰에서 추가한 값1");
mv.addObject("attr2", "모델앤드뷰에서 추가한 값2");
mv.setViewName("return_result");
return mv;
}
//잘못된 케이스
@RequestMapping("return4")
public String return4(ModelAndView mv) {
mv.setViewName("sample");
mv.addObject("attr1", "모델앤드뷰에서 추가한 값1");
mv.addObject("attr2", "모델앤드뷰에서 추가한 값2");
return "return_result";
}
@RequestMapping("return5")
public ModelAndView return5(ModelAndView mv) {
mv.setViewName("return_result");
mv.addObject("attr1", "모델앤드뷰에서 추가한 값1");
mv.addObject("attr2", "모델앤드뷰에서 추가한 값2");
return mv;
}
@RequestMapping("return6")
public String return6(Model model) {
MemberDto memberDto = new MemberDto();
memberDto.setId("주입id");
memberDto.setPw("주입pw");
memberDto.setName("주입name");
model.addAttribute("memberItem", memberDto);
return "member_info";
}
@RequestMapping("return7")
public String return7(@ModelAttribute("memberItem") MemberDto memberDto) {
//ModelAttribute로 화면에 값 전달하기
//("name")이 이름으로 화면에 객체타입으로 전달.
memberDto.setId("modelattribute에 아이디");
memberDto.setPw("modelattribute에 비밀번호");
memberDto.setName("modelattribute에 이름");
return "member_info";
}
}