대학교 수업내용(JSP)/웹프로그래밍(JSP) - 9주차 ~ 10주차
웹프로그래밍(JSP)
Fizz19
2022. 10. 5. 13:19
newboard/ 패키지 생성:DAO DAO패키지 안에 BoardDAO 자바파일 생성
readServlet에서 일부분 복사 붙어녛기
※readServlet.java
package board;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/read")
public class readServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Board->src->main->webapp->read.jsp
String a = request.getParameter("num");
BoardDAO dao = new BoardDAO();
BoardDTO board = dao.read(Integer.parseInt(a));
request.setAttribute("board", board);
String view = "read.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request,response);
}
}
※postServlet.java
package board;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/post")
public class postServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "postform.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//넘겨온 데이터 받아 확인한다.\
BoardDTO board = new BoardDTO();
board.setSubject(request.getParameter("subject"));
board.setName(request.getParameter("writer"));
board.setContent(request.getParameter("content"));
board.setPassword(request.getParameter("pass"));
BoardDAO dao = new BoardDAO();
dao.post(board);
response.sendRedirect("list");
}
}
※listServlet.java
package board;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/list")
public class listServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=EUC-KR");
BoardDAO dao = new BoardDAO();
ArrayList<BoardDTO> list = dao.list();
request.setAttribute("list", list);
String view = "list.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
}
※deleteServlet.java
package board;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/delete")
public class deleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.getWriter().append("Served at: ").append(request.getContextPath());
String a = request.getParameter("num");
Connection conn=null;
Statement stmt=null;
try{
String url="jdbc:mysql://localhost:3306/Mydb";
String user="root";
String password="mysql";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(url,user,password);
//데이터베이스 연결
//명령전송
stmt=conn.createStatement();
String sql="delete from board where num=" + a;
stmt.executeUpdate(sql); // select 제외 모두 executeUpdate
//목록으로 돌아가기
response.sendRedirect("list");
}catch(Exception ex){
System.out.println("실패 ");
System.out.println("에러 : "+ex.getMessage());
}finally{
try {
if(conn!=null)
conn.close();
if(stmt!=null)
stmt.close();
}catch(Exception ex){
System.out.println("실패 ");
System.out.println("에러 : "+ex.getMessage());
}
}
}
}
※readServlet.java
package board;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/read")
public class readServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Board->src->main->webapp->read.jsp
String a = request.getParameter("num");
BoardDAO dao = new BoardDAO();
BoardDTO board = dao.read(Integer.parseInt(a));
request.setAttribute("board", board);
String view = "read.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request,response);
}
}
※updateServlet.java
package board;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/update")
public class updateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String a = request.getParameter("num");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String num = "";
String name="";
String email="";
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");
name = rs.getString("name");
email = rs.getString("email");
}
response.sendRedirect("list");
}catch(Exception ex){
System.out.println("실패");
System.out.println("에러: " + ex.getMessage());
}finally{
try {
if (conn != null)
conn.close();
if(stmt!=null)
stmt.close();
if(rs!=null)
rs.close();
}catch(Exception ex) {
System.out.println("실패");
System.out.println("에러: " + ex.getMessage());
}
}
}
}
★☆★☆★☆★☆★☆★☆수정
src/main/java 패키지
board 패키지
※deleteServlet.java
package board;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
@WebServlet("/delete")
public class deleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.getWriter().append("Served at: ").append(request.getContextPath());
String a = request.getParameter("num");
BoardDAO dao = new BoardDAO();
dao.delete(Integer.parseInt(a));
response.sendRedirect("list");
}
}
※listServlet.java
package board;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/list")
public class listServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=EUC-KR");
BoardDAO dao = new BoardDAO();
ArrayList<BoardDTO> list = dao.list();
request.setAttribute("list", list);
String view = "list.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
}
※postServlet.java
package board;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/post")
public class postServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "postform.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//넘겨온 데이터 받아 확인한다.\
BoardDTO board = new BoardDTO();
board.setSubject(request.getParameter("subject"));
board.setName(request.getParameter("writer"));
board.setContent(request.getParameter("content"));
board.setPassword(request.getParameter("pass"));
BoardDAO dao = new BoardDAO();
dao.post(board);
response.sendRedirect("list");
}
}
※readServlet.java
package board;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/read")
public class readServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String a = request.getParameter("num");
BoardDAO dao = new BoardDAO();
BoardDTO board = dao.read(Integer.parseInt(a));
request.setAttribute("board",board);
String view = "read.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
}
※updateServlet.java
package board;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.BoardDAO;
import DTO.BoardDTO;
@WebServlet("/update")
public class updateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String a = request.getParameter("num");
BoardDAO dao = new BoardDAO();
BoardDTO board = dao.read(Integer.parseInt(a));
request.setAttribute("board",board);
String view = "updateform.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BoardDTO board = new BoardDTO();
board.setNum(Integer.parseInt(request.getParameter("num")));
board.setSubject(request.getParameter("subject"));
board.setName(request.getParameter("writer"));
board.setContent(request.getParameter("content"));
BoardDAO dao = new BoardDAO();
dao.update(board);
response.sendRedirect("list");
}
}
DAO패키지
※BoardDAO.java
package DAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import DTO.BoardDTO;
public class BoardDAO {
private Connection DBConn() throws Exception {
Connection conn = null;
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);
return conn;
}
public ArrayList<BoardDTO> list()
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
conn = DBConn();
//DB연결하기
stmt = conn.createStatement();
String sql = "select * from board";
rs = stmt.executeQuery(sql);
//DB에 명령 전달 및 결과 회신
ArrayList<BoardDTO> list = new ArrayList<BoardDTO>();
while(rs.next())
{
BoardDTO board = new BoardDTO();
String num = rs.getString("num");
String subject = rs.getString("subject");
String content = rs.getString("content");
String name = rs.getString("name");
board.setNum(Integer.parseInt(num));
board.setSubject(subject);
board.setContent(content);
board.setName(name);
list.add(board);
//out.println(subject+name+"<br>");
}
return list;
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}finally{
try {
if(conn != null)
conn.close();
if(stmt != null)
stmt.close();
if(rs != null)
rs.close();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}
}
return null;
}
public BoardDTO read(int a)
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
conn = DBConn();
//데이터 베이스 연결
stmt = conn.createStatement();
String sql = "select * from board where num="+a;
rs = stmt.executeQuery(sql);
//명령 전달 결과 회신
BoardDTO board = new BoardDTO();
if(rs.next())
{
int num = rs.getInt("num");
String subject = rs.getString("subject");
String content = rs.getString("content");
String name = rs.getString("name");
board.setNum(num);
board.setSubject(subject);
board.setContent(content);
board.setName(name);
}
return board;
//회신결과 출력
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}finally{
try {
if(conn != null)
conn.close();
if(stmt != null)
stmt.close();
if(rs != null)
rs.close();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}
}
return null;
}
public void delete(int a)
{
Connection conn = null;
Statement stmt = null;
try{
conn = DBConn();
//DB연결
stmt = conn.createStatement();
String sql = "delete from board where num="+a;
stmt.executeUpdate(sql);
//명령전송
//목록으로 돌아가기
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}finally{
try {
if(conn != null)
conn.close();
if(stmt != null)
stmt.close();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}
}
}
public void post(BoardDTO board)
{
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = DBConn();
//데이터베이스에 명령을 전송한다.insert
String sql = "insert into board";
sql += "(subject,name,content,password,signdate)";
sql += " values(?,?,?,?,now());";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getSubject());
pstmt.setString(2, board.getName());
pstmt.setString(3, board.getContent());
pstmt.setString(4, board.getPassword());
pstmt.executeUpdate();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}finally{
try {
if(conn != null)
conn.close();
if(pstmt != null)
pstmt.close();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}
}
}
public void update(BoardDTO board)
{
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = DBConn();
//쿼리 전송(update)
String sql = "update board set";
sql += " subject=?,content=?,name=?";
sql += " where num=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getSubject());
pstmt.setString(3, board.getName());
pstmt.setString(2, board.getContent());
pstmt.setInt(4, board.getNum());
pstmt.executeUpdate();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}finally{
try {
if(conn != null)
conn.close();
if(pstmt != null)
pstmt.close();
}catch(Exception ex){
System.out.println("실패");
System.out.println("SQLExcption : " + ex.getMessage());
}
}
}
}
DTO패키지
※BoardDTO.java
package DTO;
import java.sql.Date;
public class BoardDTO {
private int num;
private String subject;
private String content;
private String name;
private Date signdate;
private String password;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getSigndate() {
return signdate;
}
public void setSigndate(Date signdate) {
this.signdate = signdate;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
※web.xml
프로젝트에서 마우스 오른쪽 버튼을 누르고
Java EE tools -> Generate Deployment Descriptor sub 를 클릭
<servlet>
<servlet-name>FrontController</servlet-name>
<servlet-class>servlet.FrontController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
패키지 추가:servlet
※FrontController.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String RequestURI = request.getRequestURI();
String contextPath = request.getContextPath();
String command = RequestURI.substring(contextPath.length());
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
//BoardService service = null;
String path = null;
if(command.equals("/list.do")) {
System.out.println("목록보기");
}else if(command.equals("/read.do")) {
System.out.println("글읽기");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}