栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mimiSSM商城项目总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mimiSSM商城项目总结

mimiSSM项目总结 一、配置文件 POM.xml文件



  4.0.0

  com.erha.mimissm
  mimissm
  1.0-SNAPSHOT
  war

  
    UTF-8
    1.8
    1.8
    4.12
    5.2.5.RELEASE
    3.5.1
    1.3.1
    1.2.15
    8.0.22
    1.6.4
    1.1.12
    5.1.2
    1.2
    3.0.1
    2.0
    2.9.6
  

  
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-beans
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-jms
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    
    
      com.github.miemiedev
      mybatis-paginator
      ${mybatis.paginator.version}
    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      com.alibaba
      druid
      ${druid.version}
    

    
    
      junit
      junit
      ${junit.version}
      test
    


    
    
      jstl
      jstl
      ${jstl.version}
    
    
      javax.servlet
      javax.servlet-api
      3.0.1
      provided
    
    
      javax.servlet
      jsp-api
      provided
      ${jsp-api.version}
    
    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    
    
      org.json
      json
      20140107
    

    
    
      commons-io
      commons-io
      2.4
    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
  

  
    
    
      
        src/main/java
        
          ***.xml
        
        false
      
      
        src/main/resources
        
          ***.xml
        
        false
      
    
  

1,1、后台配置文件 1.1.1数据库配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j46Bejdb-1633345391513)(C:UsersDELLAppDataRoamingTyporatypora-user-imagesimage-20211004153431493.png)]

作用:

​ 1、获取数据库连接

​ 2、获取dao对象

通过与mybatis.xml文件搭配,SqlSessionFactoryBean获取dao层的Mappers文件,并通过MapperScannerConfigurer创建代理类加载到容器中




    
    
    
        
        
        

        
        
        
        

        
        

        
        
        

        
        

        
    

    
    
        
        
    

    
    
        
        
    


1.1.2Mybatis配置文件

作用:

​ 1、配置sql语句日志

​ 2、配置分页

​ 3、加载dao文件下的Mappers文件




    
    
        
    

    
    
        
    






    
        
        
    


1.1.3service配置文件

作用:

​ 1、扫描获取所有Service文件

​ 2、对每个Service文件内的方法逻辑配置事务

通过注解扫描器将service层对象加载到容器中




    
    

    
    
        
    

    
    
        
            
            
            
            
            

            
            
            
            

            
            
            
            

            
            
            
            
            

            
            
        
    

    
        
        

        
        
    


1.1.4Controller配置文件

作用:

​ 1、获取控制层的业务逻辑

​ 2、配置视图解析器,简化视图操作

​ 3、配置文件上传核心组件

​ 4、配置类型转换实现类,解决ajax请求的json格式

通过注解将Controller层的对象加载到容器中




    
    

    
    
        
        
    

    
    
    

    
    


1.2、前端配置文件 1.2.1、web.xml

作用:

​ 1、创建Spring容器

​ 2、配置中央调度器,与后台配置文件controller层文件相结合

​ 3、设置字符编码过滤器



    
    
        contextConfigLocation
        classpath:applicationContext_*.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:dispatcherServlet.xml
        
        1
    
    
        dispatcherServlet
        *.action
    

    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceRequestEncoding
            true
        
        
            forceResponseEncoding
            true
        
    
    
        characterEncodingFilter
        /*
    


二、业务逻辑 2.1MD5密码加密

在密码框绑定失去焦点事件,在密码输入后,生成MD5格式密码,放于隐藏域中

密码:


提交表单,用户名和MD5编译后的密码,登录成功将用户信息写入会话层

@RequestMapping(value = {"/login.action"},method = RequestMethod.POST)
public String login(String name, String pwd, HttpServletRequest request){
    Admin admin = adminService.login(name, pwd);
    if(admin != null){
        request.getSession().setAttribute("admin", admin); //将用户信息写入会话层中
        return "main";
    }else{
        request.setAttribute("errmsg", "用户名或密码不正确");
        return "login";
    }

2.2用户注册

绑定失去焦点事件,设定异步ajax请求,判断用户名是否存在

​ 注意:此时ajax请求返回格式是text文本格式,而不是json格式,同时Controller层在返回数据时也要对返回数据的格式进行设置

javascript代码


页面代码


   用户名:
   

controller代码

@RequestMapping(value = {"/isExist.action"},produces = "text/plain;charset=utf-8")//设置返回数据格式
@ResponseBody
public String addAdmin(String myname){
    Admin admin = adminService.selectAdminByName(myname);
    if(admin != null){
        return "用户名已存在";
    }
    return "用户名可用";
}

service层代码

@Override
public Admin selectAdminByName(String myname) {
    AdminExample example = new AdminExample();
    AdminExample.Criteria criteria = example.createCriteria();
    criteria.andANameEqualTo(myname);
    List admins = adminMapper.selectByExample(example);
    if(admins.size()>0){
        return admins.get(0);
    }else{
        return null;
    }
}
2.2分页 2.2.1无条件分页

使用请求完成数据获取,一般都是商品页面跳转时使用

跳转源头:

   
  •     商品管理        
  • 控制层的获取数据:

    @RequestMapping(value = {"/split.action"})
    public String split(HttpServletRequest request,String page){
        PageInfo pageInfo = null;
        if(page == null){
            pageInfo = productInfoService.splitProductInfoPage(1, PAGE_SIZE);
        }else{
            pageInfo = productInfoService.splitProductInfoPage(Integer.parseInt(page), PAGE_SIZE);
        }
        request.setAttribute("info",pageInfo);
        //默认转发
        return "product";
    }
    

    判断查看页面数是否为空,若为空默认执行查找第一页,将数据装入pageinfo页面类的结果集中,并将其写入请求中,将请求转发到商品展示页面,包括内部的页码信息

    页面数据展示:

    
            
                    <%----%>
                
    商品名 商品介绍 定价(元) 商品图片 商品数量 操作
    ${p.pName} ${p.pContent} ${p.pPrice} ${p.pNumber}删除--%> <%--   修改
    2.2.2有条件分页

    这一般是页面内部页面跳转,或商品查询时使用到的业务逻辑。

    在普通页面的跳转时也会调用此方法,页面商品筛选同样也是这样的。一般使用ajax请求实现异步更新,在发起请求时,会将页面的条件全部获取到并通过ajax请求传送给Controller层

    
    

    Controller控制端代码:

    @RequestMapping(value = {"pageCondition.action"})
    @ResponseBody
    public void PageCondition(HttpSession session, String page, String pname, String typeid, String lprice, String hprice){
        PageInfo pageInfo = null;
        if(page.length() == 0){
            pageInfo = productInfoService.splitProductInfoPageCondition(pname,typeid,lprice,hprice,"1", PAGE_SIZE);
        }else{
            pageInfo = productInfoService.splitProductInfoPageCondition(pname,typeid,lprice,hprice,page, PAGE_SIZE);
        }
        session.setAttribute("info",pageInfo);//将查询到的数据写入会话层,实现页面没有页面跳转完成页面刷新
    }
    

    service层代码:

    @Override
    public PageInfo splitProductInfoPageCondition(String Pname, String typeid, String lprice, String hprice, String pageNum, Integer pageSize) {
        PageHelper.startPage(Integer.parseInt(pageNum), pageSize);
        ProductInfoExample example = new ProductInfoExample();
        ProductInfoExample.Criteria criteria = example.createCriteria();
        if(!Pname.isEmpty()){
            criteria.andPNameEqualTo(Pname);
        }
        if(Integer.parseInt(typeid) > 0){
            criteria.andTypeIdEqualTo(Integer.parseInt(typeid));
        }
        if(lprice.length() != 0){
            criteria.andPPriceGreaterThanOrEqualTo(Integer.parseInt(lprice));
        }
        if(hprice.length() != 0){
            criteria.andPPriceLessThanOrEqualTo(Integer.parseInt(hprice));
        }
        example.setOrderByClause("p_id desc");
        List productInfos = productInfoMapper.selectByExample(example);
        PageInfo pageInfo = new PageInfo<>(productInfos);
        return pageInfo;
    }
    

    请求参数:

    若使用Dom方法获取元素的value时,当value不存在时,请求参数默认请求的是:"" 长度为0的字符串

    发送请求时若请求参数不存在(未定义),则为null,Controller获取到的请求参数为null

    请求参数存在(定义了)但值为空,则默认为:”“ 长度为0的字符串

    2.3图片上传

    使用到的配置文件

    
    
    

    添加信息页面中图片上传,其中文件发生改变时(选择文件后)就会触发事件,将选择的文件进行上传,后生成图片名称,将其保存到指定的路径下,将生成的文件名称返回给页面保存到隐藏域中,后续若再次更改时,将图片名称进行同请求一起提交,根据图片名称在将指定文件重写为新的文件。表单提交时提交到数据库的是文件的名称,展示时,将此文件名与指定的路径进行拼接,即可得到图片。

    图片介绍
       


    文件上传触发事件:

    当文件栏内容发生改变时就文件转存好,不与提交表单数据库添加数据混用

    原因:起初文件名称隐藏域并没有文件名称。提交表单时,只要提交按钮点击,就已经把提交的数据封装好了,若此时进行单击事件对文件进行转存生成文件名,对提交的数据没有任何影响,提交的文件名称为空。

    
    

    提交触发事件:

    
    
    

    取消:取消无需再对文件进行删除,若没进行提交,服务器中指定路径下的文件就不会被重写,原文件就不会发生改变。

    
       
    
    
    

    控制层代码

    @RequestMapping(value = {"/closeUpdate.action"})
    public String closeUpdate(String page){
        if(page.isEmpty()){
            return "redirect:/prod/split.action";
        }else{
            return "redirect:/prod/split.action?page="+page;
        }
    }
    $("#pNumber").val()==null){
                $("#numerr").text("总数量为空");
                err++;
            }if($("#typeId").val()==undefined || $("#typeId").val()=="" || $("#typeId").val()==null){
                $("#typeIderr").text("类别为空");
                err++;
            }
            if(err > 0){
                return false;
            }else{
                return true;
            }
        }
       
    

    取消:取消无需再对文件进行删除,若没进行提交,服务器中指定路径下的文件就不会被重写,原文件就不会发生改变。

    
       
    
    
    

    控制层代码

    @RequestMapping(value = {"/closeUpdate.action"})
    public String closeUpdate(String page){
        if(page.isEmpty()){
            return "redirect:/prod/split.action";
        }else{
            return "redirect:/prod/split.action?page="+page;
        }
    }
    
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/292377.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号