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

국비 지원 개발자 과정_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>

댓글