new -> Spring Legacy Project -> 이름 설정-> Spring MVC project -> 저장될 패키지 입력 (3단 구성 - 한번 정한 패키지명은 절대 바꾸지 말것)
@Controller // 이 클래스는 컨트롤러이다.
public class HomeController {
// Syso 같은 녀석
// 어느 클래스에서 발생한 로그인지 알려준다.
// 설정에 따라서 파일 저자도 가능하다.
Logger logger =LoggerFactory.getLogger(HomeController.class);
// 이전에 addr 역할(uri-ctx = addr 이런거 안해도 된다.)
// GET, POST 방식도 지정할 수 있다. (생략 = 둘다 받아준다)
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
// 메서드명은 아무거나 해도 되지만 일반적으로 요청명과 통일 시킨다.
// MVC 의 모델 아님,RequestDispatcher 의 역할
model.addAttribute("msg","스프링 시작 테스트"); // view에 보낼 이름과 값을 담는다.
return "home"; // webapp/web-inf/views/home.jsp 로 보내라
// @RequestParam 은 요청의 파라메터를 특정 변수에 담아주는 역할을 한다.
// 이때 보내는 파라메터 명과 변수명은 일치해야 한다.
@RequestMapping(value = "/calc")
public String calc(Model model,
@RequestParam String val1, @RequestParam String val2,@RequestParam String oper)
JAVA 와 DB 를 연결 해보는 법을 알아보자.
위와 같이 복잡한 과정을 하기 보다는 누군가의 코드를 가져다 쓰는 것이 효율 적이다.
JDBC (Java Data Base Connectivity)
라이브러리 추가
pom.xml -> dependencies 태그안에 가져올 라이브러리를 추가해 준다.
//Controller
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
logger.info("컨트롤러 접근");
// DB 에 접근해서 접속이 성공되었는지 확인
// 1. Service 에게 일을 시킨다.
HomeService service = new HomeService();
boolean success= service.dbConnect();
model.addAttribute("result", success);
// 성공여부를 VIEW 에 전송
return "home";
--------------------------------------
//Service
public boolean dbConnect() {
logger.info("서비스 명령 받음!!");
// DB 를 사용해야 하는일인가?
HomeDAO dao = new HomeDAO();
return dao.dbConnect(); // 서비스에서는 DAO에게 접속후 성공여부를 받아서 바로 Controller 에게 던진다.
}
-------------------------------------
//DAO
public boolean dbConnect() {
logger.info("DAO 접근 완료");
// DB 접근 순서
// 1. DB 접근을 위한 정보를 준비
String username="web_user";
String pw = "pass";
String url = "jdbc:mariadb://localhost:3306/gdj70";
String driver = "org.mariadb.jdbc.Driver";
boolean success =false;
try {
// 2. DM에게 내용을 전달 한다.
Class.forName(driver); // DB 접속시 사용할 라이브러리 클래스를 알려준다.
// 3. DB를 다룰 권한을 가져온다.
Connection conn =DriverManager.getConnection(url, username, pw);
// Connection 객체를 얻어온다면 접속 성공
if (conn !=null) {
success=true;
logger.info("접속 성공 : "+conn);
// 4. 할일을 다 하면 자원을 반납 한다.
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
// 예외가 발생 하면 실패
}
return success;
}
Thread 와 마찬가지로 Connection 또한 Pool을 사용하여 Connection 을 조금 더 효율 적으로 사용 할 수 있다.
// 1-1. context.xml 자체를 자바 객체로 변환
Context ctx = new InitialContext();
// 1-2. Context.xml 안에 있는 Resource 태그를 찾아 온다.(이름을 이용해서)
// java:comp/env/ 자바 컴파일 환경에서 사용하겠다.
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MariaDB");
// 2. 그걸로 DB 접속 요청(커넥션 가져오기)
Connection conn=ds.getConnection();