Парень - это обычно используемая функция в веб -проектах Java. Вчера в Spring MVC были реализованы простые операции под пейджингем и поиск. Давайте записать это здесь. Используется структура (Mybatis+Springmvc+Spring).
Сначала нам нужен класс на страницах на странице:
1. Парень
импортировать java.io.serializable; / *** страница Pagination*/ Public Class реализует Serializable {Private Static Final Long SerialVersionUID = -3198048449643774660L; частный int pagenow = 1; // текущий номер страницы Private Int PageSize = 4; // количество записей, отображаемых на каждой странице Private Int TotalCount; // общее количество записей частного int totalPageCount; // общее количество страниц @SuppressWarnings («неиспользованные») частные int startpos; // Start position, start from 0 @SuppressWarnings("unused") private boolean hasFirst;// Is there a home page @SuppressWarnings("unused") private boolean hasPre;// Is there a previous page @SuppressWarnings("unused") private boolean hasNext;// Is there a next page @SuppressWarnings("unused") private boolean haslast; // Есть ли последняя страница/ ** * Пропустить общее количество записей и текущей страницы через конструктор * @param totalcount * @param pagenow */ public page (int otcount, int pagenow) {this.totalcount = totalCount; this.pagenow = pagenow; } / **. Возврат (TotalCount % pageSize == 0)? TotalPageCount: TotalPageCount + 1; } public void CetTotOtalPageCount (int totalPageCount) {this.TotalPageCount = totalPageCount; } public int getPagenow () {return pagenow; } public void setPagenow (int pagenow) {this.pagenow = pagenow; } public int getPageSize () {return PageSize; } public void setPagesize (int pageSize) {this.pagesize = pagesize; } public int getTotalCount () {return TotalCount; } public void CetTotOtalCount (int totalCount) {this.TotalCount = totalCount; } / ** * Получить начальную позицию записи выбора * @return * / public int getStartpos () {return (pagenow - 1) * pageSize; } public void setStartPos (int startPos) {this.StartPos = startPos; } / *** Это первая страница* @return* / public boolean ishasfirst () {return (pagenow == 1)? Неверно: Верно; } public void sethasfirst (boolean hasfirst) {this.hasfirst = hasfirst; } / *** Есть ли домашняя страница* @return* / public boolean ishaspre () {// Если есть домашняя страница, есть предыдущая страница, потому что есть домашняя страница, это не первая страница. вернуть ishasfirst ()? Верно: Неверно; } public void sethaspre (boolean haspre) {this.haspre = haspre; } / *** Есть ли следующая страница* @return* / public boolean isshasnext () {// Если есть последняя страница, есть следующая страница, потому что есть последняя страница, это не последняя страница. Вернуть ishaslast ()? Верно: Неверно; } public void sethasnext (boolean hasnext) {this.hasnext = hasnext; } / *** Есть ли последняя страница* @return* / public boolean ishaslast () {// Если это не последняя страница, будет возврат последней страницы (pagenow == getTotalCount ())? Неверно: Верно; } public void sethaslast (boolean haslast) {this.haslast = haslast; }}С помощью этого класса инструментов сначала напишите оператор SQL в файле конфигурации xxxxmapper.xml Mybatis, следующим образом:
<!-Оператор Pagination SQL-> <SELECT ID = "SELECTPRODUCTSBYPAGE" resultMap = "type return Value"> SELECT * Из имени таблицы, где user_id = #{userId, jdbctype = integer} limit #{startpos}, #{PageSize} </select> <!-Получить общее количество записей-> <select eD = "gatprodC} </select> <! ResultType = "long"> выберите Count (*) из имени таблицы, где user_id = #{userId, jdbctype = integer} </select>Здесь мы видим, что два <select> должны пройти в параметре 3 и 1 соответственно. В настоящее время напишите интерфейс в соответствующем файле DAO IXXXXDAO, чтобы написать соответствующий метод. Имя метода такое же, как и значение атрибута идентификатора в mapper.xml:
/ ** * Передайте несколько параметров с использованием метода аннотации, страниц пользовательского продукта, запроса путем входа в идентификатор пользователя * @param page * @param userid * @return startpos},#{pagesize} */ public <wods> selectproductsbypage (@param (value = "startpos") integ PageSize,@param (value = "userId") integer userId); / ** * Получить информацию о количестве продукта и запрос путем входа в идентификатор пользователя * @param userid * @return */ public long getProductScount (@param (value = "userId") integer userId);После завершения определения интерфейса вам необходимо написать соответствующий бизнес -интерфейс и метод реализации, определить такой метод в интерфейсе, а затем переопределить его в классе реализации:
/ ** * Страница отображает продукт * @param запрос * @param model * @param loginuserid */ void showproductsbypage (httpservletrequest, модель модели, int loginuserid);
Следующий метод для реализации класса - вызов слоя DAO и принять параметры, передаваемые контроллером для выполнения обработки бизнес -логики. Запрос используется для получения параметров, передаваемых фронт-конце, а модель используется для возврата результатов обработки на страницу JSP.
@Override public void showproductsbypage (httpservletrequest, модель модели, int loginuserid) {string pagenow = request.getParameter ("pagenow"); Страница страницы = null; List <dropwithblobs> products = new ArrayList <ProductWithBlobs> (); int totalCount = (int) productDao.getProductScount (LoginUserid); if (pagenow! = null) {page = новая страница (totalCount, integer.parseint (pagenow)); AllProducts = this.productDao.selectProductsBypage (page.getStartPos (), page.getPagesize (), LoginUserid); } else {page = новая страница (TotalCount, 1); AllProducts = this.productDao.selectProductsBypage (page.getStartPos (), page.getPagesize (), LoginUserid); } model.addattribute («Продукты», продукты); model.addattribute ("page", page); }Следующим является написание контроллера. Когда пользователю необходимо перейти на страницу этого реального продукта, ему нужно пройти соответствующий метод в контроллере. Этот процесс обработки должен вызвать метод бизнес -уровня для завершения, а затем вернуть результат на динамический дисплей JSP. Сервер генерирует страницу и передает ее клиенту (браузер) для реальности. Это процесс MVC.
/ ** * Инициализировать страницу «My Products» Список JSP, с функцией подкидки * * @param запрос * @param model * @return */ @requestmapping (value = "map path", method = requestmethod.get) public String showmyproduct (httpservletrequest, модель модели) {// get loginuser in session loginuser = (пользователь) {// request.getSession (). getattribute ("loginuser"); // Определите, является ли сеанс недействительным, если (loginuser == null || "" .equals (loginuser)) {return "redirect:/"; } int loginUserid = loginuser.getUserid (); // ProductService здесь является объектом инъецированного интерфейса iProDuctService This.productservice.showProductsBypage (запрос, модель, loginUserid); вернуть "JSP Path to Jump To"; }Я не буду написать приемную часть страницы JSP. Все одинаковы, то есть они объединяют JSTL и EL, чтобы написать это. (Я также выступил с решением при выходе. Если принятые параметры пусты, то для вывода нет продукта. Только когда принятые параметры не пустые, вывод вывод будет выцирован.
<!-Начало функции подкидки-> <div align = "center"> <font size = "2"> total $ {page.totalpagecount} page </font> <font size = "2"> Page $ {page.pagenow} </font> <a href = "myproductpage? Pagenow = 1" rel = "nofloyL" relowlow = "nof nofloyL" nofloyL "nofloyL". <C: Выберите> <C: When Test = "$ {page.pagenow - 1> 0}"> <a href = "myProductPage? Pagenow = $ {page.pageNow - 1}" rel = "External noFollow"> предыдущая страница </a> </c: when> <c: when test = "$ {page.pagenow - 1 <= 0 </c: when> <c: when test =" href = "myProductPage? pagenow = 1" rel = "enferlolow" rel = "внешний nofollow"> предыдущая страница </a> </c: of> </c: выберите> <c: выберите> <c: when test = "$ {page.totalpagecount == 0}"> <a href = "myproductpage? rel = "внешний nofollow" rel = "внешний nofollow"> следующая страница </a> </c: when> <c: of test = "$ {page.pagenow + 1 <page.totalpagecount}"> <a href = "myProductPage? Pagenow = $ {page.pagenow + 1}" rel = "nofollow"> $ wher> </cagenow + 1} " <C: Когда тест = "$ {page.pagenow + 1> = page.totalpagecount}"> <a href = "myproductpage? pagenow = $ {page.totalpagecount}" rel = "Внешний nofollo test = "$ {page.totalPageCount == 0}"> <a href = "myProductPage? Pagenow = $ {page.pagenow}" rel = "внешний nofollow" rel = "uverse nofollow"> последняя страница </a> </c: hef> <c: иначе> <- href = "myProductPage? pagenow = $ {page.totalPageCount}" rel = "внешний nofollow" rel = "внешний nofollow"> последняя страница </a> </c: в противном случае> </c: выберите> </div> <!-Функция страниц->2. Петчинка запроса
Что касается подготовки запросов, процесс примерно такой же, за исключением того, что третий параметр (вышеупомянутый является логинзаторидом) должен принять параметры ввода пользователя. Таким образом, нам необходимо принять параметр ввода пользователя в контроллере (<Input> на странице передается в методе GET), а затем добавить его в сеанс, чтобы завершить пейдж запросов (здесь, из -за гиперссылки на «следующей странице», различные страницы JSP используются для обработки пластинки и поиска. Метод, завершенный на странице JSP, еще не найден, и Duplicate. Вы можете получить код. Появляется. Появляется. Появляется. Появляется. В случае, что вы можете. Появление. Появление. В результате. Вывод. В результате. Вывод. отдельно и загрузите его с помощью тега <clact> на требуемую страницу JSP, чтобы код можно было избежать):
Вот код для контроллера в качестве ссылки:
/ ** * Запросить продукт по названию продукта * @param запрос * @param model * @return */ @requestmapping (value = "address", method = requestmethod.get) public String searchPorproducts (httpserveltrequest, модель модели) {httpsession session = request.getSession (); String param = request.getParameter ("param"); String condity = (string) session.getAttribute ("condition"); // сначала определите, является ли условие в сеансе пустым, если (условие == null) {condy = new String (); session.setattribute («условие», условие); // Если условие в сеансе пустовано, определите, пустым ли пропущенный параметр. Если он пуст, перейдите на страницу результатов поиска if (param == null || "" .equals (param)) {return "private/space/productionearchresult"; }} // Если сеанс не является пустым, а входящее условие поиска не является пустым, затем назначьте Param в условие if (param! = Null &&! (".". session.setattribute («условие», условие); } // Используйте значение атрибута условия в сеансе в качестве условия запроса вернуть "прыгнутая страница"; }Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.