• Spring+Hibernate+struts2+JPA 注解+跨域//完成手机端点击加载更多 下拉加载更多


    一、使用IDEA新建一个maven项目(student)

    1.1.0编写pom文件,添加项目所需要的包

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>org.spring</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
            <relativePath>../pom.xml</relativePath>
        </parent>
        <artifactId>student</artifactId>
        <packaging>war</packaging>
    
        <properties>
            <struts2.version>2.5.8</struts2.version>
            <hibernate.version>5.2.8.Final</hibernate.version>
        </properties>
    
        <!-- 配置打包插件 -->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <warSourceDirectory>web</warSourceDirectory>
                        <webXml>webWEB-INFweb.xml</webXml>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <!-- struts2 -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>${struts2.version}</version>
            </dependency>
            <!-- struts2整合spring的插件 -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>${struts2.version}</version>
                <!-- 排除整合插件自动依赖的spring核心包,
                不然可能会引起版本不一致或冲突的情况。所以使用exclusion
                 排除循环依赖-->
                <exclusions>
                    <!-- 排除struts自动依赖的spring-core版本 -->
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <!-- 排除struts自动依赖的spring-beans版本 -->
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- JSON插件 -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-json-plugin</artifactId>
                <version>${struts2.version}</version>
            </dependency>
            <!-- 引入aspectj的依赖模块 -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.8.9</version>
            </dependency>
            <!-- 引入spring web模块 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.3.6.RELEASE</version>
            </dependency>
            <!-- 引入spring orm 整合hibernate-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.3.6.RELEASE</version>
            </dependency>
            <!--  引入Spring tx事务管理模块-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.6.RELEASE</version>
            </dependency>
            <!-- Hibernate依赖 -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            <!-- JPA依赖支持,添加实体管理器 -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            <!-- DBCP连接池 -->
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
            <!--  mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.35</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
            </dependency>
        </dependencies>
    </project>
    View Code

    在这里我用的是MySql数据库,所以在这里添加MySql的驱动包,其他的数据库添加相应的驱包就行了

    在这里我继承了父类的pom文件

    父类的pom文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.spring</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>
        <!-- 配置maven的常规属性 -->
        <properties>
            <!-- 设置整个maven项目的编码格式 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!-- 设置控制台输出参数的编码格式, 解决乱码  -->
            <orgLine>-Dfile.encoding=UTF-8</orgLine>
        </properties>
    
        <build>
            <plugins>
    
                <!-- 配置maven编译插件,指定maven编译版本 -->
                <plugin>
                    <!-- 插件名称 -->
                    <artifactId>maven-compiler-plugin</artifactId>
                    <!-- 插件配置信息 -->
                    <configuration>
                        <target>1.8</target>
                        <source>1.8</source>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.6.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.3.6.RELEASE</version>
            </dependency>
        </dependencies>
    
    </project>
    View Code

    添加进来的包如下

    二、给项目添加Spring支持 以及Web 支持

    三、给项目新建好相应的包

    在这里没有写建表语句  自动建表   容器在启动的时候会把所需要的表建出来(在ApplicationContext.xml 里面)

            <!-- 是否自动执行DDL语句,(自动建表)-->
            <property name="generateDdl" value="true"/>

    实体类(entity)

     3.0.1(Student)

    package org.student.entity;
    
    import javax.persistence.*;
    
    /**
     * Created by YongLin on 17/3/14.
     */
    @Entity
    @Table(name="STU_INFO")
    public class Student {
        private int sid;
        private String stuName;
        private int age;
        private Team team;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "STU_ID")
        public int getSid() {
            return sid;
        }
    
        public void setSid(int sid) {
            this.sid = sid;
        }
        @Column(name = "STU_NAME")
        public String getStuName() {
            return stuName;
        }
    
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
    
        @Column(name = "STU_AGE")
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @ManyToOne
        @JoinColumn(name = "TEAM_ID")
        public Team getTeam() {
            return team;
        }
    
        public void setTeam(Team team) {
            this.team = team;
        }
    }

     3.0.2(Team)

    package org.student.entity;
    
    import javax.persistence.*;
    
    /**
     * Created by YongLin on 17/3/15.
     */
    @Entity
    @Table(name = "TEAM_INFO")
    public class Team {
        private int tid;
        private String teamName;
    
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "TEAM_ID")
        public int getTid() {
            return tid;
        }
    
        public void setTid(int tid) {
            this.tid = tid;
        }
    
        @Column(name = "TEAM_NAME")
        public String getTeamName() {
            return teamName;
        }
    
        public void setTeamName(String teamName) {
            this.teamName = teamName;
        }
    }

    3.1.1(dao)里面有2个接口  对应2个实现类

    3.1.2StuDao

    package org.student.dao;
    
    import org.student.entity.Student;
    
    import java.util.List;
    
    /**
     * Created by wangl on 2017/2/27.
     */
    public interface StuDao {
        //查询所有学生
        public List<Student> findStudents();
    
        public void save(Student student);
    
        public List<Student> findByTeam(int tid);
    
        public Student findById(int sid);
    
        public List<Student> findStudents(int first, int max);
    }

    3.1.3 StuDaoImpl

    package org.student.dao.impl;
    
    import org.springframework.stereotype.Repository;
    import org.student.dao.StuDao;
    import org.student.entity.Student;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/14.
     */
    @Repository("stuDao")
    public class StuDaoImpl  implements StuDao {
        @PersistenceContext
        private EntityManager em;
        @Override
        public List<Student> findStudents() {
            String jpql = "from Student s";
            return em.createQuery(jpql).getResultList();
        }
    
        @Override
        public void save(Student student) {
                em.persist(student);
            }
    
        @Override
        public List<Student> findByTeam(int tid) {
            String jpql = "from Student s where s.team.tid=?1";
            Query query = em.createQuery(jpql);
            query.setParameter(1,tid);
            return query.getResultList();
            /*String jqpl = "from Student s where s.team.tid=?1";
            Query query = em.createQuery(jqpl);
            query.setParameter(1,tid);
            return query.getResultList();*/
        }
        @Override
        public Student findById(int sid) {
            return null;
        }
    
    
        @Override
        public List<Student> findStudents(int first, int max) {
            String jpql = "from Student s";
            Query query = em.createQuery(jpql);
            //分页
            query.setFirstResult(first);
            query.setMaxResults(max);
            return query.getResultList();
        }
    }

     

    四、给项目配置好 所以需的配置文件

    3.2.1TeamDao

    package org.student.dao;
    import org.student.entity.Team;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/15.
     */
    public interface TeamDao {
        public List<Team> findTeams();
        public  void save(Team team);
    }

    3.2.2TeamDaoImpl

    package org.student.dao.impl;
    
    import org.springframework.stereotype.Repository;
    import org.student.dao.TeamDao;
    import org.student.entity.Team;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/15.
     */
    @Repository("teamDao")
    public class TeamDaoImpl implements TeamDao {
        @PersistenceContext
        private EntityManager em;
    
        @Override
        public List<Team> findTeams() {
            String hql="from Team t";
            return em.createQuery(hql).getResultList();
        }
    
        @Override
        public void save(Team team) {
            em.persist(team);
        }
    
    }

    3.3.1StuService

    package org.student.service;
    
    import org.springframework.stereotype.Service;
    import org.student.entity.Student;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/14.
     */
    @Service("stuService")
    public interface StuService {
        public List<Student> findStudent();
        public void add(Student student);
        public List<Student> findByTeam(int tid);
        public List<Student> findStudents(int first, int max);
    }

     3.3.2StuServiceImpl

    package org.student.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import org.student.dao.StuDao;
    import org.student.entity.Student;
    import org.student.service.StuService;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/14.
     */
    @Service("stuService")
    @Transactional
    public class StuServiceImpl implements StuService {
        @Autowired
        private StuDao stuDao;
        @Override
        public List<Student> findStudent() {
            return stuDao.findStudents();
        }
    
        @Override
        public void add(Student student) {
            stuDao.save(student);
        }
    
        @Override
        public List<Student> findByTeam(int tid) {
            return stuDao.findByTeam(tid);
        }
    
        @Override
            public List<Student> findStudents(int first, int max) {
            return stuDao.findStudents(first,max);
        }
    }

    3.3.3TeamService

    package org.student.service;
    import org.student.entity.Team;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/15.
     */
    public interface TeamSevice {
        public List<Team> findTeams();
        public void save(Team team);
    }

    3.3.4TeamServiceImpl

    package org.student.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import org.student.dao.TeamDao;
    import org.student.entity.Team;
    import org.student.service.TeamSevice;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/15.
     */
    @Service("teamService")
    @Transactional
    public class TeamService implements TeamSevice {
        @Autowired
        private TeamDao teamDao;
        @Override
        public List<Team> findTeams() {
            return teamDao.findTeams();
        }
    
        @Override
        public void save(Team team) {
            teamDao.save(team);
        }
    }

     Action(StuAction)

    package org.student.action;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.student.entity.Student;
    import org.student.entity.Team;
    import org.student.service.StuService;
    import org.student.service.TeamSevice;
    
    import java.util.List;
    
    /**
     * Created by YongLin on 17/3/14.
     */
    @Controller("stuAction")
    public class StuAction {
        private Student student;
        private String message;
        private List<Student> studentList;
        private List<Team> teamList;
        private Team team;
        private int pageNum;
    
        public int getPageNum() {
            return pageNum;
        }
    
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
    
        //注入一个Service
        @Autowired
        private StuService stuService;
        @Autowired
        private TeamSevice teamSevice;
    
        public Student getStudent() {
            return student;
        }
    
        public void setStudent(Student student) {
            this.student = student;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public List<Student> getStudentList() {
            return studentList;
        }
    
        public void setStudentList(List<Student> studentList) {
            this.studentList = studentList;
        }
    
        public List<Team> getTeamList() {
            return teamList;
        }
    
        public void setTeamList(List<Team> teamList) {
            this.teamList = teamList;
        }
    
        public StuService getStuService() {
            return stuService;
        }
    
        public void setStuService(StuService stuService) {
            this.stuService = stuService;
        }
    
        public TeamSevice getTeamSevice() {
            return teamSevice;
        }
    
        public void setTeamSevice(TeamSevice teamSevice) {
            this.teamSevice = teamSevice;
        }
    
        public Team getTeam() {
            return team;
        }
    
        public void setTeam(Team team) {
            this.team = team;
        }
    
        public String find(){
           studentList =  stuService.findStudent();
            return "success";
        }
    
        public String findByPage(){
            //第一个参数表示从第几条开始查MySql的0表示第一条 第二个参数表示查询几条
            System.out.println(pageNum);
            studentList=stuService.findStudents(pageNum,5);
            return  "page";
        }
    
        public String findStusByTeam(){
            studentList = stuService.findByTeam(team.getTid());
            return "byTeamList";
        }
    
        public String findTeams(){
            teamList = teamSevice.findTeams();
            return "teams";
        }
    }

    编写CorsFilter(跨域用的  设置响应头部)  实现了Filter

    package org.student.filter;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class CrosFilter implements Filter{
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
            //相应之前设置响应的头部,授权跨域访问
            HttpServletResponse response = (HttpServletResponse) res;
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setDateHeader("Expires", 0);
            //放行
            filterChain.doFilter(req,res);
        }
        @Override
        public void destroy() {
    
        }
    }

    4.0.1在resource 下面新建applicantionContext.xml  struts.xml如下:

    4.1.2applicantionContext.xml 

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!-- 启用相应的注解处理器,扫描指定的包 -->
        <context:component-scan base-package="org.student"/>
    
        <!-- 配置数据源,使用DBCP连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <!-- 数据源以及连接池属性 -->
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mydate"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
            <property name="initialSize" value="5"/>
            <property name="maxIdle" value="50"/>
            <property name="maxActive" value="60"/>
            <property name="minIdle" value="10"/>
            <property name="maxWait" value="2000"/>
        </bean>
    
        <!-- 配置JPA实现方的适配器,因为JPA实现方有很多,
        Hibernate也是JPA标准的一种实现,因此这里指定为Hibernate的JPA实现适配器-->
        <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <!-- 配置JPA的属性 -->
            <!-- 使用的数据库类型,这里使用的是MYSQL -->
            <property name="database" value="MYSQL"/>
            <!-- 指定数据库方言-->
            <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
            <!-- 在控制台显示sql语句-->
            <property name="showSql" value="true"/>
            <!-- 是否自动执行DDL语句,(自动建表)-->
            <property name="generateDdl" value="true"/>
        </bean>
    
        <!-- 配置实体管理器工厂,Spring会依据这个工厂创建并注入一个实体管理器EntityManager,
        创建出来的EntityManager是由Spring容器管理的,并且会参与到Spring的事务当中,它是线程安全的-->
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <!-- 需要注入一个数据源和JPA的适配器 -->
            <property name="dataSource" ref="dataSource"/>
            <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
            <!-- 指定实体的扫描路径 -->
            <property name="packagesToScan" value="org.student.entity"/>
        </bean>
    
        <!-- 配置JPA事务管理器-->
        <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <!-- 需要注入一个实体管理器工厂 -->
            <property name="entityManagerFactory" ref="entityManagerFactory"/>
        </bean>
    
        <!-- 启用注解事务管理,transaction-manager引用上面的事务管理器-->
        <tx:annotation-driven transaction-manager="txManager"/>
    </beans>

     4.0.3  struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
        <package name="struts" extends="json-default">
            <action name="find" class="stuAction" method="find">
                <result type="json">
                    <param name="root">studentList</param>
                </result>
            </action>
            <action name="findByPage" class="stuAction" method="findByPage">
                <result type="json" name="page">
                    <param name="root">studentList</param>
                </result>
            </action>
    
            <action name="findStusByTeam" class="stuAction" method="findStusByTeam">
                <result type="json" name="byTeamList">
                    <param name="root">studentList</param>
                </result>
            </action>
    
            <action name="findTeams" class="stuAction" method="findTeams">
                <result type="json" name="teams">
                    <param name="root">teamList</param>
                </result>
            </action>
        </package>
    </struts>

     以及在Web下添加相应的文件

     Web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <!-- 配置监听器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!-- 指定spring核心配置文件所在的目录 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <!-- 默认会从WEB—INF下查找applicationContext.xml -->
            <param-value>classpath*:applicationContext.xml</param-value>
        </context-param>
        <filter>
            <filter-name>crosFilter</filter-name>
            <filter-class>org.student.filter.CrosFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>crosFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!-- struts2核心控制器 -->
        <filter>
            <filter-name>dispatcher</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>dispatcher</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>

    在前端页面这边,发起Ajax请求  跨域拿到后台查出的数据

    5.0.1 (点击加载更多  clickmore.html)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
        <title>Title</title>
        <script src="myjs/jquery-1.11.0.js"></script>
        <style>
            #box .box{
                 width: 100%;
                height: 100px;
                padding: 10px 0;
                border: 1px slateblue solid;
                border-left:none;
                border-right: none;
                font-family: "Microsoft YaHei";
             }
            h4{
                text-align: center;
                color: red;
                cursor: pointer;
            }
        </style>
        <script type="text/javascript">
            $(function(){
                //定义一个成员变量
                //从第一条开始查
                var pageNum = 0;
                //页面一加载    从第0 条数据开始加载  MySql的第0 条是第一条
            $.get("http://localhost:8080/findByPage",{"pageNum":pageNum}, function (date) {
                        //查出来的数据填充到div中
                        addBox(date);
                });
                //点击“点击加载更多”的时候
            $("#divAdd").click(function() {
                //发起一个跨域的请求  每次请求5条数据 每次从当前条数的后5条数据开始查(Hibernate提供的分页查询的方法)
                    $.get("http://localhost:8080/findByPage",{"pageNum":pageNum+=5}, function (date) {
                        addBox(date);
                    });
            });
        function addBox(date){
            $.each(date,function(index,obj){
                               $("#box").append("<div class='box'>"+
                            "<div class='div2'>ID:"+obj.sid+"</div>"+
                            "<div class='div1'>姓名:"+obj.stuName+"</div>"+
                            "<div class='div1'>班级:"+obj.team.teamName+"</div>"+
                            "</div>");
                        });
                }
            });                
    </script>
    </head>
    <body>
        <div id="box">
            
        </div>
            <h4 id="divAdd">点击加载更多。。。</h4>
    </body>
    </html>

    运行效果:

    初始化先查出5条数据

    点击"加载更多时",又从后台查出5条数据  

     5.0.2(下滑加载更多 upmore.html)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
        <title>Title</title>
        <script src="myjs/jquery-1.11.0.js"></script>
        <style>
            #box .box {
                width: 100%;
                height: 100px;
                padding: 10px 0;
                border: 1px slateblue solid;
                border-left:none;
                border-right: none;
                font-family: "Microsoft YaHei";
            }
    
            .div2 {
                margin-top: -1px
            }
        </style>
        <script type="text/javascript">
            $(function () {
                //定义一个成员变量
                //从第一条开始查
                var pageNum = 0;
                //页面一加载    从第0 条数据开始加载  MySql的第0 条是第一条
                $.get("http://localhost:8080/findByPage", {"pageNum": pageNum}, function (date) {
                    //查出来的数据填充到div中
                    addBox(date);
                });
                //鼠标滚动事件
                $(window).scroll(function () {
                    if ($(document).scrollTop() >= $(document).height() - $(window).height()) {
                        //当页面移动到最底部的时候
                        //发起一个请求 ,每一次请求查询3条记录
                        $.get("http://localhost:8080/findByPage", {"pageNum": pageNum += 3}, function (date) {
                            addBox(date);
                        });
                    }
                });
                function addBox(date) {
                    $.each(date, function (index, obj) {
                        $("#box").append("<div class='box'>" +
                            "<div class='div2'>ID:" + obj.sid + "</div>" +
                            "<div class='div1'>姓名:" + obj.stuName + "</div>"+
                            "</div>");
                    });
                }
            });
    
        </script>
    
    
    </head>
    <body>
    <div id="box">
    
    
    </div>
    </body>
    </html>

    运行效果:

    页面加载  查出5条数据显示在页面上:

    当滚动条滑到最底端的时候,又发起一个请求 去查询出5条数据

    项目整体结构如下:

  • 相关阅读:
    JavaScript你所不知道的困惑(3)
    Android的代码都得自己一个个敲一遍吗?
    现代化农业在美国的兴起与发展
    高内聚与低耦合实现小记
    iOS 载入图片选择imageNamed 方法还是 imageWithContentsOfFile?
    swift笔记——环境搭建及Hello,Swift!
    HDU 4832(DP+计数问题)
    [TJOI2019]甲苯先生的线段树
    2019-8-31-C#-如何写-DEBUG-输出
    2019-8-31-C#-如何写-DEBUG-输出
  • 原文地址:https://www.cnblogs.com/zhangyongl/p/6589293.html
Copyright © 2020-2023  润新知