66일차_JAVA

서창민·2023년 6월 14일
0

JAVA

목록 보기
18/21
post-thumbnail

23.06.14 수 66일차

JAVA

  • 값 전달하기
suvlet 파일에서  파라미터 값을 받아 DaoImpl 클래스 파일로 전달하기 위해선 먼저
BoardVO에 변수를 설정하고 GET,SET 메소드를 추가한다.

BoardVO

package psd;

public class BoardVO {
	private int m_idx;
	private String m_sname;
	private String m_title;
	private int m_cnt;
	private String ch1;
	private String ch2;
	
	public int getM_idx() {
		return m_idx;
	}
	public void setM_idx(int m_idx) {
		this.m_idx = m_idx;
	}
	public String getM_sname() {
		return m_sname;
	}
	public void setM_sname(String m_sname) {
		this.m_sname = m_sname;
	}
	public String getM_title() {
		return m_title;
	}
	public void setM_title(String m_title) {
		this.m_title = m_title;
	}
	public int getM_cnt() {
		return m_cnt;
	}
	public void setM_cnt(int m_cnt) {
		this.m_cnt = m_cnt;
	}
	public String getCh1() {
		return ch1;
	}
	public void setCh1(String ch1) {
		this.ch1 = ch1;	
	}
	public String getCh2() {
		return ch2;
	}
	public void setCh2(String ch2) {
		this.ch2 = ch2;
	}
}

----------------------------------------------------------------------

그다음 suvlet 파일에서 받았던 파라미터 값을 set을 이용해 전달해 준다.

BoardController

package psd;

import java.io.IOException;
import java.util.*;

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;

/**
 * Servlet implementation class BoardController
 */
@WebServlet("/BoardController")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BoardController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());

		String ch1=request.getParameter("ch1");
		String ch2=request.getParameter("ch2");
		
		System.out.println( ch1 + " " + ch2);
		Service s =	new ServiceImpl();

		// 파라미터 값을 넘기는 방법
		BoardVO vo = new BoardVO();
		vo.setCh1(ch1);
		vo.setCh2(ch2);
		
		int tc = s.count(vo);
		request.setAttribute("tc", tc);
		
		List<BoardVO> li= s.selectAll(vo);
		request.setAttribute("li", li);

		RequestDispatcher dis = request.getRequestDispatcher("list_t3.jsp");
		dis.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

----------------------------------------------------------------------

그 후 값을 받아오는 DaoImpl 클래스 파일에서 get으로 받아 변수를 선언하고 출력하면 값을 알 수 있고 사용할 수 있다.

DaoImpl

package psd;

import java.sql.*;
import java.util.*;
public class DaoImpl implements Dao{	
	@Override
	public List<BoardVO> selectAll(BoardVO vo) {
		DB dbconn = new DB();
		Connection conn = dbconn.getConnection();
		PreparedStatement pstmt = null;
		ResultSet rs =null;
		List<BoardVO> li = new ArrayList<BoardVO>();
		
		try {
			String ch1 = vo.getCh1();
			String ch2 = vo.getCh2();
			System.out.println(" LIST "+ ch1 + " " + ch2);
			
			if(ch1 ==null || ch2 == null || ch2.equals("")) {
				String SQL = "select * from memberT order by m_idx desc" ; 
				pstmt = conn.prepareStatement(SQL);
			}else if(ch1.equals("m_sname")) {
				String SQL = "select * from memberT where m_sname like ? order by m_idx desc" ; 
				pstmt = conn.prepareStatement(SQL);
				pstmt.setString(1, "%" + ch2 + "%");
				
			}else if(ch1.equals("m_title")) {
				String SQL = "select * from memberT where m_title like ? order by m_idx desc" ; 
				pstmt = conn.prepareStatement(SQL);
				pstmt.setString(1, "%" + ch2 + "%");
			}
			rs = pstmt.executeQuery();
			BoardVO m = null;
			while(rs.next()) {
				m = new BoardVO();
				m.setM_idx(rs.getInt("m_idx"));
				m.setM_sname(rs.getString("m_sname"));
				m.setM_title(rs.getString("m_title"));
				m.setM_cnt(rs.getInt("m_cnt"));
				li.add(m);
				System.out.println(m);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			}catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return li;
	}

	@Override
	public int count(BoardVO vo) {
		DB dbconn = new DB();
		Connection conn = dbconn.getConnection();
		PreparedStatement pstmt2 = null;
		ResultSet rs2 =null;
		int tc = 0;
		try {
			String ch1 = vo.getCh1();
			String ch2 = vo.getCh2();
			

			System.out.println("count "+ ch1 + " " + ch2);
			String SQL = "select count(*) tc from memberT order by m_idx desc";
			pstmt2 = conn.prepareStatement(SQL);
			rs2 =pstmt2.executeQuery();
			rs2.next();
			tc = rs2.getInt("tc");
			System.out.println(tc);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				rs2.close();
				pstmt2.close();
				conn.close();
			}catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return tc;
	}
}
  • 페이지 버튼 복습
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!-- db 호출시 사용 -->
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="psd.*"%>
<%@ include file="/include/top.jsp" %>
<%
	List<BoardVO> li = (List<BoardVO>) request.getAttribute("li");
	int tc = (int) request.getAttribute("tc");
	int totalPage = (int) request.getAttribute("totalPage");
	int nowPage = (int) request.getAttribute("nowPage");
	int pageSize = (int) request.getAttribute("pageSize");
	int start = (int) request.getAttribute("start");
	int endPage = (int) request.getAttribute("endPage");
	String ch1 = (String) request.getAttribute("ch1");
	String ch2 = (String) request.getAttribute("ch2");
%>
	<section>
		<br>
		<div align=center>		
			<h2>회원 목록 보기 (전체레코드:<%=tc %>)</h2>
			<h3>현재페이지 <%=nowPage %> / <%=totalPage %> 전체페이지</h3>
				<table border=1 >
					<tr align=center>
						<td>Rownum<br>(pageSize)</td>
						<td>Rnum<br>(start)</td>
						<td>순번</td>
						<td>이름</td>
						<td>제목</td>
						<td>조회수</td>

					</tr>

					<tr align=center>
						<%for(BoardVO m : li){ %>
						<td><%=m.getRownum() %></td>
						<td><%=m.getRnum() %></td>
						<td><%=m.getM_idx() %></td>
						<td><%=m.getM_sname() %></td>
						<td><%=m.getM_title() %></td>
						<td><%=m.getM_cnt() %></td>
					</tr>
					<%} %>
				</table>
					<br>
					<%if(start > pageSize){ %>
							<a href=BoardController?start=<%=start-pageSize %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>처음으로</a> &emsp;
					<% } else { %>
							처음으로 &emsp;
					<%} %>
					
					<% if(start >= 2) {	%>
							<a href=BoardController?start=<%=start-pageSize %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>이전</a> &emsp;
					<% } else { %>
							이전 &emsp;
					<%} %>
					<% if(totalPage != nowPage){%>
							<a href=BoardController?start=<%=start + pageSize %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>다음</a> &emsp;
					<% }else{ %>
							다음 &emsp;
					<% } %>
					<%if(nowPage != totalPage){ %>
							<a href=BoardController?start=<%=endPage %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>마지막으로</a> &emsp;
					<% } else { %>
							마지막으로 &emsp;
					<%} %>
				<br>
			<form>
	 			<select name=ch1>
	 				<option value ="m_sname">이 름</option>
	 				<option value ="m_title">제 목</option>
	 			</select>
	 			<input type=text name=ch2>
	 			<input type=submit value="검색하기">
 			</form>
		<br>
		</div>
		<br>
	</section>
<%@ include file="/include/footer.jsp" %>
package psd;

import java.io.IOException;
import java.util.*;

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;

/**
 * Servlet implementation class BoardController
 */
@WebServlet("/BoardController")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BoardController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());

		int start = 0;
		int pageSize = 15;

		if (request.getParameter("start") == null) {
			start = 1;
		}else {
			start = Integer.parseInt(request.getParameter("start"));
		}
	
		
		String ch1=request.getParameter("ch1");
		String ch2=request.getParameter("ch2");	
		
		Service s =	new ServiceImpl();
		
		//Suvlet으로 불러온 파라미터 값을 Class로 넘기는 방법
		BoardVO vo = new BoardVO();
		vo.setCh1(ch1);
		vo.setCh2(ch2);
		vo.setRnum(start);
		vo.setRownum(pageSize);
		
		int tc = s.count(vo);
		request.setAttribute("tc", tc);
		
		List<BoardVO> li= s.selectAll(vo);
		request.setAttribute("li", li);

		int totalPage = (int)(Math.ceil((double)tc/ pageSize));
		int nowPage = (start / pageSize) + 1;
		int endPage = (totalPage -1) * pageSize+1;
		
		request.setAttribute("start", start);
		request.setAttribute("pageSize", pageSize);
		request.setAttribute("totalPage", totalPage);
		request.setAttribute("nowPage", nowPage);
		request.setAttribute("endPage", endPage);
		request.setAttribute("ch1", ch1);
		request.setAttribute("ch2", ch2);
		

		RequestDispatcher dis = request.getRequestDispatcher("/boardList/list_t3.jsp");
		dis.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

suvlet파일에서 값을 다시 리턴받아 레코드의 범위를 지정할 수 있다.

  • 폴더로 파일 이동후 경로설정
String path = request.getContextPath();

path = C:\Users\605-20\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 까지의 경로를 끌어온다.

기존에 작성했던 파일앞에 절대경로인 /와 폴더명을 추가해주어야 정상적으로 동작한다.
profile
Back-end Developer Preparation Students

0개의 댓글