9:15 경 학원 도착
<9:30 1교시>
서버를 깃허브에 올려보기.
gitignore에 붙여 넣을 내용 중에는 jar만 제외하고 ignore 한다고 참고
/.metadata/
.classpath
.project
#Servers 폴더도 제외하기
/Servers/
# upload 폴더에 업로드된 파일을 추적하지 않도록 설정
upload/
# Created by https://www.toptal.com/developers/gitignore/api/java,eclipse,windows,web,maven
# Edit at https://www.toptal.com/developers/gitignore?templates=java,eclipse,windows,web,maven
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
#.project
### Eclipse Patch ###
# Spring Boot Tooling
.sts4-cache/
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# /WEB-INF/lib/ 폴더 안에 있는 jar 파일은 예외로 하기
!**/WEB-INF/lib/*.jar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# Eclipse m2e generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.toptal.com/developers/gitignore/api/java,eclipse,windows,web,maven
프로젝트 이름에다가 우클릭 > Team > Add to Index 하면 해당 프로젝트만 스테이지에 올라간다.
스테이지에 올려만 놓는거는 현재 폴더의 git에 commit 된 상태고 아직 remote 연결은 안 된 상태여서 문제될 거 없음.
집 환경에서 새로 Server 연결하고 올린 다음에 여기에서 git clone 하고 clone 할 경로 찾아서 연결하면 됨.
import 하고 나면 에러가 나는데 웹프로젝트 모양을 갖추고 있지 않아서 그럼.
웹 프로젝트로 만드는 방법 (우리가 공부하던 자바 21버전+다이나믹 웹 모듈 6.0버전)
마우스 우클릭 > properties > Project Facets > convert to faceted mode> java 클릭, 우측에 runtime에서 apache Tomcat 선택, 왼쪽에 dynamic web module ver6.0 선택 > apply and close
하면 웹 프로젝트의 모양을 갖춰서 에러가 사라져 있음
<10:30 2교시>
어제 수정 기능하던거 이어서
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/updateform.jsp</title>
</head>
<body>
<div class="container">
<h1>회원정보 수정 폼</h1>
<form action="update.jsp" method="post">
<div>
<label for="num">번호</label>
<input type="text" name="num" id="num"/>
</div>
<div>
<label for="name">이름</label>
<input type="text" name="name" id="name"/>
</div>
<div>
<label for="addr">주소</label>
<input type="text" name="addr" id="addr"/>
</div>
<button type="submit">저장</button>
</form>
</div>
</body>
</html>
Dao에 추가한 코드 : 이게 없어서 못하고 있었다... ㅠㅠ
//매개변수로 전달되는 회원 한명의 정보를 리턴하는 메소드
public MemberDto getData(int num){
MemberDto dto=null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//Connection Pool 로 부터 Connection 객체 하나 가져오기
conn = new DbcpBean().getConn();
//실행할 sql 문 작성
String sql = """
select num, name, addr
from member
where num=?
""";
pstmt = conn.prepareStatement(sql);
// ? 에 값 바인딩할게 있으면 여기서 하기
pstmt.setInt(1, num);
//sql 문 실행하고 결과를 ResultSet 객체로 리턴받기
rs = pstmt.executeQuery();
while (rs.next()) {
dto=new MemberDto();
dto.setNum(num);
dto.setName(rs.getString("name"));
dto.setAddr(rs.getString("addr"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
return dto;
}
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.member.dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//Get 방식 파라미터로 전달되는 회원 번호 추출(updateform.jsp?num=x)
int num= Integer.parseInt(request.getParameter("num"));
//num에 해당하는 회원 정보를 MemberDao 객체를 이용해서 얻어온다
MemberDto dto=new MemberDao().getData(num);
//아래의 내용으로 응답된다
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/updateform.jsp</title>
</head>
<body>
<div class="container">
<h1>회원정보 수정 폼</h1>
<form action="update.jsp" method="post">
<div>
<label for="num">번호</label>
<input type="text" name="num" id="num" value="1"/>
</div>
<div>
<label for="name">이름</label>
<input type="text" name="name" id="name" value="이름"/>
</div>
<div>
<label for="addr">주소</label>
<input type="text" name="addr" id="addr" value="주소"/>
</div>
<button type="submit">저장</button>
</form>
</div>
</body>
</html>
updateform.jsp
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.member.dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//Get 방식 파라미터로 전달되는 회원 번호 추출(updateform.jsp?num=x)
int num= Integer.parseInt(request.getParameter("num"));
//num에 해당하는 회원 정보를 MemberDao 객체를 이용해서 얻어온다
MemberDto dto=new MemberDao().getData(num);
//아래의 내용으로 응답된다
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/updateform.jsp</title>
</head>
<body>
<div class="container">
<h1>회원정보 수정 폼</h1>
<form action="update.jsp" method="post">
<div>
<label for="num">번호</label>
<input type="text" name="num" id="num" value="<%=dto.getNum()%>" readonly/>
</div>
<div>
<label for="name">이름</label>
<input type="text" name="name" id="name" value="<%=dto.getName() %>"/>
</div>
<div>
<label for="addr">주소</label>
<input type="text" name="addr" id="addr" value="<%=dto.getAddr() %>"/>
</div>
<button type="submit">저장</button>
<button type="reset">취소</button> <!-- 작성하던 내용을 원래 상태로 되돌림 -->
</form>
</div>
</body>
</html>
우리는 개발자니까 출력한대로 잘 나온다고 안심하지말고 소스까지 살펴볼 필요가 있다.
<11:30 3교시>
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.member.dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//1. 폼으로 전송되는 번호, 이름과 주소 추출
int num=Integer.parseInt(request.getParameter("num"));
String name=request.getParameter("name");
String addr=request.getParameter("addr");
//2. MemberDto 객체에 담기
MemberDto dto = new MemberDto(num, name, addr);
//2. DB에 수정하기
MemberDao dao=new MemberDao();
boolean isSuccess=dao.update(dto);
//new MemberDao().update(dto)라고 해도 됨
//3. 응답하기
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="container">
<h3>알림</h3>
<%if(isSuccess){%>
<p>정보를 수정했습니다.</p>
<a href="list.jsp">목록보기</a>
<%}else{%>
<p>데이터 수정 실패</p>
<a href="updateform.jsp">다시 작성</a>
<%}%>
</div>
</body>
</html>
update.jsp
처음에 script 태그를 닫지 않아서 오류가 났고,
alert("");쌍따옴표랑 세미콜론 안써서 알림창이 보이지 않았었음
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.member.dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//1. 폼으로 전송되는 번호, 이름과 주소 추출
int num=Integer.parseInt(request.getParameter("num"));
String name=request.getParameter("name");
String addr=request.getParameter("addr");
//2. MemberDto 객체에 담기
MemberDto dto = new MemberDto(num, name,addr);
//2. DB에 수정하기
boolean isSuccess=new MemberDao().update(dto);
//3. 응답하기
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script>
<%if(isSuccess){%>
//알림창을 띄우고
alert("정보를 수정했습니다");
//list.jsp 페이지로 이동
location.href="list.jsp"
<%}else{%>
//알림창을 띄우고
alert("정보 수정 실패");
//updateform.jsp 페이지로 이동하면서 num이라는 파라미터명으로 수정할 회원의 번호를 가지고 간다
location.href="updateform.jsp?num=<%=num%>";
<%}%>
</script>
</body>
</html>
오늘의 과제가 주어짐 (12:10~15:30)
<맛집 목록만들기>
1. 데이터베이스에 테이블 만들기
2. 데이터베이스에 시퀀스 만들기
+ 과제 : <select> 요소를 이용해서 음식을 한식, 중식, 양식, 일식, 기타 중에서 고르게 하기
이후 작업 계획
1. 이클립스에서 webapp 하위 폴더로 food 폴더를 만들고
2. java에
- test.food.dto 패키지에 FoodDto.java
- test.food.dao 패키지에 FoodDao.java
3. jsp 파일들 만들기
/food/list.jsp
/food/insertform.jsp
/food/insert.jsp
/food/updateform.jsp
/food/update.jsp
/food/delete.jsp
FoodDto
package test.food.dto;
public class FoodDto {
private int num;
private String type;
private String name;
private int price;
public FoodDto() {}
public FoodDto(int num, String type, String name, int price) {
super();
this.num = num;
this.type = type;
this.name = name;
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
list.jsp
<%@page import="java.util.List"%>
<%@page import="test.food.dto.FoodDto"%>
<%@page import="test.food.dao.FoodDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//FoodDao 객체의 getList로 목록 가져오기
FoodDao dao =new FoodDao();
List<FoodDto> list= dao.getList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="container">
<a href="insertform.jsp">목록에 추가</a>
<table>
<thead>
<tr>
<th>번호</th>
<th>종류</th>
<th>이름</th>
<th>가격</th>
<th>수정</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<% for(FoodDto tmp:list){ %>
<tr>
<td><%=tmp.getNum() %></td>
<td><%=tmp.getType() %></td>
<td><%=tmp.getName() %></td>
<td><%=tmp.getPrice() %></td>
<td><a href="updateform.jsp?num=<%=tmp.getNum()%>">수정</a></td>
<td><a href="delete.jsp?num=<%= tmp.getNum()%>">삭제</a></td>
</tr>
<%} %>
</tbody>
</table>
</div>
</body>
</html>
<12:30 4교시>
하던 중에 에러난 부분
테이블 구성 부분
'공부의 기록 > 자바 풀 스택 : 수업내용정리' 카테고리의 다른 글
자바 풀 스택 1/8 오전 기록 033-1 (0) | 2025.01.08 |
---|---|
자바 풀 스택 1/7 오후 기록 032-2 (0) | 2025.01.07 |
자바 풀 스택 1/6 오후 기록 031-2 (0) | 2025.01.06 |
자바 풀 스택 1/6 오전 기록 031-1 (0) | 2025.01.06 |
자바 풀 스택 1/3 오전 기록 030-1 (1) | 2025.01.03 |