웹프로그래밍(JSP)

2022. 10. 5. 13:19대학교 수업내용(JSP)/웹프로그래밍(JSP) - 9주차 ~ 10주차

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);
	}

}