(SSM)实习第五天——分页与权限的实现

分页的实现
(1)在pom.xml文件中导入“分页”的依赖

<!-- 分页 -->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.1.2</version>
</dependency>


(2)在applicationContext.xml文件中,配置SqlSessionFactory环节中插入对分页插件的声明

<!--分页插件-->
<property name="plugins">
    <array>
        <bean class="com.github.pagehelper.PageInterceptor">
            <property name="properties">
                <props>
                    <prop key="helperDialect">mysql</prop>
                    <prop key="reasonable">true</prop>
                </props>
            </property>
        </bean>
    </array>
</property>
其中属性“reasonable”值true,表示能够判断逻辑是否正确,若为首页,点上一页就不再减一;若为尾页,点下一页就不再加一

(3)修改服务层,调用PageHelper。(持久层和mapper文件不作修改)

@Override
public List<UserInfo> findAll(int page, int size) {
    PageHelper.startPage(page, size);
    return userInfoDao.findAll();
}


(4)修改控制层,调用PageInfo

@RequestMapping("/findAll.do")
public ModelAndView findAll(int page, int size){
    ModelAndView mv = new ModelAndView();
    List<UserInfo> userInfos = userInfoService.findAll(page, size);
    PageInfo pageInfo = new PageInfo(userInfos);
    mv.addObject("pageInfo", pageInfo);
    mv.setViewName("user-list");
    return mv;
}


(5)修改前端页面,增加传参page和size。使用pageInfo达到分页的效果

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


数据库连接问题-解决驼峰命名法不适用于myBatis
mybatis自定义的SQL语句中,如select语句,如果数据库表的字段为驼峰命名,即如img_address这样的形式,那么select语句执行的结果会变成null。
解决办法是在配置文件中加上开启驼峰映射的配置信息。根据配置文件的类型分为以下两种:
1.在properties文件夹中添加

mybatis.configuration.map-underscore-to-camel-case=true
1
2.在mybatis的配置文件中,入mybatis-config.xml中进行配置

<configuration>
    <!-- 开启驼峰映射 ,为自定义的SQL语句服务-->
    <!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->  
    <settings>
      <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

重定向与转发
转发是服务器行为,重定向是客户端行为。转发是同一次请求,重定向是两次不同请求。

转发的过程:
客户端发送请求,服务器接收请求再进行内部跳转。
如下,转发到login.jsp界面

<html>
<body>
<jsp:forward page="/login.jsp"></jsp:forward>
</body>
</html>

重定向的过程:
客户端发送请求,服务器收到请求后发送状态码响应并且发送一个新的地址给客户端,客户端再发送一个新的请求到新的地址。
如下,向新的地址发送请求。

@RequestMapping("/addUser.do")
public String addUser(String username, String password){
    UserInfo userInfo = new UserInfo(0, username, password);
    userInfoService.addUser(userInfo);
    return "redirect:findAll.do?page=1&size=5";
}

权限初步

需求:管理员可以看到用户管理模块,普通用户则不能看到用户管理
实现:增加用户身份表格,身份类型表格

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值