log.info
article thumbnail

경로설정 및 데이터 전달

 

경로 설정

복잔합 경로를 줄여준다

dispatcher-servlet.xml 위치

dispatcher-servlet 파일은 환경을 담당한다. 49번째 줄을 수정하여 sample jsp 파일들의 경로를 줄여준다.

경로를 수정하고 테스트 페이지를 열면 열리지 않는다.

 


webapp이 홈 디렉터리이므로 example 폴더의 하위 폴더들을 webapp 밑으로 옮겨준다.
옮긴 후 테스트 페이지를 열면 정상적으로 열린다.

 

 

데이터 전달

JSP 파일 생성

데이터 입력을 위한 화면을 만들어준다.

 

우선 jsp 파일을 넣어줄 폴더를 생성한다.

 

// deptWrite.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>

<style>
table {
	width: 400px;
	border-collapse: collapse; /* 셀 간격을 없앰 */
	}
th, td {
	border: 1px solid #cccccc;
	padding: 5px;
}
</style>

<body>
<form name="frm" method="post" action="">
<table>
	<tr>
		<th>부서번호</th>
		<td><input type="text" name="deptno"></td>
	</tr>
	<tr>
		<th>부서이름</th>
		<td><input type="text" name="dname"></td>
	</tr>
	<tr>
		<th>부서위치</th>
		<td><input type="text" name="loc"></td>
	</tr>
	<tr>
		<th colspan="2">
		<button type="submit">저장</button>
		</th>
</table>
</form>
</body>
</html>

위와 같이 jsp 파일을 작성해준다.

 

controller 생성

클래스에 Controller 어노테이션을 붙여주는 것이 제일 중요하다.

 

controller 경로

 

어노테이션
@ : 시스템이 인식하는 주석으로 설정한 주석에 따라 기능 부여를 한다.
@Controller : 웹 주소 기록한 것을 인식하게 함
@RequestMapping : 웹 주소를 기록

 

@Controller
public class DeptController {
	
	@RequestMapping(value="/deptWrite.do")
	public String deptWrite() {
		
		return "dept/deptWrite";
	}
}

위와 같이 controller를 작성하고 서버를 가동하여 테스트한다.

 

위와 같이 입력화면이 나타난다.

이때 데이터 처리에 대한 작업은 아직 하지않았으므로 저장 버튼을 클랙했을 때 아무일도 일어나지 않는다.

 

 

데이터 처리

JSP 파일 수정

// deptWrite.jsp

<form name="frm" method="post" action="deptWriteSave.do">

form 태그 action 속성에 deptWriteSave.do 추가

 

메서드 추가

@Controller
public class DeptController {
	
	@RequestMapping(value="/deptWrite.do")
	public String deptWrite() {
		
		return "dept/deptWrite";
	}
	
    /* 입력화면에서 저장 버튼 클릭하면 실행되는 메서드 */
	@RequestMapping(value = "/deptWriteSave.do")
	public String deptWriteSave(String deptno, String dname, String loc) {
		
		System.out.println("부서번호 : " + deptno);
		System.out.println("부서이름 : " + dname);
		System.out.println("부서위치 : " + loc);
		
		return "";
	}

}

controller 파일에 데이터 처리를 위한 메서드를 추가해준다.

입력화면에서 저장버튼을 눌러 해당 메서드가 실행되면 html의 이름값을 자바가 인식하여 매개변수로 데이터가 들어간다.

 

서버를 가동해서 테스트해본다.

입력 화면
콘솔창

 

정상적으로 동작하는 것을 확인할 수 있다.

 

만약에 처리할 데이터가 많아진다면 어떻게 될까?

매개변수로 하나씩 받을 수는 있으나 굉장히 번거로운 작업일 될 것이다.

그래서 전자정부프레임워크에서는 VO 클래스를 사용하여 데이터를 처리한다.

 

VO 클래스는 서비스 패키지에 생성해준다.

 

package egovframework.example.sample.service;

public class DeptVO {
	
	// 객쳅지향 : 캡슐화(접근지정자)
	private String deptno;
	private String dname;
	private String loc;
	
	public String getDeptno() {
		return deptno;
	}
	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	
}

 

캡슐화된 데이터에 접근하기 위해서 getter, setter를 생성한다.

 

이클립스에서 제공하는 기능을 사용하여 쉽게 생성할 수 있다.

 

@RequestMapping(value = "/deptWriteSave.do")
	public String deptWriteSave(DeptVO vo) {
		
		System.out.println("부서번호 : " + vo.getDeptno());
		System.out.println("부서이름 : " + vo.getDname());
		System.out.println("부서위치 : " + vo.getLoc());
		
		return "";
	}

DeptController 클래스의 deptWriteSave 메서드를 위와 같이 수정해주고 서버를 가동하면 동일하게 정삭작동 하는 것을 볼 수 있다.

 

데이터가 처리되는 과정은 다음과 같다.

저장 버튼 클릭 ➡️ 액션에 설정된 주소로 데이터 전송 ➡️ 컨트롤러에서 해당 주소의 매개변수(VO 객체)로 데이터 전달
➡️ 똑같은 이름을 가진 매개변수를 찾아 데이터 들어감
profile

log.info

@EUNAH.J

🧾 공부하면서 기록하는 블로그

검색 태그