ssm项目随笔(一)

ssm项目随笔(一)
一:配置文件问题:

​ 1:问题描述:静态资源无法访问(例如:css无法渲染)

​ 问题原因:前端控制器(DispatcherServlet)设置了对所有请求响应

​ 解决:配置静态资源映射,例如:

<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/><mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/"/>
<mvc:resources mapping="/layer/**" location="WEB-INF/layer/"/>

​ 2:问题描述:mybatis配置后无法访问到 mapper文件

​ 解决:在dao层的pom.xml中配置,让其识别该类型配置文件

<resource>
    <directory>src/main/java</directory>
    <includes>
        <include>**/*.xml</include>
        <include>**/*.properties</include>
    </includes>
    <filtering>false</filtering>
</resource>  
二:ajax响应

​ 定义一个响应类返回响应数据给前端(ajax)

​ 例如:

public class ResponseResult {
    //状态码
    private int status;
    //响应消息
    private String message;
    //数据
    private Object data;

配置json格式响应:

<mvc:annotation-driven>
<!--        配置 json 形式数据传输-->
        <mvc:message-converters>
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes" value="application/json;charset=utf-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
三:页面数据分页
  • 后端处理(pagehelper.jar)(发送查询的数据到前端)

    ​ 1:配置分页插件,配置到spring与mybatis整合的文件中(SqlSessionFactoryBean内配置)

    ​ 例如:

    <property name="plugins">
        <list>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <props>
                        <prop key="helperDialect">mysql</prop>
                    </props>
                </property>
            </bean>
        </list>
    </property>
    

    ​ 2:使用pagehelper分页

    ​ 在查询数据(findAll)时使用即可,这边给个例子:

    @RequestMapping("/findAll")
        public String findAll(Integer pageNum,Model model){
            if (ObjectUtils.isEmpty(pageNum)){
                pageNum = PageInationConstant.PAGE_NUM;
            }
            PageHelper.startPage(pageNum, PageInationConstant.PAGE_SIZE);
    
            List<Product> productList = productService.findAll();
    
            PageInfo<Product> productPageInfo = new PageInfo<>(productList);
    
            model.addAttribute("pageInfo",productPageInfo);
            return "productManager";
        }
    

    在查询前使用PageHelper.startPage(pageNum,totalNum)

    封装数据的类PageInfo(这里我们也可以自定义一个数据类),这个类是插件中提供的,查看一下其中的属性:

    public class PageInfo<T> extends PageSerializable<T> {
        //当前页
        private int pageNum;
        //每页的数量
        private int pageSize;
        //当前页的数量
        private int size;
    
        //由于startRow和endRow不常用,这里说个具体的用法
        //可以在页面中"显示startRow到endRow 共size条数据"
    
        //当前页面第一个元素在数据库中的行号
        private int startRow;
        //当前页面最后一个元素在数据库中的行号
        private int endRow;
        //总页数
        private int pages;
    
        //前一页
        private int prePage;
    

    这里注意其中的数据:

    ​ 1:pageNum 2:pages 3:list(PageSerializable中的数据)(数据列表)

    ​ 前端数据的展示和分页设置需要这些数据

  • 前端处理(bootstrap-paginator.js)

    ​ 1:如何显示分页图标

    ​ 在需要显示的表格下添加无需列表即可

    ​ 例如:

     </table>
    <ul id="pagination"></ul>
    

    ​ 2:分页配置,页面加载完即启动:

    $(function){
    $('#pagination').bootstrapPaginator({
         bootstrapMajorVersion: 3,
         currentPage: ${pageInfo.pageNum},
         totalPages: ${pageInfo.pages},
    
         pageUrl:function (type,page,current) {
             return '${pageContext.request.contextPath}/backend/product/findAll?pageNum='+page;
                    },
                });
    }
    
四:文件数据上传

​ 问题描述:使用from表单设置enctype="multipart/form-data"后提交文件数据, 后台接收不到数据(null)

​ 问题原因:DispatcherServlet没有能解析multipart请求数据的功能,需要我们配置一个

​ 解决:spring配置文件中配置:例如

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--        value 为字节  1M = 1024kb   1kb = 1024byte  配置10M左右大小-->
        <property name="maxUploadSize" value="10000000"/>
    </bean>
五:controller的vo转化成service层的dto(文件信息传输类)

​ 自定义controller层的vo类和service层的dto类

​ 分层处理后spring-web只在controller层,

​ 其中的CommonsMultipartFile用来接收文件数据,将文件信息传入service层需要转为特定的dto

六:bootstrapValidate表单校验

​ 问题描述:表单校验数据是否存在时向后端发请求时反应错误

​ 问题原因:bootstrapValidate中的remote.js默认GET请求,GET发请求时中文会转为16进制形式

​ 解决:改用POST形式

fields: {
    name: {
        validators: {
            notEmpty: {
                message: '用户名不能为空'
            },
                remote:{
                    type:'post',                        			              url:'${pageContext.request.contextPath}/backend/product/checkName'
                }
        }
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值