ssh 페이지 표시 실현
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. 프론트 데스크 톱 표시
부분 코드
| |||||
|
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.