-
초보자를 위한 Ajax통신으로 메뉴불러오기_(1)Study/Spring 2023. 3. 7. 22:30반응형
현재 회사에서 인사조회 관련 기능을 만들고 있는데,
인사조회를 하다보면 특정 팀을 누르면 그팀에 해당하는 사람들을 DB에 끌어와 화면에 뿌려줘야 하는 경우가 있는데,
내가 이번에 구현했던 기능이다.
회사플젝코드를 가져올 수 는 없어서 블로그에 글을 쓰기 위하여 간단하게 구현 하였다!
1.백단 로직 만들기
나는 우선 DB를 불러와 jsp에 넘겨주는 비지니스로직을 먼저 구현 하였다!
(1)DB 작성
CREATE TABLE employee( name VARCHAR(30) NOT NULL, age INT, number VARCHAR(30) NOT NULL, part VARCHAR(30) NOT NULL, rank VARCHAR(30) )DEFAULT CHARSET=UTF8
(2)VO작성
public class employeeVO { private String name; private int age; private String number; private String part; private String rank; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getPart() { return part; } public void setPart(String part) { this.part = part; } public String getRank() { return rank; } public void setRank(String rank) { this.rank = rank; } }
vo,dto... 여러 뜻이 있지만 저는 단순하게 DB에서 불러온 값을 담아주는 그릇 으로 생각 하는게 초보자들이 이해 하기에 쉬울듯 함
(3)mapper.xml 작성
<select id="employeeRead" resultType="ddi.main.domain.employeeVO"> SELECT * FROM employee where part=#{part}; </select>
특정 부서를 눌렀을때 그 부서에 해당하는 직원들 리스트를 불러와야 하기 때문에 'part' 구분 요소로 주었음.
(4)mapper 작성
@Mapper("memberMapper") public interface memberMapper { public List<employeeVO> employeeRead(String part); }
스프링또는 전자정부프레임 워크에서 mapper임을 인지 할 수 있게 어노테이션을 붙여준다.
mapper.xml의 id 와 mapper 인터페이스의 메서드 이름이 같아야 함.
List<employeeVO> 뜻은 받아온 데이터가 한개 이상이기때문에 List 형태로 받아와야 하고 employeeVO그릇에 담아서 받아와야 한다는 의미.
(5)Service 와 ServiceImpl 작성
public interface memberService { public List<employeeVO> employeeRead(String part); }
@Service("memberService") public class memberServiceImpl implements memberService{ @Autowired private memberMapper mapper; @Override public List<employeeVO> employeeRead(String part) { return mapper.employeeRead(part); } }
service는 mapper와 비슷한 형태로 선언해주면 되는데, 메소드명은 각각 다르게 이름지어주어 좋다고 하는함 필자는 나중에 헷갈리거 같아서 통일하였음...
참고로 service는 비지니스 로직을 작성하면 되고, mapper는 DB접근 로직을 작성하면 됨.
service에서 제일 중요한건 serviceImpl 인거 같음
service인터페이스를 구현한 실질적인 비지니스로직을 구현 하는 클래스 이다. 위에 소스를 보면 알겠지만 service인터페이스를 상속받아 구현 하였음. 이때 mapper를 @Autowired로 주입해주고 mapper에 정의한 메서드를 불러옴.
잊지말아야할게 @Service 어노테이션을 설정해주어 스프링이 인식할수 있게 해야함.
(5)Controller 작성
@Controller public class MainController { @Autowired private memberService service1; @GetMapping("/test.do") public String testPage() { System.out.println("test.do 조회 페이지 들어옴"); return "test"; } @RequestMapping(value = "/testPost.do") public String testPostPage(Model model,String part) { System.out.println("testPost.do 페이지 들어옴"); model.addAttribute("user",service1.employeeRead(part)); return "jsonView"; } }
controller를 작성할때는 어노테이션을 꼭 써줘야 클라이언트측에서 요청이 들어 왔을때 @Controller 부분을 먼저 살펴보고 진행 하므로 꼭 선언하기!
여기까지는 form 형태로 데이터를 주고받는 스프링의 기본CRUD와 비슷하지만 특이한 점은 return을 jsonView로 한다는것!
jsonView 형태는 ajax 통신을 할때 받아온 데이터를 json형태로 넘겨줄때 사용함.
(참고로 jsonView를 사용할려면 추가적인 설정이 필요하니 구글링하여 추가설정을 하고 진행 하는게 좋을듯...)
service를 @Autowired로 주입 받아 해당 컨트롤러에서 service에서 정의한 메서드를 불러와 model에 담으면
그걸 json형태로 ajax통신의 결과값으로 넘겨준다.
ajax통신에서 결과값으로 controller에서 넘겨 받은 데이터를 어케 처리하는지는 다음번에...
반응형'Study > Spring' 카테고리의 다른 글
초보자도 만들 수 있는 자바로 엑셀 기능 만들기 (0) 2023.04.08 초보자도 간단하게 웹페이지에 이미지 보여주기(로컬 폴더에 있는 이미지 JSP에서 보여주기) (1) 2023.03.19 초보자를 위한 AJAX통신으로 회원가입기능 간단히 만들기 (0) 2023.01.03 AJAX 너는 뭐니? 도대체!!! (0) 2022.12.22 초보자를 위한 스프링 시큐리티 커스텀 구현하기(UserDetails, UserDetailsService, AuthenticationProvider customizing 하기) (0) 2022.12.21