개인 공부/TIL

TIL #220521 #JSP

kaleb 2022. 5. 22. 16:36
728x90

즐거운 토요일

시험치고와서 다시 JSP복습을 하려고합니다!!

시험 문제 풀때 손에 감칠맛이 있긴 했는데… 일단 자소서잘 준비하고 기대를 해보도록 하겠습니다.

 

JSP 전체 복습

 

mysql 환경변수

 

윈도우 버전 MySQl을 설치하고나면 환경변수 를 설정해주어야 합니다.

환경변수를 설정하면 경로를 모두 입력하지 않아도 찾아서 해주기때문에 필요합니다.

/c/programfiles에서 MySql이 설치 되어 있는 경로를 찾아줍니다.

bin까지의 경로에 접근하고 경로값을 복사해줍니다.

윈도우 검색창에서 시스템 환경변수편집 - 환경변수 - 시스템변수의 path를 찾아 편집 - 새로 만들기를 하고

복사해두었던 경로를 입력해주고 확인!

 

cmd 창에서 mysql -V를통해서 버전을 입력했을때 결과 값이 나올 경우 설정을 잘 해주신 겁니다.

 

getElementbtId(””); :

태그의 id속성을 사용하여 해당태그에 접근하여 하고 싶은 작업을 할 때 사용하는 함수입니다.

ex)

let divCheckIdResult = document.getElementById("checkIdResult");

 

JDBC의 insert구문을 사용할 수 있는 insertForm과 insertPro를 만들어 봅시다.

 

구상

자료흐름도를 이용해서 어떻게 진행되는지 생각해봅시다.


JDBC 연동을다 하고 났을때

java.lang.classnotfoundexception com.mysql.cj.jdbc.driver 다음과 같은 에러가 나올 경우에는 어떻게 해야 할까요?

 

말그대로 driver class가 있는 곳을 이클립스가 찾지 못해서 발생하는 에러입니다.

이럴 경우에는

Mysql 홈페이지에서 connector J를 다운 받아

압축을 해제한 후에 mysql-connector-java-[version]-bin.jar이라는 파일을

programfiles - java - jdk[version]- jre- lib - ext 에 복사한 후에

이클립스 내의 해당 프로젝트내에서 project -built path - Add External JARS… 에서 복사해둔 파일을 찾아서 연결해주면 diver class를 잘 찾아 내는것을 확인 할 수 있습니다.!

 

 

회원 정보 입력 코드 (insertForm) 연습

<body>
<h1>회원 정보 입력</h1>
	<form action="insertPro.jsp" method="post"> 
	<!-- insertPro.jsp로 폼 데이터를 method(post) 방식으로 넘겨줍니다.  -->
		<table border="2">
		<tr>
			<th>이름</th>
			<td><input type="text" name="name"></td>
			<!-- tr칸 안에서는 행(가로방향)으로 값이 진행됩니다. -->
		</tr>
		<tr>
			<th>나이</th>
			<td><input type="text" name="age"></td>
		</tr>
		<tr>
			<th>성별</th>
				<td>
					<input type="radio" name="gender" value="남">남
					<input type="radio" name="gender" value="여">여
				</td>
		</tr>	
		<tr>
			<th>취미</th>
				<td>
					<input type="checkbox" name="hobby" value="여행">여행
					<input type="checkbox" name="hobby" value="독서">독서
					<input type="checkbox" name="hobby" value="게임">게임
				</td>
		</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="전송">
				</td>
			</tr>
		</table>
	</form>
</body>

 

InsertPro.jsp 코드

<%
// post방식은 한글에 대한 인코딩 처리가 필요합니다.
request.setCharacterEncoding("UTF-8");

// insertForm에서 전달 받아올 값들을 requestgetParameter으로 받고, 변수 안에 그 값을 넣어줍시다.
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age")); 
// request.getParameter는 String type 으로 리턴이 되기 때문에 Integer.parseInt()으로 int형으로 만들어 줍니다.
String gender = request.getParameter("gender");
String hobby = ""; // hobby의 값들은 여러개가 존재 하였습니다.따라서 배열을 이용해서 값을 받아 와야합니다.
String [] hobbies = request.getParameterValues("hobby");
// 배열의 값은 getParameterValues를 이용합니다.

for(String item : hobbies) {
	hobby += item + "/";
}
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertPro.jsp</title>
</head>
<body>
<%
/*
* JDBC연결을 하여서 
전달 받은 값들을 데이터 베이스에 저장하는 Insert 구문을 만들어 봅시다.
*/

//jdbc연결 0단계 DB 작업에 필요한 문자열을 변수 값에 저장해서 편리하게진행해봅시다.
String driver ="com.mysql.cj.jdbc.Driver";
String url ="jdbc:mysql://localhost:3306/study_jsp2";
String user ="root";
String password ="1234";

// JDBC 1단계 드라이버 로드
Class.forName(driver);
System.out.println("드라이버 로드 성공");
// println으로 성공하는지 수시로 체크 합시다.

// 2단계 DB 연결
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("DB연결 성공");

// 3단계 구문 작성 및 전달
//사용할 구문을 작성해봅시다.
String sql = "INSERT INTO test1 VALUES(?, ?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(sql); // 작성한 sql 구문을 넣어줍니다
//values의 값을 작성(set)해줍니다.
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setString(3, gender);
pstmt.setString(4, hobby);
System.out.println("구문작성 및 전달 성공");

// 4단계 구문을 실행해봅시다. 
// INSERT문의 경우 excuteUpdate를 사용하는데 이는 int형으로 성공한 갯수를 전달합니다.
int insertCount = pstmt.executeUpdate();
System.out.println("구문 실행 완료!");
//실행이 완료되면 사용했던 prepared와 connection을 해제 시켜줍니다.
pstmt.close();
con.close();

%>
<!-- 변수에 저장한 값들을 표현식을 이용해서 body에 출력을 해줍니다. -->
	<h1>입력 된 회원 정보!</h1>
	<h3>이름 : <%=name %></h3>
	<h3>이름 : <%=age %></h3>
	<h3>이름 : <%=gender %></h3>
	<h3>이름 : <%=hobby %></h3>
</body>
</html>

 

for each 문

문법

for( 각 요소 값들을 넣을 곳 : 배열이나 컨테이너 값) {

반복적으로 수행할 작업;

}

 

정상적으로 작동할경우 insertPro.jsp페이지에 입력값이 출력되고 mysql table에 입력한 값들이 insert 된 것을 확인할 수 있습니다.

반응형

'개인 공부 > TIL' 카테고리의 다른 글

TIL #220523 #JSP #JAVA  (0) 2022.05.23
TIL #220522 #JSP  (0) 2022.05.23
TIL #220520 #JSP #DB  (0) 2022.05.20
TIL #220519 #DB #WEB  (0) 2022.05.19
TIL #220518 #JAVA #NET  (0) 2022.05.18