ksyke 2024. 9. 30. 12:41

기본세팅 

STS.ini

Template 정하기

default 외의 템플릿을 다 지운 다음에 eclipse를 종료한다. 

https-content.xml
0.02MB

 

위의 파일을 다음의 경로에 저장한다.

[[workspace]]\.metadata\.plugins\org.springsource.ide.eclipse.commons.content.core

 

이후 eclipse를 실행한다.

위와 같이 legacy project 템플릿 란에 목록이 생긴다.


Spring 3 문법

controller에서 메세지 출력하기

 

 

url 매핑하기

혹은

 

위와 같이 controller를 상속받지 않고 사용할 수 있다. 

POJO(Plain Old Java Project)

  •  오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어.
  • 하나 이상의 메소드가 사용될 수 있다. 
@Controller
public class Ex04Controller {

	@RequestMapping("/ex04.do")
	public String ex04page() {
		return "ex04";
	}
	
	@RequestMapping("/ex05.do")
	public String ex05page(HttpServletRequest req) {
		req.setAttribute("msg", "ex05 page");
		return "ex05";
	}
	
	@RequestMapping("/test/ex06.do")
	public void ex06() {
	}

	@RequestMapping("/ex07.do")
	public View ex07() {
		return new View() {

			@Override
			public String getContentType() {
				return "text/html; charset=UTF-8";
			}

			@Override
			public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
					throws Exception {
				PrintWriter out=null;
				try{
					out=response.getWriter();
					out.print("<h1>ex07 page</h1>");
				}finally {
					if(out!=null)out.close();
				}
				
			}
		};
	}
	
	@RequestMapping("/test/ex08.do")
	public ModelAndView ex08() {return null;}
	
	@RequestMapping("/test/ex09.do")
	public String ex09(HttpServletRequest req) {
		req.setAttribute("msg", "ex09 page");
		return "ex01";
	}
	
	@RequestMapping("/test/ex10.do")
	public String ex10(Model model) {
		model.addAttribute("msg", "ex10 page");
		return "ex01";
	}
	
	@RequestMapping("/test/ex11.do")
	public void ex11(HttpServletResponse res) throws IOException {
		PrintWriter out=null;
		try {
			out=res.getWriter();
			out.print("<h1>ex11 page</h1>");
		}finally {
			if(out!=null)out.close();
		}
	}
}

 

하나의 Controller로 여러개의 페이지 정의하기

@Controller
public class Ex12Controller {

	@RequestMapping(value="/ex12.do",method=RequestMethod.GET)
	public String ex12() {return "ex02";}
	
	@RequestMapping(value="/ex12.do",method=RequestMethod.POST)
	public String ex13(HttpServletRequest req) {
		String id=req.getParameter("id");
		String pw=req.getParameter("pw");
		req.setAttribute("id", id);
		req.setAttribute("pw", pw);
		return "ex03";
	}

	@RequestMapping(value="/ex13.do")
	public String ex13(Model model,@RequestParam("id") String id,String pw) {
		model.addAttribute("id", id);
		model.addAttribute("pw", pw+1);
		return "ex03";
		}
}
<body>
	<h1>ex02 controller</h1>
	<form action="ex13.do" method="post">
		id<input type="text" name="id"/>
		pw<input type="text" name="pw""/>
		<button>전송</button>
	</form>
</body>
<body>
	<h1>ex03 controller</h1>
	<p>id: ${id }</p>
	<p>pw: ${pw }</p>
</body>

Model 활용하기

@Controller
public class Ex13Controller {
	
	@RequestMapping("/ex14.do")
	public String ex14() {return "ex04";}

	@RequestMapping("/ex15.do")
	public String ex15(@ModelAttribute("bean") EmpVo bean) {
		bean.setEmpno(3333);
		bean.setPay(4444);
		bean.setEname("test");
		bean.setHiredate(LocalDate.now(ZoneId.systemDefault()));
		return "ex05";
	}
}

Controller에 requestMapping url을 넣어 depth 활용하기

@Controller
@RequestMapping("/dept2")
public class Ex16Controller {
	
	@RequestMapping("/ex16.do")
	public String ex16() {return "ex02";}
	@RequestMapping("/ex17.do")
	public String ex17() {return "ex04";}
	@RequestMapping("/ex18.do")
	public String ex18() {return "test/ex06";}
}

주소경로에서 값을 받아오기

@Controller
public class Ex19Controller {

	@RequestMapping("/{msg}/{msg2}.do")
	public String ex19(Model model,
			@PathVariable("msg")String msg,
			@PathVariable("msg2")String msg2
			) {
		model.addAttribute("msg",msg);
		model.addAttribute("msg2",msg2);
		return "ex01";
	}
}

context package외의 패키지에서의 controller 사용하기

servlet-context.xml

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	<beans:bean class="com.gimhae.Ex20Controller"></beans:bean>

혹은 아래의 주소를 상위 패키지로 바꾼다.

	<context:component-scan base-package="com.gimhae" />

dispatcher servlet에서 제외시키기

servlet-context.xml

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<!-- <resources mapping="/resources/**" location="/resources/" /> -->
	<resources location="/resources/imgs/" mapping="/imgs/**"/>
	<resources location="/resources/css/" mapping="/css/**"/>
	<resources location="/resources/js/" mapping="/js/**"/>
	<resources location="/resources/font/" mapping="/font/**"/>

템플릿 라이브러리 버전업 하기

pom.xml

java 

servlet 

jsp 

junit

web.xml

-server web.xml에서 web-app가져오기 

.settings