ssm项目中翻页功能和模糊搜索功能的实现

在ssm项目中基本都会遇到信息管理,经常用到的一个功能是列表的翻页功能和搜索功能。这里就用户信息系统作简单介绍。

设计页面信息

要得到一个页面基本的信息。应该要知道一个页面最大能有几条信息,总共有多少页,总共有多少条信息以及当前是第几页。可以设计如下属性:

public class PageInfo<T> {
    private List<T> list;
    private int size;
    private int totalPage;
    private int totalCount;
    private int currentPage;
    getter() setter()...
  }

设计数据库操作

既然是分页显示,就不是一次性显示全部的内容了。用limit语句从数据库中取出指定范围的元素。
这里可以在select的时候就加入模糊匹配。用数据库自带的通配符就可以实现:

重新设计dao层的findAll接口这里findAll就是返回某一页的数据了:

List<User> findAll(@Param("start") int start,@Param("username") String username);
<select id="findAll" resultType="user">
        select * from user_tb
        <if test="username!=null and username!= '' ">
            where username like concat("%",#{username},"%")
        </if>
        limit ${start},5
</select>

编写服务层方法

根据传入的信息,构造一个pageInfo对象并传出。
总页数可以通过dao.getTotalCount()得出,用户信息列表可以通过dao.findAll()得出。根据dao层信息整合得到pageInfo

  @Override
    public PageInfo<User> findAll(int currentPage, String username) {
        PageInfo<User> pageInfo=new PageInfo<>();
        pageInfo.setSize(5);
        int tc=userDao.getTotalCount(username);
        pageInfo.setTotalCount(tc);
        //tp为总页数
        int tp=(int)Math.ceil(tc/5.0);
        pageInfo.setTotalPage(tp);

        if(currentPage<1){
            pageInfo.setCurrentPage(1);
        }else if(currentPage>tp){
            pageInfo.setCurrentPage(tp);
        }else{
            pageInfo.setCurrentPage(currentPage);
        }
        //0,5
        int start=(pageInfo.getCurrentPage()-1)*5;
        List<User> userList=userDao.findAll(start,username);
        pageInfo.setList(userList);
        return pageInfo;
    }

编写控制层方法

注意这里传入的参数。在session中暂时存储当前的搜索名字。如果不存,在搜索的时候调用findAll方法就不知道用户搜索的时候填入的信息了。这里的type就是用来指示是否是显示搜索。

  @RequestMapping("/findAll.do")
    public ModelAndView findAll(@RequestParam(defaultValue = "1") int currentPage, String username,
                                @RequestParam(defaultValue = "0") int type, HttpSession session){
        if(type==1){
            session.setAttribute("searchName",username);
        }else{
            username=(String) session.getAttribute("searchName");
        }
        PageInfo<User>pageInfo=userService.findAll(currentPage,username);
        ModelAndView mv=new ModelAndView();
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("user-list");
        return mv;
    }

完善jsp页面

给jsp页面添加页数转换按键:
在按下不同的按键后,传入不同的页码数,调用controller层的findAll()方法。

<div class="box-tools pull-right">
                        <ul class="pagination">
                            <li><a href="/user/findAll.do" aria-label="Previous">首页</a></li>
                            <li><a href="/user/findAll.do?currentPage=${pageInfo.currentPage-1}">上一页</a></li>
                            <c:forEach begin="1" end="${pageInfo.totalPage}" var="pageNum">
                                <li><a href="/user/findAll.do?currentPage=${pageNum}">${pageNum}</a> </li>
                            </c:forEach>
                            <li><a href="/user/findAll.do?currentPage=${pageInfo.currentPage+1}">下一页</a></li>
                            <li><a href="/user/findAll.do?currentPage=${pageInfo.totalPage}" aria-label="Next">尾页</a></li>
                        </ul>
                    </div>

测试

翻页功能
在这里插入图片描述
搜索功能:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SSM 项目实现修改功能通常需要以下步骤: 1. 在前端页面,提供一个表单用于输入需要修改的数据。 2. 在后端控制器,接收前端页面提交的表单数据,并将数据传递给 Service 层。 3. 在 Service 层,调用数据访问层(Dao)的 update 方法,更新数据库的数据。 4. 在数据访问层,编写 update 方法,使用 MyBatis 或者 Hibernate 等框架进行数据更新操作。 下面是一个示例代码,用于在 SSM 项目实现修改功能: 1. 编写前端页面 ```html <form action="/update" method="post"> <input type="hidden" name="id" value="${data.id}" /> <input type="text" name="name" value="${data.name}" /> <input type="text" name="age" value="${data.age}" /> <input type="submit" value="提交" /> </form> ``` 在表单使用隐藏域传递需要修改的数据的 ID。 2. 编写后端控制器 ```java @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/edit/{id}") public String edit(@PathVariable("id") int id, Model model) { User user = userService.getUserById(id); model.addAttribute("data", user); return "edit"; } @RequestMapping("/update") public String update(User user) { userService.updateUser(user); return "redirect:/list"; } } ``` 3. 编写 Service 层 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public void updateUser(User user) { userDao.updateUser(user); } } ``` 4. 编写数据访问层 ```java @Repository public interface UserDao { void updateUser(User user); } ``` 在 UserDao 编写 update 方法,使用 MyBatis 等框架进行数据更新操作。 以上代码仅供参考,实际的实现方式可能因项目需求和技术栈不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值