I want to paged the total number of articles and print them out. However, errors continue to occur in the process of storing the total number of articles in a variable
I don't know why NumberFormatException happens here.
I saved totalCount as an integer variable in boardDAO, boardDTO.
If I try to put it back in totalCount2 var on the list.jsp 29 line,
This situation is happening.
What should I do?
BoardDAO Class
public List<BoardDTO> boardPaing(int a, int b) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<BoardDTO> boardPaging = new ArrayList<>();
int start = a;
int pagePerCount = b;
try {
int tempcnt = 0;
conn = DBconn.getConnection();
String sql = "SELECT COUNT(b_idx) AS totcnt FROM tb_board";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()){
tempcnt = rs.getInt("totcnt");
System.out.println(tempcnt);
}
sql = "SELECT b_idx, b_userid, b_name, b_title, b_content, b_hit, b_regdate,b_file FROM tb_board ORDER BY b_idx DESC limit ?, ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, start);
pstmt.setInt(2, pagePerCount);
rs = pstmt.executeQuery();
while(rs.next()) {
BoardDTO board = new BoardDTO();
board.setbIdx(rs.getLong("b_idx"));
board.setbUserid(rs.getString("b_userid"));
board.setbName(rs.getString("b_name"));
board.setbTitle(rs.getString("b_title"));
board.setbContent(rs.getString("b_content"));
board.setbHit(rs.getInt("b_hit"));
board.setbRegdate(rs.getString("b_regdate"));
board.setbFile(rs.getString("b_file"));
board.setTotalCount(tempcnt);
System.out.println(board.getTotalCount());
boardPaging.add(board);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(pstmt!= null) {pstmt.close(); }
if(conn != null) {conn.close(); }
}catch(SQLException e) {
throw new RuntimeException(e.getMessage());
}
}
return boardPaging;
}
public class BoardDTO {
private Long bIdx;
private String bUserid;
private String bName;
private String bTitle;
private String bContent;
private int bHit;
private String bRegdate;
private String bFile;
private int totalCount;
public Long getbIdx() {
return bIdx;
}
public void setbIdx(Long bIdx) {
this.bIdx = bIdx;
}
public String getbUserid() {
return bUserid;
}
public void setbUserid(String bUserid) {
this.bUserid = bUserid;
}
public String getbName() {
return bName;
}
public void setbName(String bName) {
this.bName = bName;
}
public String getbTitle() {
return bTitle;
}
public void setbTitle(String bTitle) {
this.bTitle = bTitle;
}
public String getbContent() {
return bContent;
}
public void setbContent(String bContent) {
this.bContent = bContent;
}
public int getbHit() {
return bHit;
}
public void setbHit(int bHit) {
this.bHit = bHit;
}
public String getbRegdate() {
return bRegdate;
}
public void setbRegdate(String bRegdate) {
this.bRegdate = bRegdate;
}
public String getbFile() {
return bFile;
}
public void setbFile(String bFile) {
this.bFile = bFile;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
}
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%-- <%@ page import="java.util.Date" %> --%>
<%-- <%@ page import="java.text.SimpleDateFormat" %> --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ include file="./sessionCheck.jsp" %>
<jsp:useBean id="boardDTO" class="com.koreait.board.BoardDTO"/>
<jsp:useBean id="boardDAO" class="com.koreait.board.BoardDAO"/>
<jsp:useBean id="today" class="java.util.Date"/>
<fmt:formatDate var="todayStr" value="${today}" pattern="yyyy-MM-dd" />
<%-- <c:set var="boardList" value="${boardDAO.selectBoard()}"/> --%>
<c:set var="pagePerCount" value="5"/>
<c:set var="start" value="0"/>
<c:set var="pageNum" value="${requestScope.pageNum}"/>
<c:choose>
<c:when test="${pageNum != null && !pageNum.equals('')}">
<c:set var="start" value="${(pageNum-1) * pagePerCount}"/>
</c:when>
<c:otherwise>
<c:set var="pageNum" value="1"/>
<c:set var="start" value="0"/>
</c:otherwise>
</c:choose>
<c:set var="pagingBoard" value="${boardDAO.boardPaing(start, pagePerCount)}"/>
<%-- <c:set var="temp" value="${pagingBoard}"/> --%>
<c:set var="totalCount2" value="${pagingBoard.totalCount}"/> <%- this is error line- --%>
<c:set var="pageNums" value="${totalCount2 / pagePerCount + 1}"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>리스트</title>
</head>
<body>
<h2>리스트</h2>
<table border="1" width="800">
<tr>
<th>번호</th>
<th>제목</th>
<th>이름(아이디)</th>
<th>날짜</th>
<th>조회수</th>
</tr>
<c:forEach var="item" items="${pagingBoard}" varStatus="status">
<c:set var="bReg" value="${item.bRegdate.substring(0,10)}"/>
<tr>
<td>${item.bIdx}</td>
<td>${item.bTitle} <c:if test="${bReg.equals(todayStr)}"><img src='./images/new.png' alt='새글'></c:if>
<c:if test="${item.bFile != null && !bFile.equals('')}"><img src='./images/file.png' alt='파일'></c:if>
</td>
<td>${item.bName}(${item.bUserid})</td>
<td>${bReg}</td>
<td>${item.bHit}</td>
</tr>
</c:forEach>
<tr>
<td colspan="5">
<c:forEach begin="${start}" end="${pagenums}" var="i">
<a href='list.jsp?pageNum=${i}'>${i} </a>
</c:forEach>
</td>
</tr>
<tr>
<td colspan="5"><input type="button" value="글작성" onclick="location.href='./write.jsp'"> <input type="button" value="로그아웃" onclick="location.href='./logout.jsp'"></td>
</tr>
</table>
<%-- <p>${todayStr}</p> --%>
<p>${start}</p>
<p>${pageNum}</p>
</body>
</html>
// This is what I tested in the console window
15
15
15
15
15
15
10월 24, 2020 11:53:36 오후 org.apache.catalina.core.StandardWrapperValve invoke
심각: 경로 [/Day10]의 컨텍스트 내의 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [행 [29]에서 [/list.jsp]을(를) 처리하는 중 예외 발생
26: </c:choose>
27: <c:set var="pagingBoard" value="${boardDAO.boardPaing(start, pagePerCount)}"/>
28: <%-- <c:set var="temp" value="${pagingBoard}"/> --%>
29: <c:set var="totalCount2" value="${pagingBoard.totalCount}"/>
30: <c:set var="pageNums" value="${totalCount2 / pagePerCount + 1}"/>
31: <!DOCTYPE html>
32: <html>
Stacktrace:]을(를) 발생시켰습니다.
java.lang.NumberFormatException: For input string: "totalCount"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at javax.el.ListELResolver.coerce(ListELResolver.java:150)
at javax.el.ListELResolver.getValue(ListELResolver.java:67)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:125)
at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:115)
at org.apache.jsp.list_jsp._jspx_meth_c_005fset_005f7(list_jsp.java:636)
at org.apache.jsp.list_jsp._jspService(list_jsp.java:227)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)