spring+springmvc+jdbc
阿新 • • 發佈:2018-11-03
分頁
- 主要展示 登入 及 分頁
首先需要 匯入需要的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>