1. 程式人生 > >spring+springmvc+jdbc

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>