


Wie das MVC-Framework die Paging-Abfrage von Datenbankdaten implementiert
Der Inhalt dieses Artikels besteht darin, vorzustellen, wie das MVC-Framework die Paging-Abfrage von Datenbankdaten implementiert. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Dieser Artikel verwendet den MVC-Modus zum Implementieren von Paging-Abfragen. Der Blog enthält viele umfassende und detaillierte Erklärungen. Zunächst gibt es ein einfaches Diagramm um das Ausführungsprinzip des MVC-Frameworks zu verstehen:
MVC-Muster (dreistufiges Architekturmuster)
( Model-View-Controller) ist eine Art Software-Engineering. Ein Software-Architekturmodell, das das Softwaresystem in drei grundlegende Teile unterteilt: Modell, Ansicht und Controller.
Das MVC-Muster wurde erstmals 1974 von Trygve Reenskaug vorgeschlagen. Es handelt sich um ein Software-Designmuster, das Xerox PARC in den 1980er Jahren für die Programmiersprache Smalltalk erfunden hat. Der Zweck des MVC-Musters besteht darin, ein dynamisches Programmierdesign zu implementieren, nachträgliche Änderungen und Erweiterungen des Programms zu vereinfachen und die Wiederverwendung bestimmter Programmteile zu ermöglichen. Darüber hinaus macht dieser Modus die Programmstruktur intuitiver, indem er die Komplexität vereinfacht. Das Softwaresystem trennt seine Grundteile und gibt jedem Grundteil auch die ihm zustehenden Funktionen. Fachleute können nach ihrem eigenen Fachwissen gruppiert werden:
(Controller) – Verantwortlich für die Weiterleitung von Anfragen und deren Bearbeitung.
(Ansicht) – Interface-Designer entwerfen grafische Interfaces.
(Modell) – Programmierer schreiben die Funktionen, die das Programm haben sollte (Implementierung von Algorithmen usw.), und Datenbankexperten führen die Datenverwaltung und das Datenbankdesign durch (können bestimmte Funktionen realisieren).
Funktionsweise von MVC
MVC ist ein Entwurfsmuster, das die Trennung von Eingabe, Verarbeitung und Ausgabe der Anwendung erzwingt. Anwendungen, die MVC verwenden, sind in drei Kernkomponenten unterteilt: Modell, Ansicht und Controller. Sie erledigen jeweils ihre eigenen Aufgaben.
Ansicht
Eine Ansicht ist die Schnittstelle, die Benutzer sehen und mit der sie interagieren. Bei altmodischen Webanwendungen ist die Ansicht eine Schnittstelle, die aus HTML-Elementen besteht. In Webanwendungen neuen Stils spielt HTML immer noch eine wichtige Rolle in der Ansicht, aber es sind immer wieder neue Technologien entstanden, darunter Macromedia Flash und einige Auszeichnungssprachen und Webdienste wie XHTML, XML/XSL, WML usw. Der Umgang mit der Schnittstelle der Anwendung wird immer anspruchsvoller. Einer der großen Vorteile von MVC besteht darin, dass es viele verschiedene Ansichten für Ihre Anwendung verarbeiten kann. In der Ansicht findet keine echte Verarbeitung statt, unabhängig davon, ob die Daten online oder in einer Mitarbeiterliste gespeichert sind. Sie dient lediglich dazu, die Daten auszugeben und dem Benutzer die Möglichkeit zu geben, sie zu bearbeiten.
Modell
Das Modell repräsentiert Unternehmensdaten und Geschäftsregeln. Unter den drei Komponenten von MVC hat das Modell die meisten Verarbeitungsaufgaben. Es könnte beispielsweise Komponentenobjekte wie EJBs und ColdFusion-Komponenten zur Verwaltung von Datenbanken verwenden. Die vom Modell zurückgegebenen Daten sind neutral, was bedeutet, dass das Modell nichts mit dem Datenformat zu tun hat, sodass ein Modell Daten für mehrere Ansichten bereitstellen kann. Die Codeduplizierung wird reduziert, da der auf das Modell angewendete Code nur einmal geschrieben werden muss und von mehreren Ansichten wiederverwendet werden kann.
Controller
Der Controller akzeptiert Benutzereingaben und ruft Modelle und Ansichten auf, um die Anforderungen des Benutzers zu erfüllen. Wenn also auf einer Webseite auf einen Hyperlink geklickt und ein HTML-Formular gesendet wird, gibt der Controller selbst nichts aus und führt keine Verarbeitung durch. Es empfängt lediglich die Anforderung und entscheidet, welche Modellkomponente aufgerufen werden soll, um die Anforderung zu verarbeiten. Anschließend wird festgelegt, welche Ansicht zum Anzeigen der von der Modellverarbeitung zurückgegebenen Daten verwendet werden soll. Nun fassen wir den MVC-Verarbeitungsprozess zusammen. Zuerst empfängt der Controller die Anfrage des Benutzers und entscheidet, welches Modell zur Verarbeitung aufgerufen werden soll. Anschließend verarbeitet das Modell die Anfrage des Benutzers und gibt die Daten zurück mit der entsprechenden Ansicht Die Daten werden dem Benutzer über die Präsentationsschicht präsentiert.
Nachdem die Einführung abgeschlossen ist, fahren wir mit den Schritten der Paging-Abfrage fort:
Bleiben Sie bei den alten Regeln und gehen Sie direkt zum Code:
Der erste Teil (Leitfadenpaket, Konfigurationsdatei, JSP-Frontend-Teil):
[JAR-Paket-Download-Adresse] http://archive.apache.org/dist
Konfigurationsdatei :
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/factory jdbc.username=root jdbc.password=ps123456
JSP-Teil:
nbsp;html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <meta> <title>Insert title here</title> <style> table tr td{ border:1px solid black; } </style>
雇员编号 | 雇员姓名 | 雇员薪水 | 雇员职位 |
${tt.empno} | ${tt.ename} | ${tt.sal} | ${tt.job } |
Zweiter Attributklassenteil (Emp):
package cn.pk.entity; public class Emp { private String empno; private String ename; private String deptno; private int sal; private String job; public String getEmpno() { return empno; } public void setEmpno(String empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getDeptno() { return deptno; } public void setDeptno(String deptno) { this.deptno = deptno; } public int getSal() { return sal; } public void setSal(int sal) { this.sal = sal; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } }
Dritter Controller-Teil (EmpServlet):
package cn.pk.controller; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.lang.StringUtils; import cn.pk.entity.Emp; import cn.pk.servlet.EmpService; import cn.pk.servlet.impl.EmpServiceImpl; import cn.pk.util.MyDbUtils; import cn.pk.util.PageBean; /** * Servlet implementation class EmpSerlvet */ @WebServlet(urlPatterns="/listEmp") public class EmpSerlvet extends HttpServlet { private EmpService service=new EmpServiceImpl(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ename = request.getParameter("ename"); String curPage=request.getParameter("curPage"); String pageNum= request.getParameter("pageNum"); try { PageBean<emp> pb=service.queryEmp(ename, curPage, pageNum); request.setAttribute("pb", pb); request.getRequestDispatcher("/emp.jsp").forward(request, response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }</emp>
Der vierte Tool-Klasse-Util-Teil:
Mit Datenbank verbinden:
/** * */ package cn.pk.util; import java.io.IOException; import java.util.Properties; import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; /** * @author 摸摸大白兔 *时间 2017年10月19日 下午3:55:46 * */ public class MyDbUtils { public static BasicDataSource bds=new BasicDataSource(); static { Properties p=new Properties(); try { p.load(MyDbUtils.class.getResourceAsStream("/jdbc.properties")); bds.setDriverClassName(p.getProperty("jdbc.driver")); bds.setUrl(p.getProperty("jdbc.url")); bds.setUsername(p.getProperty("jdbc.username")); bds.setPassword(p.getProperty("jdbc.password")); } catch (IOException e) { e.printStackTrace(); } } }
Seitenhilfe Klasse:
package cn.pk.util; import java.util.List; /** * 分页的帮助类 * @author 摸摸大白兔 *时间 2017年10月20日 下午2:14:26 * */ public class PageBean<t> { public void calc() { } /** * 构造方法 * @param curPage当前页 * @param pageNum每页显示的条数 * @param total总条数 */ public PageBean(int curPage,int pageNum,int total) { //计算上一页 this.prePage = curPage==1?1:curPage-1; //计算总页数 this.totalPage=total%pageNum==0?total/pageNum:total/pageNum+1; //下一页 this.nextPage=curPage==totalPage?totalPage:curPage+1; //当前页数的下标 this.startIndex=(curPage-1)*pageNum; this.total=total; this.curPage=curPage; this.pageNum=pageNum; } /** * 当前查询的默认当前页=1; * (页面传递参数) */ private int curPage; /** * 每一页的数据条数默认10条 * 页面传递的参数 */ private int pageNum=10; /** * 上一页 *根据当前页判断 *curPage=1 prePage=1; *curPage>1 prePage=curPage-1; */ private int prePage; /** * 下一页 * curPage=totalpage nextPage=totalpage; * curPage<totalpage private> data; /** * 开始的索引 * startIndex = (curPage-1)*pageNum */ private int startIndex; public int getCurPage() { return curPage; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public void setCurPage(int curPage) { this.curPage = curPage; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPrePage() { return prePage; } public void setPrePage(int prePage) { this.prePage = prePage; } public int getNextPage() { return nextPage; } public void setNextPage(int nextPage) { this.nextPage = nextPage; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public List<t> getData() { return data; } public void setData(List<t> data) { this.data = data; } }</t></t></totalpage></t>
Der Persistenzschichtteil der fünften Modellschicht:
package cn.pk.dao.impl; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.lang.StringUtils; import cn.pk.dao.EmpDao; import cn.pk.entity.Emp; import cn.pk.util.MyDbUtils; /** * 模型层的持久层(数据库的sql语句) * @author 摸摸大白兔 *时间 2017年10月20日 下午1:24:12 * */ public class EmpDaoImp implements EmpDao{ public int countEmp(String ename) throws SQLException { QueryRunner qr=new QueryRunner(MyDbUtils.bds); String sql="select count(*) as myCount from newemp"; if(StringUtils.isNotEmpty(ename)) { sql+=" where ename like '%"+ename+"%'"; } Map map=(Map)qr.query(sql,new MapHandler()); return Integer.parseInt(map.get("myCount").toString()); } @Override public List<emp> queryEmp(String ename,int startIndex,int pageNum) throws SQLException { QueryRunner qr=new QueryRunner(MyDbUtils.bds); String sql="select * from newemp"; if(StringUtils.isNotEmpty(ename)) { sql+=" where ename like '%"+ename+"%'"; } sql+=" limit "+startIndex+","+pageNum; List<emp> empList = (List<emp>)qr.query(sql,new BeanListHandler(Emp.class)); return empList; } }</emp></emp></emp>
Der Entschuldigungsklassenteil:
package cn.pk.dao; import java.sql.SQLException; import java.util.List; import cn.pk.entity.Emp; public interface EmpDao { public int countEmp(String ename) throws SQLException ; List<emp> queryEmp(String name,int startIndex,int pageNum) throws SQLException; }</emp>
第六servlet部分:
package cn.pk.servlet.impl; import java.sql.SQLException; import java.util.List; import org.apache.commons.lang.StringUtils; import cn.pk.dao.EmpDao; import cn.pk.dao.impl.EmpDaoImp; import cn.pk.entity.Emp; import cn.pk.servlet.EmpService; import cn.pk.util.PageBean; public class EmpServiceImpl implements EmpService{ private EmpDao dao=new EmpDaoImp(); @Override public PageBean<emp> queryEmp(String ename,String curPage,String pageNum) throws Exception { //如果第一次没有访问当前页 if(StringUtils.isEmpty(curPage)) { curPage="1"; } if(StringUtils.isEmpty(pageNum)) { pageNum="10"; } //转换为int类型 int curPageIn =Integer.parseInt(curPage); int pageNumIn= Integer.parseInt(pageNum); int total=dao.countEmp(ename); PageBean<emp> pb=new PageBean(curPageIn,pageNumIn,total); List<emp> queryEmp = dao.queryEmp(ename,pb.getStartIndex(), pb.getPageNum()); pb.setData(queryEmp); return pb; } }</emp></emp></emp>
servlet接口类部分:
package cn.pk.servlet; import java.sql.SQLException; import java.util.List; import cn.pk.entity.Emp; import cn.pk.util.PageBean; public interface EmpService { public PageBean<emp> queryEmp(String ename, String curPage,String pageNum) throws Exception; }</emp>
最后的执行效果如图:
好了。一个简易完整版的数据库表查询就完成了;
Das obige ist der detaillierte Inhalt vonWie das MVC-Framework die Paging-Abfrage von Datenbankdaten implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



jsp gehört zum Backend. Der Kern von JSP ist ein Servlet, und Servlet ist eine serverseitige Java-Anwendung, sodass JSP eine Back-End-Technologie ist. JSP wird auf dem Netzwerkserver bereitgestellt und kann auf vom Client gesendete Anforderungen reagieren und basierend auf dem Anforderungsinhalt dynamisch Webseiten in HTML, XML oder anderen Formatformaten generieren und diese dann an den Anforderer zurücksenden. Die JSP-Technologie verwendet Java als Skriptsprache, um Dienste für HTTP-Anforderungen von Benutzern bereitzustellen, und kann komplexe Geschäftsanforderungen zusammen mit anderen Java-Programmen auf dem Server bewältigen.

Der Unterschied zwischen JSP und HTML: 1. Betriebsmechanismus; 3. Beziehung zu Java; 9. Dateisuffixe und Identifizierungstools; 10. Community und Support; Detaillierte Einführung: 1. Betriebsmechanismus. HTML ist eine Auszeichnungssprache, die hauptsächlich zum Beschreiben und Definieren des Inhalts von Webseiten verwendet wird. Sie wird vom Browser interpretiert und ausgeführt die Serverseite usw. warten.

Nachdem das neue Springboot-Projekt erstellt wurde, lautet das Verzeichnis wie folgt: Schritt 1: Fügen Sie den zum Konfigurieren von JSP erforderlichen JAR-Paketcode zur POM-Datei des Projekts hinzu: org.apache.tomcat.embedtomcat-embed-jasperprovided Schritt 2: Erstellen Sie ein neues Verzeichnis webapp unter dem Hauptpfad, erstellen Sie einen neuen Pfad WEB-INF unter webapp, erstellen Sie einen neuen Pfad jsp unter WEB-INF und platzieren Sie die JSP-Datei, die wir verwenden möchten, unter diesem Pfad. Schritt 3: Konfigurieren Sie den Zugriffspfad und den Suffixcode von die JSP-Datei in der Hauptkonfigurationsdatei: spring .mvc.view.prefix=/WEB-INF/jsp/sp

Da sich Webanwendungen ständig weiterentwickeln, ist es wichtig, Anwendungen schneller und effizienter zu entwickeln. Und da RESTful API in Webanwendungen weit verbreitet ist, müssen Entwickler verstehen, wie RESTful API erstellt und implementiert wird. In diesem Artikel besprechen wir, wie man das MVC-Muster und die RESTful-API mithilfe des CodeIgniter-Frameworks implementiert. Einführung in das MVC-Muster MVC (Model-Vie

Implementierungsschritte: 1. Führen Sie die JSTL-Tag-Bibliothek in die JSP-Seite ein. 3. Paginieren Sie die Daten. 5. Zeigen Sie die Nummer entsprechend der aktuellen Seite an Rufen Sie einfach die entsprechenden Daten aus den Paging-Daten ab und zeigen Sie sie auf der Seite an.

1. Die Kern-SQL-Anweisung zum Implementieren der Paging-Abfrage (1) Die SQL-Anweisung zum Abfragen der Gesamtzahl der Datensätze in der Datenbank: selectcount(*)from+(table name); (2) Die SQL-Anweisung zum Abfragen der Anzahl der Datensätze jede Abfrage: wobei: 0 der durchsuchte Index ist, 2 die Anzahl der jedes Mal durchsuchten Elemente ist. select*from table name limit0,2; 2. Code-Implementierung* Ich habe diese beiden Klassen im vorherigen Artikel geschrieben, DBconnection-Klasse: Wird zum Abrufen von Datenbankverbindungen verwendet, Author-Objektklasse. Klicken Sie auf den Link, um den Code für diese beiden Klassen anzuzeigen. Klicken Sie auf den Link, um die DBconnection-Klasse und die Author-Objektklasse (1) anzuzeigen. Anmeldeseite: index.jsp. Fügen Sie hier die Benutzerspalte „title“ ein

Kann JSP durch PHP ersetzt werden? JSP (JavaServerPages) und PHP (HypertextPreprocessor) sind häufig verwendete serverseitige Skriptsprachen zur dynamischen Generierung von Webseiteninhalten. Obwohl sie jeweils ihre eigenen Eigenschaften und Vorteile haben, können sie sich in der praktischen Anwendung gegenseitig vollständig ersetzen? In diesem Artikel werden die Vor- und Nachteile der beiden analysiert und anhand spezifischer Codebeispiele verglichen. Schauen wir uns zunächst die jeweiligen Eigenschaften von JSP und PHP an. JSP basiert auf Java

JSP ist ein dynamischer Webtechnologiestandard. Sein Dateiformat besteht darin, Java-Programmsegmente (Scriptlet) und JSP-Tags (Tags) in herkömmliche Webseiten-HTML-Dateien (.htm, .html) einzufügen, um JSP-Dateien (*.jsp) zu bilden.
