본문 바로가기
국비학원/수업기록

국비 지원 개발자 과정_Day58

by 루팽 2023. 2. 20.

<STS Maven 테스트 - HomeController.java>

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

// 서블릿에선 @WevServlet -> Controller + RequestMapping
// 여기선 각각 나누어서 표시함
@Controller
@RequestMapping("/home/*")
public class HomeController {
	// 테스트 URL 경로: http://localhost:8000/home/index
	@GetMapping("index")
	public String home() {
		return "home/index";
	}
}

 

<STS Maven 테스트 - index.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>home[Maven]</title>
</head>
<body>
	<h3>home index.jsp 페이지입니다.</h3>
</body>
</html>

 

<STS Gradle 테스트 - HomeController.java>

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

// 컨트롤 계층을 의미하는 어노테이션 추가 -> request와 response 누릴 수 있음
// 단순히 bean을 관리받는다는 점 외에도 요청객체와 응답객체를 주입받을 수 있다
@Controller
// web.xml대신 자바코드에 직접 추가 가능함(단점: 전체적인 빈 목록을 볼 수 없음)
@RequestMapping("/home/*") // url-pattern에 등록했던 url주소 값으로 추가함
public class HomeController {
	// 테스트 URL 경로: http://localhost:7000/home/index
	@GetMapping("index")
	public String home() {
		return "home/index";
	}
}

 

<STS Gradle 테스트 - index.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>
<body>
	Gradle Project - index.jsp 테스트
</body>
</html>

 

<div태그에 문자 넣기 - dom1.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>
<body>
	<div id="root"></div>
	<script type="text/javascript">
		const rootElement = document.querySelector("#root");
		const h1Element = document.createElement("h1");
		h1Element.textContent = "DOM Make";
		rootElement.appendChild(h1Element);
	</script>
</body>
</html>
<!-- 
 확장자는 jsp이지만 mime type이 html이므로 html문서이다
 -->

 

<div태그에 문자넣기 react - dom2.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>
<body>
	<div id="root"></div>
	<script crossorigin
		src="https://unpkg.com/react@18/umd/react.development.js"></script>
	<script crossorigin
		src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
	<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
	<script type="text/babel">
		const rootElement = document.querySelector("#root");
		<!-- h1Element.textContent = "DOM Make" <- 이것과 아래(22번)코드는 같은효과
			React는 react.development.js에서 참조하는 객체임
			rootElement.appendChild(h1Element) <- 이것과 두번째 파라미터는 같은효과  -->
		const h1Element = React.createElement("h1", { children: "DOM Make" });
		<!-- Client side rendering시 앞부분이 주입할 대상이고, 뒷부분이 root의 위치임
			react-dom.development.js에서 참조하는 객체임 -->
		ReactDOM.createRoot(rootElement).render(h1Element);
	</script>
</body>
</html>
<!-- 
 확장자는 jsp이지만 mime type이 html이므로 html문서이다
 
 바닐라 스크립트는 순수한 자바스크립트를 의미
 특정 라이브러리나 프레임워크를 사용하지 않는 그 자체의 자바스크립트
 
 샌드박스 - playground이다
 코드샌드박스: React 등 다양한 환경에대한 기본설정이 다 되어있다
 -->

 

게시글목록-list,jsp(첫페이지, select문)

   글쓰기버튼

      -화면 writeForm.jsp(새글쓰기, insert, 글번호채번)

   조회버튼

      -list.jsp(조건 결과)

   제목클릭

      -read.jsp(상세보기, selectOne, 글번호 가져오기)

          -댓글 쓰기(writeForm 재사용, insert) → (글번호/그룹번호-차수-순번)

          -글수정

          -글삭제

          -목록

 

<게시글목록 - 아우터조인 테스트>

SELECT deptno, ename FROM emp;

SELECT deptno, dname FROM dept;

  SELECT d.deptno, e.ename, d.dname
    FROM emp e, dept d
   WHERE e.deptno = d.deptno
ORDER BY deptno;

SELECT deptno FROM dept
MINUS
SELECT deptno FROM emp;

  SELECT d.deptno, e.ename, d.dname
    FROM emp e, dept d
   WHERE e.deptno(+) = d.deptno
ORDER BY deptno;

 

<게시글목록 - 아우터조인 board>

SELECT * FROM board_master_t;

SELECT * FROM board_sub_t;

  SELECT m.bm_no,
         m.bm_title,
         m.bm_writer,
         s.bs_file,
         m.bm_hit,
         m.bm_pos,
         m.bm_step
    FROM board_master_t m, board_sub_t s
   WHERE m.bm_no = s.bm_no(+)
ORDER BY m.bm_group DESC, m.bm_step ASC;

 

<게시글목록 - board.xml>

<?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="com.mybatis.mapper.BoardMapper">
	<!-- 게시글목록 가져오는  쿼리문 -->
	<select id="getBoardList" parameterType="java.util.HashMap"
		resultType="map">
		  SELECT m.bm_no,
		         m.bm_title,
		         m.bm_writer,
		         s.bs_file,
		         m.bm_hit,
		         m.bm_pos,
		         m.bm_step
		    FROM board_master_t m, board_sub_t s
		   WHERE m.bm_no = s.bm_no(+)
		ORDER BY m.bm_group DESC, m.bm_step ASC
	</select>
</mapper>

 

<게시글목록 - MyBatisConfig.xml>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.OracleDriver" />
				<property name="url"
					value="jdbc:oracle:thin:@localhost:1521:orcl11" />
				<property name="username" value="scott" />
				<property name="password" value="tiger" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 업무에따라 관리할 쿼리문을 담을 xml문서의 물리적인 위치와 파일명을 등록할것 -->
		<mapper resource="com/mybatis/mapper/test.xml" />
		<mapper resource="com/mybatis/mapper/member.xml" />
		<mapper resource="com/mybatis/mapper/board.xml" />
		<mapper resource="com/util/book.xml" />
		<mapper resource="com/util/member2.xml" />
	</mappers>
</configuration>

댓글