美文网首页
一个page的项目,fastjson和artTemplate以及

一个page的项目,fastjson和artTemplate以及

作者: 小猪Harry | 来源:发表于2018-07-13 21:18 被阅读0次

1,首先建立MySQL数据库:

drop database if EXISTS jdbc;
CREATE database if not EXISTS jdbc;
use jdbc;

drop table if exists user;
create table if not EXISTS user(
        id int(11) PRIMARY KEY NOT NULL auto_increment,
        name VARCHAR(50) NOT NULL,
        pwd VARCHAR(50) NOT NULL
);

insert into user(name,pwd) values ('赵1' ,'123456' );
insert into user(name,pwd) values ('钱2' ,'123456' );
insert into user(name,pwd) values ('孙3' ,'123456' );
insert into user(name,pwd) values ('李21' ,'123456' );
insert into user(name,pwd) values ('周22' ,'123456' );
insert into user(name,pwd) values ('吴23' ,'123456' );
insert into user(name,pwd) values ('郑31' ,'123456' );
insert into user(name,pwd) values ('王32' ,'123456' );
insert into user(name,pwd) values ('冯33' ,'123456' );

2,导包:


image.png

3,设计结构框架:


image.png

4,编程:

User类,用于存放用户信息,和数据库里的参数对应。

package com.zhu.bean;

/**
 * Created by Think on 2018/7/12.
 */
public class User {
    private int id;
    private String name;
    private String pwd;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

Users类,用户后续包装json对象。

package com.zhu.bean;

import java.util.List;

/**
 * Created by Think on 2018/7/12.
 */
public class Users {
    List<User> userlist;
    private int total;

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public List<User> getUserlist() {
        return userlist;
    }

    public void setUserlist(List<User> userlist) {
        this.userlist = userlist;
    }
}

IUserDao接口类,用户实现UserDao类,使用接口可以在以后的开发中方便转换成实现其他类,比较灵活。

package com.zhu.dao;

import com.zhu.bean.User;

import java.util.List;

/**
 * Created by Think on 2018/7/12.
 */
public interface IUserDao {
    int getUserCount();
    List<User> getPagedUsers(int pageIndex, int pageSize);
}

UserDao类,用户实现两个重要的方法。

package com.zhu.dao;

import com.zhu.bean.User;
import com.zhu.util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Think on 2018/7/12.
 */
public class UserDao implements IUserDao {
    @Override
    public int getUserCount() {
        Connection connection = JDBCUtils.getConnection();//连接数据库
        int total = 0;
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("select count(*) as num from user");

            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next())
            {
                total = resultSet.getInt("num");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return total;//返回查询到的值
    }

    @Override
    public List<User> getPagedUsers(int pageIndex, int pageSize) {
        Connection connection = JDBCUtils.getConnection();
        List<User> list = new ArrayList<>();
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("select * from user limit ?,?");
            preparedStatement.setInt(1,pageIndex*pageSize);
            preparedStatement.setInt(2,pageSize);

            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next())
            {
                User user = new User();
                user.setId(resultSet.getInt("id"));
                user.setName(resultSet.getString("name"));
                user.setPwd(resultSet.getString("pwd"));

                list.add(user);//将该页的每一个用户加入到list里
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return list;//返回该页的用户list
    }
}

Filter01encoding,用来过滤的filter,主要是破译中文编码。

package com.zhu.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * Created by Think on 2018/7/13.
 */
@WebFilter(filterName = "Filter01-encoding",urlPatterns = "*.do")
public class Filter01encoding implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");//request请求行中文解码
        resp.setContentType("text/html;charset=utf-8");//response反馈行中文解码
        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

pageServlet服务器,用来处理页面请求。

package com.zhu.servlet;

import com.alibaba.fastjson.JSON;
import com.zhu.bean.User;
import com.zhu.bean.Users;
import com.zhu.dao.IUserDao;
import com.zhu.dao.UserDao;

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 java.io.IOException;
import java.util.List;

/**
 * Created by Think on 2018/7/12.
 */
@WebServlet(name = "pageServlet",urlPatterns = "/page.do")
public class pageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int pageIndex = Integer.parseInt(request.getParameter("pageIndex"));//jsp页面发送来的参数,?后面带来的参数
        int pageSize = Integer.parseInt(request.getParameter("pageSize"));

        IUserDao iUserDao = new UserDao();//定义接口,实例化为UserDao
        int count = iUserDao.getUserCount();
        List<User> userList = iUserDao.getPagedUsers(pageIndex,pageSize);

        Users users = new Users();
        users.setUserlist(userList);//用Users类进行包装
        users.setTotal(count);

        String json = JSON.toJSONString(users);//转为json字符串
        System.out.println(json);
        response.getWriter().println(json);//将json字符串返回到jsp页面
    }
}

TestDao测试类,用户测试。

package com.zhu.test;

import com.zhu.bean.User;

import com.zhu.bean.User;
import com.zhu.dao.IUserDao;
import com.zhu.dao.UserDao;
import org.junit.Test;

import java.util.List;

/**
 * Created by Think on 2018/7/12.
 */
public class TestDao {
    @Test //这句话Test类一定要加
    public void testCount()
    {
        IUserDao iUserInfoDao = new UserDao();
        int count = iUserInfoDao.getUserCount();
        System.out.println(count);
        List<User> userList = iUserInfoDao.getPagedUsers(1,3);
        for(User user : userList)
        {
            System.out.println(user.toString());
        }
    }
}

JDBCUtils数据库连接组件,配置url。

package com.zhu.util;

import java.sql.*;

/**
 * Created by ttc on 2018/6/14.
 */
public class JDBCUtils {
    private JDBCUtils(){}
    private static Connection con ;

    static{
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8";
            String username="root";
            String password="root";
            con = DriverManager.getConnection(url, username, password);
        }catch(Exception ex){
            throw new RuntimeException(ex+"数据库连接失败");
        }
    }

    /*
     * 定义静态方法,返回数据库的连接对象
     */
    public static Connection getConnection(){
        return con;
    }


    public static void close(Connection con,Statement stat){

        if(stat!=null){
            try{
                stat.close();
            }catch(SQLException ex){}
        }

        if(con!=null){
            try{
                con.close();
            }catch(SQLException ex){}
        }

    }


    public static void close(Connection con,Statement stat , ResultSet rs){
        if(rs!=null){
            try{
                rs.close();
            }catch(SQLException ex){}
        }

        if(stat!=null){
            try{
                stat.close();
            }catch(SQLException ex){}
        }

        if(con!=null){
            try{
                con.close();
            }catch(SQLException ex){}
        }

    }
}

index.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: Think
  Date: 2018/7/12
  Time: 19:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>
<head>
  <title>$Title$</title>
  <%--配置css文件--%>
  <link href="mricode.pagination.css" rel="stylesheet">
  <%--必须首先配置jquery--%>
  <script src="jquery-2.1.4.min.js"></script>
  <%--依附于jquery实现,实现分页功能--%>
  <script src="mricode.pagination.js"></script>
  <%--{{}}符号的配置js文件--%>
  <script src="arttemplate.min.js"></script>
  <script>
      window.onload = function () {
          var page = $("#page");//调用id为page的div
          page.pagination({
              pageIndex: 0,
              pageSize: 2,
              showInfo: true,
              showJump: true,
              showPageSizes: true,
              remote:{
                  url:'${pageContext.request.contextPath}/page.do',//进入page.do的服务器
                  success:function (data) {                       //成功返回data数据,服务器中response回应的json
                      var html = template('test',data);//放入id为test的html模板里
                      document.getElementById('content').innerHTML = html;//将该html整体放入id为content的div内
                  }
              }
          });//json 对象
      }
  </script>
</head>
<body>
<div id="content">

</div>

<%--固定必须有的模块--%>
<div id="page" class="m-pagination"></div>
</body>
</html>

<script id="test" type="text/html">
  <table>
    <thead>
    <tr>
      <td>ID</td>
      <td>姓名</td>
      <td>密码</td>
    </tr>
    </thead>

    <tbody>
    {{each userlist as value index}}
    <tr>
      <td>{{value.id}}</td>
      <td>{{value.name}}</td>
      <td>{{value.pwd}}</td>
    </tr>
    {{/each}}
    </tbody>

  </table>
</script>

运行结果:

image.png
{"total":9,"userlist":[{"id":1,"name":"赵1","pwd":"123456"},{"id":2,"name":"钱2","pwd":"123456"}]}

相关文章

网友评论

      本文标题:一个page的项目,fastjson和artTemplate以及

      本文链接:https://www.haomeiwen.com/subject/ruarpftx.html