Day082

RISK_TAKER·2023년 5월 26일
0

WEB-INF\spring\appServlet\servlet-context.xml

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>

SpringServlet Project

SpringProject

  • POST 방식일 경우 parameter가 body에 숨겨져서 전달된다.

  • 체크박스와 같은 같은 키 값으로 동일한 값이 여러개 들어오는 경우 다음과 같이 받을 수 있다.

	request.getParameterValues("p4")
    
    for(String s : request.getParameterValues("p4")) {
			System.out.println("p4 : " + s);
		}

Parameter를 전달받아 처리하는 CASE1~6

@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";
	}
	
}

화면으로 값을 전달하는 CASE1~7

@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";
	}
	
}

0개의 댓글