Fizz19 2022. 10. 4. 10:57
※list.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;
	try {
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";                                                 
		String password = "12345";
		
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(url, user, password);
		//데이터베이스 연결
		
		stmt = conn.createStatement();
		String sql = "select * from board";
		rs = stmt.executeQuery(sql);
		//데이터베이스에 명령 전달 및 결과회신
		
		while(rs.next())
		{
			String num = rs.getString("num");
			String subject = rs.getString("subject");
			String content = rs.getString("content");
			String name = rs.getString("name");
%>			

<%=num%>.<a href="read.jsp?num=<%=num%>"><%=subject%></a> <%=name%><br>

<%		
		}
		//회신 결과를 출력
		
		out.println("데이터베이스 연결이 성공했습니다.");
	} catch (SQLException ex) {
		out.println("데이터베이스 연결이 실패했습니다.<br>");
		out.println("SQLException: " + ex.getMessage());
	} finally {
		if (conn != null)
			conn.close();
		if(stmt!=null)
			stmt.close();
		if(rs!=null)
			rs.close();
	}
%>

<a href="postform.jsp">글쓰기</a>

</body>
</html>
※postform.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
글등록 페이지
<form method="post" action="post.jsp">
제목:<input type="text" name="subject"><br>
작성자:<input type="text" name="writer"><br>
비번: <input type="password"  name="pass"><br>
<textarea rows=20 cols=100 name="content"></textarea>
<input type="submit" value="완료">
</form>

</body>
</html>
※post.jsp
구문1)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% 
//넘겨온 데이터를 받는다.(확인)
String sub = request.getParameter("subject");
String writer = request.getParameter("writer");
String content = request.getParameter("content");
//데이터베이스에 접속한다.
//데이터베이스에 명령을 접속한다.(insert)
//목록보기 페이지로 전환한다.
%>
<%=sub %><br>
<%=writer %><br>
<%=content %><br>
글등록 처리 페이지
</body>
</html>

☆form태그에 관한 내용<html>
https://developer.mozilla.org/ko/docs/Web/HTML/Element/form

 

<form> - HTML: Hypertext Markup Language | MDN

HTML <form> 요소는 정보를 제출하기 위한 대화형 컨트롤을 포함하는 문서 구획을 나타냅니다.

developer.mozilla.org

☆HTML: form(폼)태그 이해
https://www.nextree.co.kr/p8428/

 

HTML : 폼(form) 이해

폼은 알게 모르게 웹에서 많이 사용합니다. 사용자 의견이나 정보를 알기 위해 입력할 큰 틀을 만드는 데 사용되기 때문입니다. 폼은 입력된 데이터를 한 번에 서버로 전송합니다. 전송한 데이

www.nextree.co.kr

☆HTML에서 textarea 태그 rows, cols 속성
https://chobbang.com/45

 

HTML에서 textarea 태그 rows, cols 속성

HTML  태그 http://www.w3schools.com/html5/tag_textarea.asp  태그 사용 결과 텍스트 크기 기준으로 rows는 (rows값)5줄, cols는 (cols값)40자를 입력할 수 있는 공간을 제공한다. 입력된 텍스트가 40자 이상..

chobbang.com

mysql Client 창

mysql> use mydb;
Database changed
mysql> select * from board;
+-----+---------+----------+-------+----------+---------------------+
| num | subject | content  | name  | password | signdate            |
+-----+---------+----------+-------+----------+---------------------+
|   1 | sub1    | content1 | name1 | pass     | 2022-03-30 13:49:45 |
|   3 | sub3    | content3 | name3 | pass     | 2022-03-30 13:50:10 |
|   4 | sub4    | content4 | name4 | pass     | 2022-03-30 13:50:23 |
|   5 | sub5    | content5 | name5 | pass     | 2022-03-30 13:50:33 |
+-----+---------+----------+-------+----------+---------------------+
4 rows in set (0.00 sec)

mysql> insert into board(subject,name,password,content,signdate)
    -> values ("sub777", "writer777","content777","pass777",now());
Query OK, 1 row affected (0.00 sec)

 

※post.jsp

구문2)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% 
//넘겨온 데이터를 받는다.(확인)
String sub = request.getParameter("subject");
String writer = request.getParameter("writer");
String content = request.getParameter("content");
String pass = request.getParameter("pass");

Connection conn = null;
PreparedStatement pstmt = null;

try{
	//데이터베이스에 접속한다.
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//데이터베이스에 명령을 접속한다.(insert)
	String sql = "insert into board";
		sql += "(subject,name,password,content,signdate) values"; 
		sql += "(?, ?,?,?,now())";
	pstmt = conn.prepareStatement(sql);
	pstmt.setString(1, sub);
	pstmt.setString(2,writer);
	pstmt.setString(3,content);
	pstmt.setString(4,pass);
	pstmt.executeUpdate();
	
	//목록보기 페이지로 전환한다.
	response.sendRedirect("list.jsp");
	
}catch(Exception ex){
	out.println("데이터베이스 연결이 실패했습니다.<br>");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(pstmt!=null)
		pstmt.close();
}
%>
글등록 처리 페이지
</body>
</html>

 

Board/ webapp / jsp 파일 추가(파일명:updateform.jsp)

 

※ updateform.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
여기는 편집 폼 입니다.
<%
//넘겨진 고유키 값을 받는다.
String a = request.getParameter("num");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

String num = "";
String subject="";
String content="";
String name="";

try{
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	//데이터베이스 접속
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(select)과 결과를 받는다.
	stmt = conn.createStatement();
	String sql = "select * from board where num="+a;
	rs = stmt.executeQuery(sql);
	//폼에 데이터를 출력한다.
	
	//결과를 받아 변수에 저장한다.
	if(rs.next())
		{
			num = rs.getString("num");
			subject = rs.getString("subject");
			content = rs.getString("content");
			name = rs.getString("name");	
		}
}catch(Exception ex){
	out.println("실패");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(stmt!=null)
		stmt.close();
	if(rs!=null)
		rs.close();
}

%>
<!-- 폼에 데이터를 출력 -->
<form method="post" action="update.jsp">
제목:<input type="text" name="subject" value="<%=subject%>"><br>
작성자:<input type="text" name="writer" value="<%=name%>"><br>
<textarea rows=20 cols=100 name="content"><%=content %></textarea>

<input type="submit" value="완료">
</form>

</body>
</html>

 

webapp/ jsp파일 추가(파일명:update.jsp)

※ update.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% 
//넘겨진 값을 받고 확인
String sub = request.getParameter("subject");
String writer = request.getParameter("writer");
String content = request.getParameter("content");

Connection conn = null;
PreparedStatement pstmt = null;

try{
	//데이터베이스 연결
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(update)
	String sql = "Update board set";
		sql+= "subject=?, content=?,name=?";
		sql+= "where num = ?";
		
	pstmt = conn.prepareStatement(sql);
	pstmt.setString(1, sub);
	pstmt.setString(2,writer);
	pstmt.setString(3,content);
	
	pstmt.executeUpdate();
	//목록보기로 전환
}catch(Exception ex){
	
}finally{
	
}
%>

</body>
</html>

 

※updateform.jsp

구문2)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
여기는 편집 폼 입니다.
<%
//넘겨진 고유키 값을 받는다.
String a = request.getParameter("num");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

String num = "";
String subject="";
String content="";
String name="";

try{
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	//데이터베이스 접속
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(select)과 결과를 받는다.
	stmt = conn.createStatement();
	String sql = "select * from board where num="+a;
	rs = stmt.executeQuery(sql);
	//폼에 데이터를 출력한다.
	
	//결과를 받아 변수에 저장한다.
	if(rs.next())
		{
			num = rs.getString("num");
			subject = rs.getString("subject");
			content = rs.getString("content");
			name = rs.getString("name");	
		}
}catch(Exception ex){
	out.println("실패");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(stmt!=null)
		stmt.close();
	if(rs!=null)
		rs.close();
}

%>
<!-- 폼에 데이터를 출력 -->
<form method="post" action="update.jsp">
글번호:<input type="text", name="num" value="<%=num %>">
제목:<input type="text" name="subject" value="<%=subject%>"><br>
작성자:<input type="text" name="writer" value="<%=name%>"><br>
<textarea rows=20 cols=100 name="content"><%=content %></textarea>

<input type="submit" value="완료">
</form>

</body>
</html>

 

★★★ 글번호 숨기기
<input type="hidden", name="num" value="<%=num %>"><br>

※update.jsp

구문2)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
//넘겨진 값을 받고 확인
String sub = request.getParameter("subject");
String writer = request.getParameter("writer");
String content = request.getParameter("content");
String a = request.getParameter("num");

Connection conn = null;
PreparedStatement pstmt = null;

try{
	//데이터베이스 연결
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(update)
	String sql = "Update board set";
		sql+= " subject=?, content=?,name=?";
		sql+= " where num = ?";
		
	pstmt = conn.prepareStatement(sql);
	pstmt.setString(1, sub);
	pstmt.setString(2,writer);
	pstmt.setString(3,content);
	pstmt.setString(4,a);
	
	pstmt.executeUpdate();
	//목록보기로 전환
	response.sendRedirect("list.jsp");
}catch(Exception ex){
	out.println("데이터베이스 연결이 실패했습니다.<br>");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(pstmt!=null)
		pstmt.close();
}
%>

</body>
</html>

 

회원목록 페이지 만들기

 

이름                            목록보기                            회원정보보기

이메일 주소         →   이름                           →      이름, 이메일

회원소개글                 이메일                                회원소개글

                                   (회원추가링크)                    (회원삭제링크)

 

테이블생성
Mydb에서 생성


테이블이름: Member
Name, email(프라이머리 키), intro


dummy 테이터 insert


프로젝트 생성(Dynamic web project)
프로젝트 명칭: member

목록보기페이지 작성
회원정보보기페이지 작성
회원삭제페이지 작성
회원추가기능 작성

 

※ list.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;
	try {
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";                                                 
		String password = "12345";
		
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(url, user, password);
		//데이터베이스 연결
		
		stmt = conn.createStatement();
		String sql = "select * from member";
		rs = stmt.executeQuery(sql);
		//데이터베이스에 명령 전달 및 결과회신
		
		while(rs.next())
		{
			String num = rs.getString("num");
			String name = rs.getString("name");
			String email = rs.getString("email");
%>			

<%=num%>.<a href="read.jsp?num=<%=num%>"><%=email%></a> <%=name%><br>

<%		
		}
		//회신 결과를 출력
		
		out.println("데이터베이스 연결이 성공했습니다.");
	} catch (SQLException ex) {
		out.println("데이터베이스 연결이 실패했습니다.<br>");
		out.println("SQLException: " + ex.getMessage());
	} finally {
		if (conn != null)
			conn.close();
		if(stmt!=null)
			stmt.close();
		if(rs!=null)
			rs.close();
	}
%>

<a href="postform.jsp">글쓰기</a>

</body>
</html>
※ delete.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
여기는 글삭제 페이지입니다.
<%
String a = request.getParameter("num");

Connection conn = null;
Statement stmt = null;

try{
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
//데이터베이스 연결
	stmt = conn.createStatement();
	String sql = "delete from member where num"+a;
	stmt.executeUpdate(sql);
//명령전송
	response.sendRedirect("list.jsp");

//목록으로 돌아가지
}catch(Exception ex) {
	out.println("데이터베이스 연결이 실패했습니다.<br>");
	out.println("SQLException: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(stmt!=null)
		stmt.close();
}
%>
삭제글은 <%=a%>번 입니다.
</body>
</html>

 

※post.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% 
//넘겨온 데이터를 받는다.(확인)
String name = request.getParameter("name");
String email = request.getParameter("email");

Connection conn = null;
PreparedStatement pstmt = null;

try{
	//데이터베이스에 접속한다.
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//데이터베이스에 명령을 접속한다.(insert)
	String sql = "insert into member";
		sql += "(name,email) values"; 
		sql += "(?, ?)";
	pstmt = conn.prepareStatement(sql);
	pstmt.setString(1,name);
	pstmt.setString(2,email);
	pstmt.executeUpdate();
	
	//목록보기 페이지로 전환한다.
	response.sendRedirect("list.jsp");
	
}catch(Exception ex){
	out.println("데이터베이스 연결이 실패했습니다.<br>");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(pstmt!=null)
		pstmt.close();
}
%>
글등록 처리 페이지
</body>
</html>

 

※postform.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
글등록 페이지
<form method="post" action="post.jsp">
이름:<input type="text" name="name"><br>
이메일:<input type="text" name="email"><br>
<input type="submit" value="완료">
</form>

</body>
</html>

※ read.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
여기는 read.jsp입니다.
<%
String a = request.getParameter("num");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try{
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//데이터베이스 연결
	stmt = conn.createStatement();
	String sql = "select * from member where email='"+a+"'";
	rs = stmt.executeQuery(sql);
	//명령전달과 결과 회신
	if(rs.next())
		{
			String num = rs.getString("num");
			String name = rs.getString("name");
			String email = rs.getString("email");
%>			

<%=num%>,<%=email%><%=name%><br>
<hr>
<%=email %>

<%		
		}
	
	//회신결과를 출력
}catch(Exception ex){
	out.println("실패");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(stmt!=null)
		stmt.close();
	if(rs!=null)
		rs.close();
}
%>

<a href="delete.jsp?num=<%=a%>">글삭제</a>
<a href="updateform.jsp?num=<%=a%>">글편집</a>

</body>
</html>

 

※ update.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
//넘겨진 값을 받고 확인
String name = request.getParameter("name");
String email = request.getParameter("email");
String a = request.getParameter("num");

Connection conn = null;
PreparedStatement pstmt = null;

try{
	//데이터베이스 연결
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(update)
	String sql = "Update member set";
		sql+= " name=?, email=?";
		sql+= " where num = ?";
		
	pstmt = conn.prepareStatement(sql);
	pstmt.setString(1,name);
	pstmt.setString(2,email);
	pstmt.setString(3,a);
	
	pstmt.executeUpdate();
	//목록보기로 전환
	response.sendRedirect("list.jsp");
}catch(Exception ex){
	out.println("데이터베이스 연결이 실패했습니다.<br>");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(pstmt!=null)
		pstmt.close();
}
%>

</body>
</html>

 

※ updateform.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
여기는 편집 폼 입니다.
<%
//넘겨진 고유키 값을 받는다.
String a = request.getParameter("num");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

String num = "";
String subject="";
String content="";
String name="";

try{
	String url = "jdbc:mysql://localhost:3306/mydb";
	String user = "root";                                                 
	String password = "12345";
	//데이터베이스 접속
	Class.forName("com.mysql.jdbc.Driver");
	conn = DriverManager.getConnection(url, user, password);
	//쿼리 전송(select)과 결과를 받는다.
	stmt = conn.createStatement();
	String sql = "select * from board where num="+a;
	rs = stmt.executeQuery(sql);
	//폼에 데이터를 출력한다.
	
	//결과를 받아 변수에 저장한다.
	if(rs.next())
		{
			num = rs.getString("num");
			subject = rs.getString("subject");
			content = rs.getString("content");
			name = rs.getString("name");	
		}
}catch(Exception ex){
	out.println("실패");
	out.println("에러: " + ex.getMessage());
}finally{
	if (conn != null)
		conn.close();
	if(stmt!=null)
		stmt.close();
	if(rs!=null)
		rs.close();
}

%>
<!-- 폼에 데이터를 출력 -->
<form method="post" action="update.jsp">
<input type="hidden", name="num" value="<%=num %>"><br>
제목:<input type="text" name="subject" value="<%=subject%>"><br>
작성자:<input type="text" name="writer" value="<%=name%>"><br>
<textarea rows=20 cols=100 name="content"><%=content %></textarea>

<input type="submit" value="완료">
</form>
</body>
</html>

 

Jsp Model1과 model2 차이
https://devjms.tistory.com/68

 

JSP Model1 과 Model 2 차이

 모델 1과 모델 2의 발생은 디자인 패턴과 관련있다. 디자인패턴 디자인패턴은 기존 환경에서 반복적으로 일어나는 문제를 설명하고, 그 문제의 해법을 설명하는 것이다. 이렇게 하면 같은 방법

devjms.tistory.com

 

회원가입 페이지 만들기
https://rsorry.tistory.com/187

 

Day53 - [JSP]회원가입 페이지 만들기

이번에는 JSP 에서 JDBC를 이용하고, 회원가입 하는 페이지를 만들어 봅시다 회원가입 페이지 만들기 회원가입 페이지를 만들기 전에, 한번 생각을 해봅시다. 어떠한 흐름을 가져야 하는지.... 먼

rsorry.tistory.com

 

학교 수업 내용을 듣고 필기한 자료입니다.

수정 및 잘못된 내용은 댓글에 적어주시기 바랍니다.