SlideShare a Scribd company logo
1 of 14
Download to read offline
1Page l 1
Solution
2Page l 2
LAB 4-1
Step 4-1-01. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다.
Step 4-1-02. LoginServiceImpl .java 에서 구현되어져 있는 LoginDao의 authenticate 메소드를 이용하여 검증하여 결과(Account)객체를 리턴한다.
Step 4-1-03. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다.
Step 4-1-04. LoginController.java 에서 loginSuccess.do 로 호출된 처리를 위한 메소드를 만든다.(GET 방식만 지원)
3Page l 3
LAB 4-1-Solution
Step 4-1-01. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다.
Step 4-1-02. LoginServiceImpl .java 에서 구현되어져 있는 LoginDao의 authenticate 메소드를 이용하여 검증하여 결과(Account)객체를 리턴한다.
Step 4-1-03. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다.
Step 4-1-04. LoginController.java 에서 loginSuccess.do 로 호출된 처리를 위한 메소드를 만든다.(GET 방식만 지원)
Account account = (Account) loginService.authenticate(id, password);
if (account != null) {
request.getSession().setAttribute("UserAccount", account);
return "redirect:/loginSuccess.do";
} else {
return "login";
}
return loginDao.authenticate(id, password);
@RequestMapping(value = "/loginSuccess.do", method = RequestMethod.GET)
public void loginSuccess() {
}
4Page l 4
LAB 4-2
Step 4-2-01. EmployeeController.java 에서 employeeList.do 경로로 요청과 메소드를 매핑해준다. @RequestMapping 를 이용한다.
Step 4-2-02. EmployeeController.java 에서 화면에서 넘어오는 pageNo 파라미터 값을 반드시 넘어오지 않아도 됨을 명시적표현해 본다. @RequestParam 의
required 를 이용한다.
Step 4-2-03. employeelist.jsp에서 ajaxtags 사용을 위한 script 코드를 import 한다.
Step 4-2-04. . employeelist.jsp에서 ajaxtags 사용을 위한 ajax:autocomplete 코드를 생성한다.
5Page l 5
LAB 4-2-Solution
Step 4-2-01. EmployeeController.java 에서 employeeList.do 경로로 요청과 메소드를 매핑해준다. @RequestMapping 를 이용한다.
Step 4-2-02. EmployeeController.java 에서 화면에서 넘어오는 pageNo 파라미터 값을 반드시 넘어오지 않아도 됨을 명시적표현해 본다. @RequestParam 의
required 를 이용한다.
Step 4-2-03. employeelist.jsp에서 ajaxtags 사용을 위한 script 코드를 import 한다.
Step 4-2-04. . employeelist.jsp에서 ajaxtags 사용을 위한 ajax:autocomplete 코드를 생성한다.
@RequestMapping(value = "/employeeList.do")
public String getEmpList(…
<script type="text/javascript" src="<c:url value='/ajaxtags/js/prototype.js'/>"></script>
<script type="text/javascript" src="<c:url value='/ajaxtags/js/scriptaculous/scriptaculous.js'/>"></script>
<script type="text/javascript" src="<c:url value='/ajaxtags/js/overlibmws/overlibmws.js'/>"></script>
<script type="text/javascript" src="<c:url value='/ajaxtags/js/ajaxtags.js'/>"></script>
<link type="text/css" rel="stylesheet" href="<c:url value='/ajaxtags/css/ajaxtags.css'/>" />
<link type="text/css" rel="stylesheet" href="<c:url value='/ajaxtags/css/displaytag.css'/>" />
public String getEmpList(@RequestParam(value = "pageNo", required = false) String pageNo,
SearchCriteria searchCriteria, ModelMap model, @RequestParam Map<String, Object> commandMap) throws
Exception {
<ajax:autocomplete
baseUrl="${pageContext.request.contextPath}/suggestName.do"
source="searchName"
target="searchName"
className="autocomplete"
minimumCharacters="1" />
6Page l 6
LAB 4-3
Step 4-3-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 GET 방식에 대해서만 처리하도록 한다.
Step 4-3-02. EmployeeController.java 에서 employee 객체를 ModelAttributes 를 이용하여 세팅하여보자.
Step 4-3-03. EmployeeController.java 에서 deptInfoOneDepthCategory 객체를 ModelAttributes 를 이용하여 세팅하여보자.
7Page l 7
LAB 4-3-Solution
Step 4-3-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 GET 방식에 대해서만 처리하도록 한다.
Step 4-3-02. EmployeeController.java 에서 employee 객체를 ModelAttributes 를 이용하여 세팅하여보자.
Step 4-3-03. EmployeeController.java 에서 deptInfoOneDepthCategory 객체를 ModelAttributes 를 이용하여 세팅하여보자.
@RequestMapping(value = "/insertEmployee.do", method = RequestMethod.GET)
public String setupForm(Model model) {
@ModelAttribute("deptInfoOneDepthCategory")
private Map<String, String> referenceDataOneDepthDept() {
return departmentService.getDepartmentIdNameList("1");
}
@ModelAttribute("employee")
public Employee defaultEmployee(){
return new Employee();
}
8Page l 8
LAB 4-4
Step 4-4-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 POST 방식에 대해서만 처리하도록 한다.
리턴타입은 String 이다.
Step 4-4-02. EmployeeController.java 에서 DefaultBeanValidator 를 이용하여 employee 객체 값을 체크한다.
Step 4-4-03. EmployeeController.java 에서 DefaultBeanValidator 를 실행한 결과 에러가 있을 경우 addemployee .jsp원래 페이지를 다시 보여주고 에러 메세지
를 뿌려준다.
Step 4-4-04. addemployee.jsp 에서 ajaxtags 사용을 위한 ajax:select 코드를 생성한다.
9Page l 9
LAB 4-4-Solution
Step 4-4-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 POST 방식에 대해서만 처리하도록 한다.
리턴타입은 String 이다.
Step 4-4-02. EmployeeController.java 에서 DefaultBeanValidator 를 이용하여 employee 객체 값을 체크한다.
Step 4-4-03. EmployeeController.java 에서 DefaultBeanValidator 를 실행한 결과 에러가 있을 경우 addemployee .jsp원래 페이지를 다시 보여주고 에러 메세지
를 뿌려준다.
Step 4-4-04. addemployee.jsp 에서 ajaxtags 사용을 위한 ajax:select 코드를 생성한다.
@RequestMapping(value = "/insertEmployee.do", method = RequestMethod.POST)
public String insertEmployee(
if (bindingResult.hasErrors()) {
return "addemployee";
}
beanValidator.validate(employee, bindingResult);
<ajax:select
baseUrl="${pageContext.request.contextPath}/autoSelectDept.do"
parameters="depth=2,superdeptid={superdeptid}"
source="superdeptid"
target="departmentid"
emptyOptionName="Select model"/>
10Page l 10
LAB 4-5
Step 4-5-01. EmployeeServiceImpl.java 에서 inertEmployee 메소드는 Employee 를 파라메터로 받아 employeeDao 를 실행한다. (결과는 저장된 갯수)
Step 4-5-02. EmployeeDao.java 에서 insertEmployee 메소드는 EgovAbstractDAO에서 제공되는 insert()를 이용하여 Employee.insertEmployee ID 를 가진
sql문을 실행한다.
Step 4-5-03. Employee.xml 파일에 insertEmployee 에 해당하는 sql문을 만들어준다. (DBIO 를 이용하여 생성하도록 한다.)
Insert 문의 id : insertEmployee 이고 parameterClass 는 com.easycompany.service.Employee
이고 SQL 문은
insert into employee ( employeeid, name, age, departmentid, email, password )
values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# )
11Page l 11
LAB 4-5-Solution
Step 4-5-01. EmployeeServiceImpl.java 에서 inertEmployee 메소드는 Employee 를 파라메터로 받아 employeeDao 를 실행한다. (결과는 저장된 갯수)
Step 4-5-02. EmployeeDao.java 에서 insertEmployee 메소드는 EgovAbstractDAO에서 제공되는 insert()를 이용하여 Employee.insertEmployee ID 를 가진
sql문을 실행한다.
Step 4-5-03. Employee.xml 파일에 insertEmployee 에 해당하는 sql문을 만들어준다. (DBIO 를 이용하여 생성하도록 한다.)
Insert 문의 id : insertEmployee 이고 parameterClass 는 com.easycompany.service.Employee
이고 SQL 문은
insert into employee ( employeeid, name, age, departmentid, email, password )
values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# )
return employeeDao.insertEmployee(emp);
<!-- TODO [Step 4-1-15] insertEmployee ID 로 정의된 insert 구문을 만들어준다. -->
<insert id="insertEmployee" parameterClass="com.easycompany.service.Employee">
insert into employee ( employeeid, name, age, departmentid, email, password )
values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# )
</insert>
insert("Employee.insertEmployee", emp);
12Page l 12
LAB 4-6
Step 4-6-01. EmployeeController.java 에서 updateEmployee.do 요청시 @RequestMapping 에 value 와 method (GET)를 만들어준다.
Step 4-6-02. EmployeeController.java 에서 getEmployeeInfo 메소드에 @RequestMapping을 이용하여 updateEmployee.do 요청되며,
파라미터로 “employeeid” key 가 넘어온다. 이것으로 EmployeeService 의 getEmployeeInfoById를 이용하여 Employee를 구해 리턴한다.
(참고: referenceDataOneDepthDept() )
13Page l 13
LAB 4-6-Solution
Step 4-6-01. EmployeeController.java 에서 updateEmployee.do 요청시 @RequestMapping 에 value 와 method (GET)를 만들어준다.
Step 4-6-02. EmployeeController.java 에서 getEmployeeInfo 메소드에 @RequestMapping을 이용하여 updateEmployee.do 요청되며,
파라미터로 “employeeid” key 가 넘어온다. 이것으로 EmployeeService 의 getEmployeeInfoById를 이용하여 Employee를 구해 리턴한다.
(참고: referenceDataOneDepthDept() )
@RequestMapping(value = "/updateEmployee.do", method = RequestMethod.GET)
public String defaultUpdateEmployee(@RequestParam("employeeid") String employeeid, ModelMap model) {
public Employee getEmployeeInfo(@RequestParam("employeeid") String employeeid) {
return employeeService.getEmployeeInfoById(employeeid);
}
14Page l 14
LAB
수고 하셨습니다. ^^*

More Related Content

What's hot

[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 

What's hot (20)

[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법
 
05.실행환경 교육교재(업무처리,연계통합)
05.실행환경 교육교재(업무처리,연계통합)05.실행환경 교육교재(업무처리,연계통합)
05.실행환경 교육교재(업무처리,연계통합)
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)
 
04.모바일 device api_실습교재
04.모바일 device api_실습교재04.모바일 device api_실습교재
04.모바일 device api_실습교재
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)
 
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Redux and redux saga
Redux and redux sagaRedux and redux saga
Redux and redux saga
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 

Viewers also liked (10)

ACME Corporation Final Report
ACME Corporation Final ReportACME Corporation Final Report
ACME Corporation Final Report
 
W_Magazine_Winter16
W_Magazine_Winter16W_Magazine_Winter16
W_Magazine_Winter16
 
Prelim – editing and construction
Prelim – editing and constructionPrelim – editing and construction
Prelim – editing and construction
 
Informacja na temat działań związanych z jakością powietrza w Warszawie
Informacja na temat działań związanych z jakością powietrza w WarszawieInformacja na temat działań związanych z jakością powietrza w Warszawie
Informacja na temat działań związanych z jakością powietrza w Warszawie
 
финальная призентация Gold team
финальная призентация Gold teamфинальная призентация Gold team
финальная призентация Gold team
 
Charge Weld Prediction and Minimization in Extrusion - Choose ahead, choose A...
Charge Weld Prediction and Minimization in Extrusion - Choose ahead, choose A...Charge Weld Prediction and Minimization in Extrusion - Choose ahead, choose A...
Charge Weld Prediction and Minimization in Extrusion - Choose ahead, choose A...
 
Individual contribution
Individual contributionIndividual contribution
Individual contribution
 
Last research article
Last research articleLast research article
Last research article
 
Amgad_ Reda_Barakat.CV
Amgad_ Reda_Barakat.CVAmgad_ Reda_Barakat.CV
Amgad_ Reda_Barakat.CV
 
Promotion/Tickets
Promotion/TicketsPromotion/Tickets
Promotion/Tickets
 

Similar to 06.실행환경 실습교재(easy company,해답)

[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장
홍준 김
 

Similar to 06.실행환경 실습교재(easy company,해답) (20)

레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기
 
3-2. selector api
3-2. selector api3-2. selector api
3-2. selector api
 
Xe hack
Xe hackXe hack
Xe hack
 
Webframeworks angular js 세미나
Webframeworks angular js 세미나Webframeworks angular js 세미나
Webframeworks angular js 세미나
 
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
QnA Blog Using Django - 회원가임/로그인폼, Post, 글보기
 
Softnyx Store SDK document (Ver016)
Softnyx Store SDK document (Ver016)Softnyx Store SDK document (Ver016)
Softnyx Store SDK document (Ver016)
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
 
Tdd 4장
Tdd 4장Tdd 4장
Tdd 4장
 
Xe3.0 frontend validator
Xe3.0 frontend validatorXe3.0 frontend validator
Xe3.0 frontend validator
 
E government framework
E government frameworkE government framework
E government framework
 
Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)
 
Android Google Cloud Message 설정
Android Google Cloud Message 설정Android Google Cloud Message 설정
Android Google Cloud Message 설정
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장
 
Team Portfolio
Team PortfolioTeam Portfolio
Team Portfolio
 
Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018
 
그래서 테스트 코드는 어떻게 작성하나요?.pdf
그래서 테스트 코드는 어떻게 작성하나요?.pdf그래서 테스트 코드는 어떻게 작성하나요?.pdf
그래서 테스트 코드는 어떻게 작성하나요?.pdf
 
Meteor2015 codelab
Meteor2015 codelab Meteor2015 codelab
Meteor2015 codelab
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 

More from Hankyo

More from Hankyo (19)

01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론
 
01.공통컴포넌트 교육교재
01.공통컴포넌트 교육교재01.공통컴포넌트 교육교재
01.공통컴포넌트 교육교재
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)
 
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재
 
03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)
 
03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재
 
02.모바일 실습교재(ux component)
02.모바일 실습교재(ux component)02.모바일 실습교재(ux component)
02.모바일 실습교재(ux component)
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재
 
02.[참고]오픈소스sw라이선스가이드라인
02.[참고]오픈소스sw라이선스가이드라인02.[참고]오픈소스sw라이선스가이드라인
02.[참고]오픈소스sw라이선스가이드라인
 
02.공통컴포넌트 실습교재
02.공통컴포넌트 실습교재02.공통컴포넌트 실습교재
02.공통컴포넌트 실습교재
 
Ch05
Ch05Ch05
Ch05
 
Ch04
Ch04Ch04
Ch04
 
Ch03
Ch03Ch03
Ch03
 
Ch02
Ch02Ch02
Ch02
 
Ch11
Ch11Ch11
Ch11
 
Ch10
Ch10Ch10
Ch10
 
Ch09
Ch09Ch09
Ch09
 

06.실행환경 실습교재(easy company,해답)

  • 2. 2Page l 2 LAB 4-1 Step 4-1-01. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다. Step 4-1-02. LoginServiceImpl .java 에서 구현되어져 있는 LoginDao의 authenticate 메소드를 이용하여 검증하여 결과(Account)객체를 리턴한다. Step 4-1-03. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다. Step 4-1-04. LoginController.java 에서 loginSuccess.do 로 호출된 처리를 위한 메소드를 만든다.(GET 방식만 지원)
  • 3. 3Page l 3 LAB 4-1-Solution Step 4-1-01. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다. Step 4-1-02. LoginServiceImpl .java 에서 구현되어져 있는 LoginDao의 authenticate 메소드를 이용하여 검증하여 결과(Account)객체를 리턴한다. Step 4-1-03. LoginController.java 에서 LoginService 를 이용하여 로긴여부 체크 Account 객체를 리턴 받는다. Step 4-1-04. LoginController.java 에서 loginSuccess.do 로 호출된 처리를 위한 메소드를 만든다.(GET 방식만 지원) Account account = (Account) loginService.authenticate(id, password); if (account != null) { request.getSession().setAttribute("UserAccount", account); return "redirect:/loginSuccess.do"; } else { return "login"; } return loginDao.authenticate(id, password); @RequestMapping(value = "/loginSuccess.do", method = RequestMethod.GET) public void loginSuccess() { }
  • 4. 4Page l 4 LAB 4-2 Step 4-2-01. EmployeeController.java 에서 employeeList.do 경로로 요청과 메소드를 매핑해준다. @RequestMapping 를 이용한다. Step 4-2-02. EmployeeController.java 에서 화면에서 넘어오는 pageNo 파라미터 값을 반드시 넘어오지 않아도 됨을 명시적표현해 본다. @RequestParam 의 required 를 이용한다. Step 4-2-03. employeelist.jsp에서 ajaxtags 사용을 위한 script 코드를 import 한다. Step 4-2-04. . employeelist.jsp에서 ajaxtags 사용을 위한 ajax:autocomplete 코드를 생성한다.
  • 5. 5Page l 5 LAB 4-2-Solution Step 4-2-01. EmployeeController.java 에서 employeeList.do 경로로 요청과 메소드를 매핑해준다. @RequestMapping 를 이용한다. Step 4-2-02. EmployeeController.java 에서 화면에서 넘어오는 pageNo 파라미터 값을 반드시 넘어오지 않아도 됨을 명시적표현해 본다. @RequestParam 의 required 를 이용한다. Step 4-2-03. employeelist.jsp에서 ajaxtags 사용을 위한 script 코드를 import 한다. Step 4-2-04. . employeelist.jsp에서 ajaxtags 사용을 위한 ajax:autocomplete 코드를 생성한다. @RequestMapping(value = "/employeeList.do") public String getEmpList(… <script type="text/javascript" src="<c:url value='/ajaxtags/js/prototype.js'/>"></script> <script type="text/javascript" src="<c:url value='/ajaxtags/js/scriptaculous/scriptaculous.js'/>"></script> <script type="text/javascript" src="<c:url value='/ajaxtags/js/overlibmws/overlibmws.js'/>"></script> <script type="text/javascript" src="<c:url value='/ajaxtags/js/ajaxtags.js'/>"></script> <link type="text/css" rel="stylesheet" href="<c:url value='/ajaxtags/css/ajaxtags.css'/>" /> <link type="text/css" rel="stylesheet" href="<c:url value='/ajaxtags/css/displaytag.css'/>" /> public String getEmpList(@RequestParam(value = "pageNo", required = false) String pageNo, SearchCriteria searchCriteria, ModelMap model, @RequestParam Map<String, Object> commandMap) throws Exception { <ajax:autocomplete baseUrl="${pageContext.request.contextPath}/suggestName.do" source="searchName" target="searchName" className="autocomplete" minimumCharacters="1" />
  • 6. 6Page l 6 LAB 4-3 Step 4-3-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 GET 방식에 대해서만 처리하도록 한다. Step 4-3-02. EmployeeController.java 에서 employee 객체를 ModelAttributes 를 이용하여 세팅하여보자. Step 4-3-03. EmployeeController.java 에서 deptInfoOneDepthCategory 객체를 ModelAttributes 를 이용하여 세팅하여보자.
  • 7. 7Page l 7 LAB 4-3-Solution Step 4-3-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 GET 방식에 대해서만 처리하도록 한다. Step 4-3-02. EmployeeController.java 에서 employee 객체를 ModelAttributes 를 이용하여 세팅하여보자. Step 4-3-03. EmployeeController.java 에서 deptInfoOneDepthCategory 객체를 ModelAttributes 를 이용하여 세팅하여보자. @RequestMapping(value = "/insertEmployee.do", method = RequestMethod.GET) public String setupForm(Model model) { @ModelAttribute("deptInfoOneDepthCategory") private Map<String, String> referenceDataOneDepthDept() { return departmentService.getDepartmentIdNameList("1"); } @ModelAttribute("employee") public Employee defaultEmployee(){ return new Employee(); }
  • 8. 8Page l 8 LAB 4-4 Step 4-4-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 POST 방식에 대해서만 처리하도록 한다. 리턴타입은 String 이다. Step 4-4-02. EmployeeController.java 에서 DefaultBeanValidator 를 이용하여 employee 객체 값을 체크한다. Step 4-4-03. EmployeeController.java 에서 DefaultBeanValidator 를 실행한 결과 에러가 있을 경우 addemployee .jsp원래 페이지를 다시 보여주고 에러 메세지 를 뿌려준다. Step 4-4-04. addemployee.jsp 에서 ajaxtags 사용을 위한 ajax:select 코드를 생성한다.
  • 9. 9Page l 9 LAB 4-4-Solution Step 4-4-01. EmployeeController.java 에서 요청되는 insertEmployee.do 와 메소드를 매핑한다. 단 POST 방식에 대해서만 처리하도록 한다. 리턴타입은 String 이다. Step 4-4-02. EmployeeController.java 에서 DefaultBeanValidator 를 이용하여 employee 객체 값을 체크한다. Step 4-4-03. EmployeeController.java 에서 DefaultBeanValidator 를 실행한 결과 에러가 있을 경우 addemployee .jsp원래 페이지를 다시 보여주고 에러 메세지 를 뿌려준다. Step 4-4-04. addemployee.jsp 에서 ajaxtags 사용을 위한 ajax:select 코드를 생성한다. @RequestMapping(value = "/insertEmployee.do", method = RequestMethod.POST) public String insertEmployee( if (bindingResult.hasErrors()) { return "addemployee"; } beanValidator.validate(employee, bindingResult); <ajax:select baseUrl="${pageContext.request.contextPath}/autoSelectDept.do" parameters="depth=2,superdeptid={superdeptid}" source="superdeptid" target="departmentid" emptyOptionName="Select model"/>
  • 10. 10Page l 10 LAB 4-5 Step 4-5-01. EmployeeServiceImpl.java 에서 inertEmployee 메소드는 Employee 를 파라메터로 받아 employeeDao 를 실행한다. (결과는 저장된 갯수) Step 4-5-02. EmployeeDao.java 에서 insertEmployee 메소드는 EgovAbstractDAO에서 제공되는 insert()를 이용하여 Employee.insertEmployee ID 를 가진 sql문을 실행한다. Step 4-5-03. Employee.xml 파일에 insertEmployee 에 해당하는 sql문을 만들어준다. (DBIO 를 이용하여 생성하도록 한다.) Insert 문의 id : insertEmployee 이고 parameterClass 는 com.easycompany.service.Employee 이고 SQL 문은 insert into employee ( employeeid, name, age, departmentid, email, password ) values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# )
  • 11. 11Page l 11 LAB 4-5-Solution Step 4-5-01. EmployeeServiceImpl.java 에서 inertEmployee 메소드는 Employee 를 파라메터로 받아 employeeDao 를 실행한다. (결과는 저장된 갯수) Step 4-5-02. EmployeeDao.java 에서 insertEmployee 메소드는 EgovAbstractDAO에서 제공되는 insert()를 이용하여 Employee.insertEmployee ID 를 가진 sql문을 실행한다. Step 4-5-03. Employee.xml 파일에 insertEmployee 에 해당하는 sql문을 만들어준다. (DBIO 를 이용하여 생성하도록 한다.) Insert 문의 id : insertEmployee 이고 parameterClass 는 com.easycompany.service.Employee 이고 SQL 문은 insert into employee ( employeeid, name, age, departmentid, email, password ) values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# ) return employeeDao.insertEmployee(emp); <!-- TODO [Step 4-1-15] insertEmployee ID 로 정의된 insert 구문을 만들어준다. --> <insert id="insertEmployee" parameterClass="com.easycompany.service.Employee"> insert into employee ( employeeid, name, age, departmentid, email, password ) values ( #employeeid#, #name#, #age#, #departmentid#, #email#, #password# ) </insert> insert("Employee.insertEmployee", emp);
  • 12. 12Page l 12 LAB 4-6 Step 4-6-01. EmployeeController.java 에서 updateEmployee.do 요청시 @RequestMapping 에 value 와 method (GET)를 만들어준다. Step 4-6-02. EmployeeController.java 에서 getEmployeeInfo 메소드에 @RequestMapping을 이용하여 updateEmployee.do 요청되며, 파라미터로 “employeeid” key 가 넘어온다. 이것으로 EmployeeService 의 getEmployeeInfoById를 이용하여 Employee를 구해 리턴한다. (참고: referenceDataOneDepthDept() )
  • 13. 13Page l 13 LAB 4-6-Solution Step 4-6-01. EmployeeController.java 에서 updateEmployee.do 요청시 @RequestMapping 에 value 와 method (GET)를 만들어준다. Step 4-6-02. EmployeeController.java 에서 getEmployeeInfo 메소드에 @RequestMapping을 이용하여 updateEmployee.do 요청되며, 파라미터로 “employeeid” key 가 넘어온다. 이것으로 EmployeeService 의 getEmployeeInfoById를 이용하여 Employee를 구해 리턴한다. (참고: referenceDataOneDepthDept() ) @RequestMapping(value = "/updateEmployee.do", method = RequestMethod.GET) public String defaultUpdateEmployee(@RequestParam("employeeid") String employeeid, ModelMap model) { public Employee getEmployeeInfo(@RequestParam("employeeid") String employeeid) { return employeeService.getEmployeeInfoById(employeeid); }
  • 14. 14Page l 14 LAB 수고 하셨습니다. ^^*