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>  
<% } else { %>
처음으로  
<%} %>
<% if(start >= 2) { %>
<a href=BoardController?start=<%=start-pageSize %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>이전</a>  
<% } else { %>
이전  
<%} %>
<% if(totalPage != nowPage){%>
<a href=BoardController?start=<%=start + pageSize %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>다음</a>  
<% }else{ %>
다음  
<% } %>
<%if(nowPage != totalPage){ %>
<a href=BoardController?start=<%=endPage %>&ch1=<%=ch1 %>&ch2=<%=ch2 %>>마지막으로</a>  
<% } else { %>
마지막으로  
<%} %>
<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 까지의 경로를 끌어온다.
기존에 작성했던 파일앞에 절대경로인 /와 폴더명을 추가해주어야 정상적으로 동작한다.