spring+springmvc+jdbc

分页

  • 主要展示 登录 及 分页

首先需要 导入需要的jar

在这里插入图片描述

配置 web.xml

<!-- 加载 spring 所有的 .xml文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-*.xml</param-value>
    </context-param>
    <!--配置 spring 的 servlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--做 spring 所有初始化操作-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

applicationContext-jdbc.xml 标注注解

<!-- 使spring扫描包下的所有类,让标注spring注解的类生效 -->
    <context:component-scan base-package="com.offcn.service"/>
    <context:component-scan base-package="com.offcn.dao"/>

springmvc-servlet.xml

<!-- 扫描 controller 下所有的包 -->
	<context:component-scan base-package="com.offcn.controller"/>
	<!-- 开启注解驱动 -->
    <mvc:annotation-driven/>

	<!-- 完成视图的对应 -->
	<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>

创建 dao / dao实现 service / service 实现

  • dao 层
public interface UserDao {
    //根据用户名来进行查询
    User selectByName(String loginName);

    //获取数据,第一个参数代表的是当前页,第二个参数代表页量
    List<User> selectAllUser(Integer currentPageNo,Integer pageSize);

    //查询总记录数
    Integer selectUserCount();
}
  • dao 层实现
@Repository("userDao")
public class UserDaoImpl implements UserDao {
    @Override
    public User selectByName(String loginName) {
        String sql = "select * from user where uname=?";
        return (User) BaseDao.executeQuery(sql,new Object[]{loginName},new BeanResultHandler(User.class));
    }

    @Override
    public List<User> selectAllUser(Integer currentPageNo, Integer pageSize) {
        String sql = "select * from user limit ?,?";
        return (List<User>) BaseDao.executeQuery(sql,new Object[]{(currentPageNo-1)*pageSize,pageSize},new BeanListResultHandler(User.class));
    }

    @Override
    public Integer selectUserCount() {
        String sql = "select count(1) as c from user";
        List list = (List) BaseDao.executeQuery(sql, null, new ArrayResultHandler());
        //因为Object 不能直接转int 因此先转String 再转int
        String count = list.get(0)+"";
        return Integer.parseInt(count);
    }
}
  • service 接口
public interface UserService {
    //根据用户名来进行查询
    User selectByName(String uname,String upwd);

    //获取数据,第一个参数代表的是当前页,第二个参数代表页量
    List<User> selectAllUser(Integer currentPageNo, Integer pageSize);

    //查询总记录数
    Integer selectUserCount();
}
  • service 实现
@Service("userService")
public class UserServiceImpl implements UserService {
    @Resource
    private UserDao userDao;

    @Override
    public User selectByName(String uname, String upwd) {
        User user = userDao.selectByName(uname);
        //判断是否登录成功
        if(user.getUpwd().equals(upwd)){
            return user;
        }
        return null;
    }

    @Override
    public List<User> selectAllUser(Integer currentPageNo, Integer pageSize) {
        return userDao.selectAllUser(currentPageNo,pageSize);
    }

    @Override
    public Integer selectUserCount() {
        return userDao.selectUserCount();
    }
}
  • 分页的方法
@Controller
@RequestMapping("/userController")
public class UserController {
    @Resource
    private UserService userService;

    @RequestMapping(value = "login",method = RequestMethod.POST)
    public String login(@RequestParam(value = "uname",required = false) String uname,
                        @RequestParam(value = "upwd",required = false) String upwd, Model model){

        User user = userService.selectByName(uname, upwd);
        //跳转到首页
        if (user != null){
            model.addAttribute("user",user);
            /*redirect 这个代表重定向到 */
            /*forward 这个代表的是转发*/
            return "redirect:toPage";
        }
        return "error";
    }

    //pageUtils 返回一个pageUtils
    @RequestMapping("toPage")
    public String toPage(@RequestParam(value = "currentPageNo",required = false) String currentPageNo,
                         @RequestParam(value = "pageSize",required = false) String pageSize,Model model){

        //就是第一次没有的时候,就让其显示在首页
        if(currentPageNo == "" || currentPageNo == null){
            currentPageNo = "1";
        }
        if (pageSize == null || pageSize == ""){
            pageSize = "5";
        }

        PageUtils pageUtils = new PageUtils();
        //给pageUtils 赋值
        //获取查询出来的集合
        List<User> list = userService.selectAllUser(Integer.parseInt(currentPageNo), Integer.parseInt(pageSize));
        //查询 总记录数
        Integer totalCount = userService.selectUserCount();
        //计算总页数
        Integer totalPageSize = totalCount % Integer.parseInt(pageSize) == 0 ? totalCount / Integer.parseInt(pageSize) : totalCount / Integer.parseInt(pageSize) + 1;


        //当前页
        pageUtils.setCurrentPageNo(Integer.parseInt(currentPageNo));
        //每页显示的条数
        pageUtils.setPageSize(Integer.parseInt(pageSize));
        //总共有多少条
        pageUtils.setTotalCount(totalCount);
        //总共有多少页
        pageUtils.setTotalPageSize(totalPageSize);
        //获取的集合
        pageUtils.setUserList(list);
        model.addAttribute("pageUtils",pageUtils);

        return "showInfo";
    }


}
  • 分页页面显示代码
<body>
    <table border="1" cellspacing="0" cellpadding="0">
        <tr id="box">
            <th>编号</th><th>姓名</th><th>密码</th><th>性别</th>
        </tr>
        <c:forEach var="user" items="${pageUtils.userList}">
        <tr>
            <td>${user.uid}</td>
            <td>${user.uname}</td>
            <td>${user.upwd}</td>
            <td>${user.usex}</td>
        </tr>
        </c:forEach>
    </table>
    <c:choose>
        <c:when test="${pageUtils.currentPageNo>1}">
            <a href="toPage?currentPageNo=1">首页</a>
            <a href="toPage?currentPageNo=${pageUtils.currentPageNo-1}">上一页</a>
        </c:when>
        <c:otherwise>
            <span style="color:#999">首页</span>
            <span style="color:#999">上一页</span>
        </c:otherwise>
    </c:choose>
    [${pageUtils.currentPageNo}/${pageUtils.totalPageSize}]
    <c:choose>
        <c:when test="${pageUtils.currentPageNo < pageUtils.totalPageSize}">
            <a href="toPage?currentPageNo=${pageUtils.currentPageNo+1}">下一页</a>
            <a href="toPage?currentPageNo=${pageUtils.totalPageSize}">末页</a>
        </c:when>
        <c:otherwise>
            <span style="color:#999">下一页</span>
            <span style="color:#999">末页</span>
        </c:otherwise>
    </c:choose>
</body>

猜你喜欢

转载自blog.csdn.net/weixin_43332168/article/details/83120078