ssh 페이지 표시 실현

1. 배경 데이터 읽 기
hibenate 의 criteria 와 근거 로 조회 조건 을 설정 하고 초기 위 치 를 설정 합 니 다. 데이터 베 이 스 를 읽 을 때마다 일 정량의 데 이 터 를 프론트 데스크 에 표시 하고 자신 이 한 단락 을 썼 습 니 다.
 
public ResultSet getScrollData (Integer eventType, String bikeid, int firstIndex, int pageSize) {ResultSet result = new ResultSet (); try {Criteria criteria = getSession (). createCriteria (we. wine. persistence. domain. Event. class); / / 조건 criteria. add (Expression. eq ("eventype. id", eventType)); if (bikeid! = null) {criteria. add (Expression. eq (Expression. eq)"code", bikeid);} int totalCount = (Integer) criteria. setProjection (Projections. rowCount (). uniqueResult (). intValue (); / / 총 데 이 터 량 criteria. setProjection (null); List items = critems. set First Result (firstIndex). setMaxResults (pageSize). list (); / / 읽 을 최대 값 int totalNumber 설정; if (totalCount < = page Size) {totalNumber = 1;} else if (totalCount % pageSize != 0) { totalNumber = totalCount / pageSize + 1; } else totalNumber = totalCount / pageSize; result.setList(items); result.setTotalNumber(totalNumber); } catch (RuntimeException re) { log.error("get failed", re); throw re; } return result; }
이렇게 읽 으 면 여러 번 조회 하면 시스템 이 무 너 지고 모든 액 션 이 작 동 하지 않 습 니 다. 실패 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
처리 방법 은 다음 과 같 습 니 다. 1. 조회 할 때마다 session 을 닫 습 니 다. ,그러나 이렇게 하면 hibenate 의 게 으 른 로 딩 을 사용 할 수 없습니다. session 이 닫 힌 오 류 를 보고 할 것 입 니 다. 게 으 른 로 딩 을 하지 않 아 도 됩 니 다. sql 고생, 안 됩 니 다! 포기 합 니 다.
     2. 웹. xml 에 필터 설정
   <filter>
   <filter-name>hibernateFilter</filter-name>
   <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
   </filter-class>
   <init-param>
    <param-name>singleSession</param-name>
    <param-value>true</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>hibernateFilter</filter-name>
   <url-pattern>*.do</url-pattern>
  </filter-mapping>

 
이렇게 하면 문 제 를 해결 할 수 있 습 니 다. 그러나 이 때 는 DAO 에 게 spring 사 무 를 설정 해 야 합 니 다. spring 사 무 는 다음 글 인 'spring 사무 설정' 을 참고 하 십시오. 그렇지 않 으 면 추가, 삭제 작업 을 수행 하 는 데 오류 가 발생 할 수 있 습 니 다.
 
 2. struts 에서 action 의 처리
 public class CheckMaintainAction extends DispatchAction { /* * Generated Methods */ private IHandleBroBikeService handleBroBikeServ; private int currentpage = 1; private int pageSize = 10; private String bikeid = null; public IHandleBroBikeService getHandleBroBikeServ() { return handleBroBikeServ; } public void setHandleBroBikeServ(IHandleBroBikeService handleBroBikeServ) { this.handleBroBikeServ = handleBroBikeServ; } public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub CheckMaintainForm checkForm = (CheckMaintainForm) form; HttpSession session = request.getSession(); currentpage=1; if (!checkForm.getBikeid().equals("")) { bikeid = checkForm.getBikeid(); } else { bikeid = null; } int firstIndex=(currentpage-1)*pageSize; ResultSet result = handleBroBikeServ.getEventPageData(bikeid, firstIndex, pageSize); request.setAttribute("currentpage", new Integer(currentpage)); session.setAttribute("totalpage", new Integer(result.getTotalNumber())); request.setAttribute("eventlist", result.getList()); return mapping.findForward("success"); } /** * * @param mapping * @param form * @param request * @param response * @return */ public ActionForward change(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub CheckMaintainForm checkForm = (CheckMaintainForm) form; HttpSession session = request.getSession(); int totalpage = ((Integer) session.getAttribute("totalpage")) .intValue(); if (checkForm.getTextfield() != null) { int page = checkForm.getTextfield().intValue(); if (page > totalpage) { currentpage = totalpage; } else if (page < 1) { currentpage = 1; } else currentpage = page; } int firstIndex = (currentpage - 1) * pageSize; if (checkForm.getBikeid() != null && !checkForm.getBikeid().trim().equals("")) { bikeid = checkForm.getBikeid(); } ResultSet result = handleBroBikeServ.getEventPageData(bikeid, firstIndex, pageSize); request.setAttribute("currentpage", new Integer(currentpage)); session.setAttribute("totalpage", new Integer(result.getTotalNumber())); request.setAttribute("eventlist", result.getList()); return mapping.findForward("success"); } /** * * @param mapping * @param form * @param request * @param response * @return */ public ActionForward page(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub HttpSession session = request.getSession(); int totalpage = ((Integer) session.getAttribute("totalpage")) .intValue(); if (request.getParameter("action") != null) { if (request.getParameter("action").equals("first")) { currentpage = 1; } else if (request.getParameter("action").equals("last")) { currentpage = totalpage; } else if (request.getParameter("action").equals("next")) { if (currentpage < totalpage) currentpage++; else currentpage = totalpage; } else { if (currentpage > 1) currentpage--; else currentpage = 1; } } int firstIndex = (currentpage - 1) * pageSize; ResultSet result = handleBroBikeServ.getEventPageData(bikeid, firstIndex, pageSize); request.setAttribute("currentpage", new Integer(currentpage)); session.setAttribute("totalpage", new Integer(result.getTotalNumber())); request.setAttribute("eventlist", result.getList()); return mapping.findForward("success"); } }
 
 
 3. 프론트 데스크 톱 표시
 
부분 코드
 
< / div > < / td > < td width = "15%" 높이 = "20" bgcolor = "d3eaef" > < div align = "center" > < span class = "STYLE 10" > 고장 날짜 < / span > < / div > < / td > < td wid< < < < td > < td widd = "14%" 높이 = "20" bgcolor = "d3eaef" > > < div align = "center" > < div align = "center" > < span class = "STYLE 10" > 이벤트 우선 순위 < / span > < / div > < / div > < / td > < < < < td > < < < < < td > < < < td > < < 16% "너비 =" 16% height = "20" bgcolor = "d3eaef" > < div align = "center"< span class = "STYLE 10" > 책임자 < / span > < / div > < / td > < td > < td width = "27%" hei= "20" bgcolor = "d3eaef" > < divalign = "center" > < span class= "STYLE 10" > 상세 설명 < / span > < / div > < / < / td > < < / tr > < / tr > < < < < / tr > < logi: notEmpty name = "이벤트 목록" "이벤트: iterateid =" 이벤트 "이벤트" 이름 = "이벤트" 이벤트 "이름 =" 이벤트 목록 "이벤트" name = "이벤트 목록" type = "we. wine. persiste. domain. 이벤트" > > > > < tr > < < < < < td > < < < < < < td > < < < < < < bgcolor = "\ # FFFF" > < div align ="center">
    현재 < < strong > < < < < < < < < < < < strong > < < < < < < < < < < < < < < < < < < < < < < < < < < < / sr강 > > > < < < < < < < < < < < < < td > > < < < < < td wid= "> < < < < < < 67%" > > < tabwid= < 312 "border =" 312 "border =" 0 "정렬 =" "" 오른쪽 "셀 패 딩 =" 0 "셀 스 패 싱 =" 0 "셀 스 패 싱 < < < < < < < < td wid=" 49 "> < div align =" "cente" > < href = < < < < < html / / / / / $$$$$$$$$$$$$$$$$$$$$$$"HeckMaintain">?method=page&action=first'>
< img src = "pic / main 60. gif" mce src = "pic / main 60. gif" width = "40" 높이 = "15" / > < / / / < / div > < / / < / / / < / td > < < td width = "80" class= "STYLE 22" > > < div align = "center" > < < < / div > < / < < / < < < < < < < < < < < / td width > < < < div 정렬 = "center" > < < < < < 중앙 "> > < html: textfield" 스타일 = "textfield" 스타일 = "width: 30pppppx < < / html > / html < < < < < / l: text > < / div > < / td > < td width =" 22 "class =" STYLE 22 "> < div align = "center" > 페이지 < / div > < / td > < td width = "35" > < input type = "submit" value = "회전" onClick = "method. value = 'change'" > < / input > < / tr > < / table > < / td > < / table > < / table > < / table > < / td > < / tr > < / tr > < / table > < / table > < / logic: notEmpty >  그래도 괜 찮 은 것 같 아 요 \ (^ o ^) / ~   

좋은 웹페이지 즐겨찾기