


Comment le framework MVC implémente la requête de pagination des données de base de données
Le contenu de cet article est de présenter comment le framework MVC implémente la requête de pagination des données de base de données. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Cet article utilise le mode MVC pour implémenter la requête de pagination. C'est un exemple simple de démarrage avec MVC. Le blog contient de nombreuses explications complètes et détaillées. Je vais résumer quelques paragraphes. pour comprendre le principe d'exécution du framework MVC :
Modèle MVC (modèle d'architecture à trois niveaux)
( Model-View-Controller) est un type d'ingénierie logicielle. Un modèle d'architecture logicielle qui divise le système logiciel en trois parties de base : modèle, vue et contrôleur.
Le modèle MVC a été proposé pour la première fois par Trygve Reenskaug en 1974. Il s'agit d'un modèle de conception logicielle inventé par Xerox PARC dans les années 1980 pour le langage de programmation Smalltalk. Le but du modèle MVC est de mettre en œuvre une conception de programmation dynamique, de simplifier les modifications et extensions ultérieures du programme et de permettre la réutilisation de certaines parties du programme. De plus, ce mode rend la structure du programme plus intuitive en simplifiant la complexité. Le système logiciel sépare ses parties de base et donne également à chaque partie de base ses fonctions qui lui sont dues. Les professionnels peuvent être regroupés selon leur propre expertise :
(Contrôleur) - Responsable de l'acheminement des demandes et de leur traitement.
(Afficher) - Les concepteurs d'interfaces conçoivent des interfaces graphiques.
(Modèle) - Les programmeurs écrivent les fonctions que le programme devrait avoir (implémentation d'algorithmes, etc.), et les experts en bases de données effectuent la gestion des données et la conception de bases de données (peuvent réaliser des fonctions spécifiques).
Comment fonctionne MVC
MVC est un modèle de conception qui force la séparation de l'entrée, du traitement et de la sortie de l'application. Les applications utilisant MVC sont divisées en trois composants principaux : le modèle, la vue et le contrôleur. Ils gèrent chacun leurs propres tâches.
Vue
Une vue est l'interface que les utilisateurs voient et avec laquelle ils interagissent. Pour les applications Web anciennes, la vue est une interface composée d'éléments HTML. Dans les applications Web de nouveau style, HTML joue toujours un rôle important dans la vue, mais de nouvelles technologies ont émergé sans cesse, notamment Macromedia Flash et certains langages de balisage. et des services Web comme XHTML, XML/XSL, WML, etc. La gestion de l'interface de l'application devient de plus en plus difficile. L'un des grands avantages de MVC est qu'il peut gérer de nombreuses vues différentes pour votre application. Aucun traitement réel n'a lieu dans la vue, que les données soient stockées en ligne ou dans une liste d'employés. En tant que vue, cela sert simplement à générer les données et à permettre à l'utilisateur de les manipuler.
Modèle
Le modèle représente les données de l'entreprise et les règles métier. Parmi les trois composants de MVC, le modèle comporte le plus de tâches de traitement. Par exemple, il peut utiliser des objets composants tels que les EJB et les composants ColdFusion pour gérer les bases de données. Les données renvoyées par le modèle sont neutres, ce qui signifie que le modèle n'a rien à voir avec le format des données, de sorte qu'un modèle peut fournir des données pour plusieurs vues. La duplication de code est réduite car le code appliqué au modèle ne doit être écrit qu'une seule fois et peut être réutilisé par plusieurs vues.
Contrôleur
Le contrôleur accepte les entrées de l'utilisateur et appelle des modèles et des vues pour répondre aux besoins de l'utilisateur. Ainsi, lorsqu'un lien hypertexte dans une page Web est cliqué et qu'un formulaire HTML est envoyé, le contrôleur lui-même ne génère rien et n'effectue aucun traitement. Il reçoit simplement la demande et décide quel composant de modèle appeler pour gérer la demande, puis détermine quelle vue utiliser pour afficher les données renvoyées par le traitement du modèle. Résumons maintenant le processus de traitement MVC. Tout d'abord, le contrôleur reçoit la demande de l'utilisateur et décide quel modèle doit être appelé pour le traitement. Ensuite, le modèle utilise la logique métier pour traiter la demande de l'utilisateur et renvoie les données. avec la vue correspondante. Les données sont présentées à l'utilisateur via la couche de présentation.
Maintenant que l'introduction est terminée, passons aux étapes de requête de pagination :
Retenez les anciennes règles et accédez directement au code :
La première partie (package guide, fichier de configuration, partie frontale JSP) :
[adresse de téléchargement du package jar] http://archive.apache.org/dist
Fichier de configuration :
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/factory jdbc.username=root jdbc.password=ps123456
Partie JSP :
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 } |
Deuxième partie de classe d'attribut (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; } }
Troisième partie du contrôleur (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>
La quatrième partie Util de la classe d'outils :
Se connecter à la base de données :
/** * */ 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(); } } }
Classe d'aide à la pagination :
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>
Couche de persistance faisant partie de la cinquième couche de modèle :
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>
Excusez la partie cours :
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>
最后的执行效果如图:
好了。一个简易完整版的数据库表查询就完成了;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

jsp appartient au backend. L'essence de jsp est un servlet, et le servlet est une application Java côté serveur, donc jsp est une technologie back-end. JSP est déployé sur le serveur réseau et peut répondre aux requêtes envoyées par le client et générer dynamiquement des pages Web de documents HTML, XML ou autres formats en fonction du contenu de la requête, puis les renvoyer au demandeur. La technologie JSP utilise Java comme langage de script pour fournir des services pour les requêtes HTTP des utilisateurs et peut gérer des exigences commerciales complexes avec d'autres programmes Java sur le serveur.

Une fois le nouveau projet Springboot créé, le répertoire est le suivant : Étape 1 : Ajoutez le code du package jar requis pour configurer jsp au fichier pom du projet : org.apache.tomcat.embedtomcat-embed-jasperprovided Étape 2 : Créez un nouveau répertoire webapp sous le chemin principal, créez un nouveau chemin WEB-INF sous webapp, créez un nouveau chemin jsp sous WEB-INF et placez le fichier jsp que nous voulons utiliser sous ce chemin Étape 3 : Configurez le chemin d'accès et le code de suffixe de. le fichier jsp dans le fichier de configuration principal : spring .mvc.view.prefix=/WEB-INF/jsp/sp

Étapes de mise en œuvre : 1. Introduire la bibliothèque de balises JSTL dans la page JSP ; 2. Obtenir les données de la base de données ; 3. Paginer les données 4. Afficher la barre de navigation de pagination dans la page ; numéro et chaque page, récupérez simplement les données correspondantes des données de pagination et affichez-les sur la page.

À mesure que les applications Web continuent d’évoluer, il est important de développer des applications plus rapidement et plus efficacement. Et comme l'API RESTful est largement utilisée dans les applications Web, il est nécessaire que les développeurs comprennent comment créer et implémenter l'API RESTful. Dans cet article, nous verrons comment implémenter le modèle MVC et l'API RESTful à l'aide du framework CodeIgniter. Introduction au modèle MVC MVC (Model-Vie

La différence entre jsp et html : 1. Mécanisme de fonctionnement ; 2. Objectif ; 3. Relation avec Java ; 4. Fonction ; 5. Relation avec le back-end ; ; 9. Suffixes de fichiers et outils d'identification ; 10. Communauté et support ; Introduction détaillée : 1. Mécanisme de fonctionnement. HTML est un langage de balisage, principalement utilisé pour décrire et définir le contenu des pages Web. Il s'exécute sur le client et est interprété et exécuté par le navigateur. JSP est une technologie de page Web dynamique qui s'exécute sur. le côté serveur, etc. attendez.

1. L'instruction SQL principale pour implémenter la requête de pagination (1) L'instruction SQL pour interroger le nombre total d'enregistrements dans la base de données : selectcount(*)from+(table name); (2) L'instruction SQL pour interroger le nombre d'enregistrements pour chaque requête : où : 0 est l'index recherché, 2 est le nombre d'éléments recherchés à chaque fois. select*from table name limit0,2; 2. Implémentation du code* J'ai écrit ces deux classes dans l'article précédent, classe DBconnection : utilisée pour obtenir des connexions à la base de données, classe d'objet Author. Cliquez sur le lien pour afficher le code de ces deux classes. Cliquez sur le lien pour afficher la classe DBconnection et la classe d'objet Author (1) Page de connexion : index.jsp. Insérer le titre ici la colonne utilisateur

JSP est une norme de technologie Web dynamique. Son format de fichier consiste à insérer des segments de programme Java (Scriptlet) et des balises JSP (tags) dans les fichiers HTML de pages Web traditionnelles (.htm, .html) pour former des fichiers JSP (*.jsp).

Pile technologique de développement JavaWeb : maîtrisez JavaEE, Servlet, JSP, Spring et d'autres technologies utilisées pour le développement Web. Avec le développement rapide d'Internet, dans le domaine actuel du développement logiciel, le développement d'applications Web est devenu une exigence technique très importante. En tant que langage de programmation largement utilisé, Java joue également un rôle important dans le domaine du développement Web. La pile technologique de développement JavaWeb implique plusieurs technologies, telles que JavaEE, Servlet, JSP, Spr
