유디의 공간정보·개발일기
5. 0907_Spring MVC(계속), Spring까지 같이 사용하기 본문
ctrl + t 를 누르고 비교할 파일들을 선택 - 마우스 우클릭 - Compared - each other
-- 두 파일을 비교할 수 있다.
-- 다른 부분이 있으면 ㅁ로 스크롤바 옆에 보여줌
- ctrl + F11 : 서버 실행
- 실무에서는 보안때문에 webapp 폴더에 jsp파일을 두지 않는다.
url을 따라 아무나 접근이 가능하기 때문에
- name을 선택하고 ctrl + shift + R : 해당 이름의 파일을 찾아서 오픈해 줌
- 6번째 줄 : Spring bean으로 생성하기 위한 Annotation
- 9번째 줄 " " : url
- 11번째 줄 " " : jsp파일 이름
- Spring MVC 개요
컨트롤러 : HomeController.java, EmpController.java 파일
뷰 : views폴더 안에 만들었던 emp-list.jsp파일
- 왜 이렇게 복잡하게 해야 할까?
보안 때문
- @Controller -> HandlerMapping
- 같은 패키지 안에 Controller 파일이 두 개가 있어서 Mapped url이 두개로 나타남
- web.xml에 xml파일 이름이 들어있음
- alt + ←, → : 지금 열린 페이지와 이전 페이지를 이동하게 함
MyBatis와 Spring을 쓰기
- 패키지 만들어서 파일 넣어둠
- root-context.xml 코드 수정
- servlet-context.xml 코드 수정
- emp-list.jsp / 전체사원목록 출력, 이름만 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>전체사원목록 출력</h1>
<!-- <%= request.getAttribute("list") %> -->
<c:forEach items="${list}" var="vo">
${vo.lastName}<br>
</c:forEach>
</body>
</html>
다시 수정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>100번 부서 사원목록출력</h1>
<c:forEach items="${list}" var="vo">
${vo.lastName}<br>
</c:forEach>
</body>
</html>
- EmpVO에 Getter and Setter 생성
- 이게 뭐라고 계속 서버 404에러떠서 안되다가 마지막에 됨,, (톰캣 예민한자식,,약올리나,,)
- deptId 메서드로 참조하게 바꿈
- EmpController 코드
package lx.edu.team8.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import lx.edu.team8.dao.EmpDAO;
import lx.edu.team8.vo.EmpVO;
@Controller//spring bean을 생성하는 annotation
public class EmpController {
@Autowired
EmpDAO dao;
@RequestMapping("emp-list.do")//url
public String getForm(HttpServletRequest req) throws Exception {
//이 메서드에서 무엇을 해야하나?
//EmpDAO를 가져오고 Autowired를 걸면 된다.
//db의 데이터를 가져온다.
List<EmpVO> list = dao.getEmpListByDeptId(100);
//list를 jsp에 전달해야 한다. -> request에 넣어둔다.
req.setAttribute("list", list);
return "emp-list";//jsp파일 이름
}
}
- home.jsp 코드 수정
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
<form action="emp-list.do">
dept:<input name="deptId"><br>
<input type="submit" value="부서원보기">
</form>
</body>
</html>
- 코드 설명
<form action="emp-list.do">
<!-- 액션태그대로 서버에 요청이 감->EmpController의 @requestmapping이 작동->그 안의 get메서드가 실행 -->
dept:<input name="deptId"><br>
<!-- name: 서버에 전송되는 부분의 key -->
- Maaped url이 잘 연결돼서 전송됨을 볼 수 있다.
- input 박스에 부서번호를 입력한대로 부서원이 나오도록 하기
- addrbook 방명록
- dbeaver에 sql코드 입력
use hr;
CREATE TABLE addrbook (
ab_id int(11) NOT NULL,
ab_name varchar(15) NOT NULL,
ab_email varchar(50) DEFAULT NULL,
ab_comdept varchar(20) NOT NULL,
ab_birth varchar(10) NOT NULL,
ab_tel varchar(20) DEFAULT NULL,
ab_memo varchar(100) DEFAULT NULL,
PRIMARY KEY (ab_id)
);
select * from addrbook;
- 폴더 생성하고 파일 복붙
- AddrbookController.java 클래스 생성
package lx.edu.team8.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AddrbookController {
@RequestMapping("addrbook_form.do")
public String getForm() throws Exception {
return "addrbook/addrbook_form";//.jsp는 생략
}
}
http://localhost:9000/team8/register_addrbook.do
- 변수를 VO에 가져오고 toString()해줌
- 데이터 입력하기
VO에 getter and setter 만들기 전이라 값을 넣고 저장버튼 누르면 null값이 나옴
- getter and setter 만들어주기
다시 표에 데이터 넣고 저장 버튼 눌러서 실행하면 입력한 데이터가 그대로 잘 들어온 것을 확인할 수 있다.
- AddrbookDAO
- 코드 비교
- css 추가
- addrbook_form.jsp 에 코드 수정
- 새로고침하면 css가 적용됨
- mapper-addrbook.xml 생성
insert 태그로 insert sql문 넣기 (아니 여태 안되다가 되는건 뭐야..? 농락이야?ㅠㅠ?)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper-addrbook">
<insert id="create" parameterType="lx.edu.team8.vo.AddrbookVO">
insert into addrbook(ab_name, ab_email, ab_comdept, ab_birth, ab_tel, ab_memo)
values(#{abName}, #{abEmail}, #{abComdept}, #{abBirth}, #{abTel}, #{abMemo});
</insert>
</mapper>
- 브라우저에서 다시 데이터 입력하고 저장버튼을 누르면
이클립스 콘솔창과 dbeaver(select실행)에 입력한 정보가 들어와있다.
- 실습하기(과제6)
목록을 출력하는 기능을 구현하시오.
1. list를보여주는 jsp를 복사합니다.
2. 컨트롤러의 메서드를 구현합니다.
3. 테스트합니다.
4. 등록폼에서 목록으로 요청될 수 있도록 수정합니다.
'Spring, Mybatis' 카테고리의 다른 글
7-1. 0909_ Spring AOP, logger의 패턴과 level(info, debug) (0) | 2021.09.09 |
---|---|
6. 0908_ Spring MVC(계속) (0) | 2021.09.09 |
4. 0906_Spring MVC (0) | 2021.09.06 |
3-2. 0903_ Mybatis개요(계속), SQL RDBMS, DBeaver (1) | 2021.09.03 |
3-1. 0903_ MyBatis 더 알아보기 (0) | 2021.09.03 |