SSM整合项目:CRM客户管理系统

CRM项目
RequestMethod类,枚举类型。
MultipartFile类,配置接口的实现类。
把之前的数据表拿过来修改一下用。
新建数据库,再运行sql文件,即可导入数据库。
整合SSM框架
新建maven为什么没有生成文件夹啊?
新建maven项目,maven软件的安装位置,maven核心配置文件的位置,maven仓库的位置,这三个选不对,就不能正常创建项目。
添加依赖管理。
新建java和resources文件夹并设置对应属性。
添加静态资源(静态资源添加的位置),加入分页标签。
 
标签库:
1)自定义标签库,标签库中可能有多个标签,也可能只有一个标签。
2)标签的功能也是有java代码实现的,每一个标签都要有java类的支持。
3)继承自TagSupport,就可以书写自定义标签。
 
实现页面展示:
页面布局错乱:Js,css样式都被拦截掉了,所以导致页面布局出现问题。
使用*.do进行解决;通过spring-mvc对静态资源进行放行
 
点击F12再刷新页面才会开始记录网络请求的。
F12:查看网络请求的,对前端页面进行调试。查看Network基本信息,请求了哪些地址及每个URL的网络相关请求信息都可以看的到URL,响应状态码,响应数据类型,响应数据大小,响应时间。

XHR:XMLHttpRequest在后台与服务器交换数据。


 
实现查询条件初始化,其实就是查询导航栏。
springMVC @Value的使用:将某个常量,给变量赋值,供程序使用。@Value获取某个参数的值并不是随随便便就能取到的,需要遵循一定的格式。
1)加载读取配置文件,2)读取其中键值对中键的名字。
resources.properties。
 
三层中,首先编写dao层。
写sql注意数据库的字段和对象的属性名不一样(在这里错了太多次)。
模糊查询和精确查询。
 
只在Service的接口实现类上添加注解,不需要在接口上添加注解
 
通过tomcat日志去查看错误信息,看看是哪里报错了,如何解决?
学会查看tomcat的报错信息,一般都能解决问题,大致哪里写错了。

当前启动的哪个Tomcat,就去看对应的运行日志?Run面板。

log4j.properties 日志的名字


Jsp页面主要用于后台管理系统,页面展示。
EL表达式,JSP指令,JSP脚本,JSP指令内置对象,JSP标签库,Form表单。
如何在jsp页面中发送网路请求?
Form表单的使用:发送网络请求。
jsp页面与java后台的交互还是不熟悉,一定要精通。对表单的网络请求不熟悉。
Jstl标签库:什么时候使用jstl标签库?格式化日期,非空判断,循环遍历等
Jsp页面中如何输入java代码?
 
<Form>提交按钮<input type="submit"> 定义用于向表单处理程序(form-handler)提交表单数据的按钮。
action 属性定义在提交表单时,发送网络请求。
method 属性规定在提交表单时所用的 HTTP 方法(GET POST)。
name 属性:如果要正确地被提交,每个输入字段必须设置一个name 属性。
 
${pageContext.request.contextPath}
pageContext对象是JSP中很重要的一个内置对象,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。
request.contextPath()拿到的是web项目的根路径。

 

类头注释
/**
*describe:
*
*@author chenrushui
*@date ${YEAR}/${MONTH}/${DAY}

*/

xml映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.crm.mapper.CustomerDao">

    <!--查询到的数据的条数-->
    <select id="customCount" parameterType="QueryVo" resultType="Integer">
        select count(1) from customer
        <where>
            <if test="custName!=null and custName!=''">
                cust_name like "%"#{custName}"%"
            </if>
            <if test="custSource!=null and custSource!=''">
                and cust_source = #{custSource}
            </if>
            <if test="custIndustry!=null and custIndustry!=''">
                and cust_industry = #{custIndustry}
            </if>
            <if test="custLevel!=null and custLevel!=''">
                and cust_level = #{custLevel}
            </if>
        </where>
    </select>
    
    <!--通过id查询用户信息-->
    <select id="selectCustomerById" parameterType="Integer" resultType="com.crm.pojo.Customer">
        select * from customer where cust_id=#{id}
    </select>

    <update id="updateCustomerById" parameterType="Customer">
        update customer set cust_name=#{cust_name} where cust_id=#{cust_id};
    </update>

    <delete id="deleteCustomer" parameterType="Integer">
        delete from customer where cust_id=#{id}
    </delete>
</mapper>

Controller层代码:

package com.crm.controller;

import com.crm.pojo.BaseDict;
import com.crm.pojo.Customer;
import com.crm.pojo.QueryVo;
import com.crm.service.BaseCustomerService;
import com.crm.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * describe:用戶管理控制器
 *
 * @author chenrushui
 * @date 2018/06/14
 */
@Controller
@RequestMapping(value = "/customer")
public class CustomerController {
    //注入成为成员变量:需要被加载的资源文件需要放到spring-mvc配置文件中。
    //这种方式特别好用,不需要通过ResourceBundle进行读取。
    @Value("${fromType.code}")
    private String fromTypeCode;
    @Value("${industryType.code}")
    private String industryTypeCode;
    @Value("${levelType.code}")
    private String levelTypeCode;
    
    @Autowired
    private BaseCustomerService mBaseCustomerService;

    /**
     * 展示前端页面
     *
     * @return
     */
    @RequestMapping(value = "/list")
    public String getCustomerList(QueryVo vo, Model model) {
        //特別注意:如何解决硬编码问题?通过注入成员变量的方式进行解决
        List<BaseDict> fromType = mBaseCustomerService.selectCustomerByCode(fromTypeCode);
        List<BaseDict> industryType = mBaseCustomerService.selectCustomerByCode(industryTypeCode);
        List<BaseDict> levelType = mBaseCustomerService.selectCustomerByCode(levelTypeCode);
        //特別注意:键的名称要和jsp页面中获取的一样。
        model.addAttribute("fromType", fromType);
        model.addAttribute("industryType", industryType);
        model.addAttribute("levelType", levelType);

        //填充结果数据
        Page<Customer> page = mBaseCustomerService.selectCustomerByQueryVo(vo);
        model.addAttribute("page", page);

        //实现数据回显(把数据返回)
        model.addAttribute("custName", vo.getCustName());
        model.addAttribute("custSource", vo.getCustSource());
        model.addAttribute("custIndustry", vo.getCustIndustry());
        model.addAttribute("custLevel", vo.getCustLevel());
        //model内部是通过request域实现的,通过el表达式获取的是哪个变量的值,控件的name属性名
        return "customer";
    }

    /**
     * 編輯用戶信息
     *
     * @param id
     * @return
     */
    @RequestMapping(value = "/edit.action", method = RequestMethod.GET)
    @ResponseBody
    public Customer changeCustomerInfo(Integer id) {
        return mBaseCustomerService.selectCustomerById(id);
    }

    /**
     * 保存修改的用户信息
     *
     * @param customer
     * @return
     */
    @RequestMapping(value = "/update.action", method = RequestMethod.POST)
    @ResponseBody
    public String updateCustomer(Customer customer) {
        Integer row = mBaseCustomerService.updateCustomerById(customer);
        System.out.print(row + "");
        return "ok";
    }

    @RequestMapping(value = "/delete.action", method = RequestMethod.POST)
    @ResponseBody
    public String deleteCustomer(Integer id) {
        Integer row = mBaseCustomerService.deleteCustomer(id);
        System.out.print(row + "受影响的行数");
        return "ok";
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值