웹 프로그래밍(JSP) 5주차 ~ 6주차
※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
학교 수업 내용을 듣고 필기한 자료입니다.
수정 및 잘못된 내용은 댓글에 적어주시기 바랍니다.