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在后台与服务器交换数据。

SSM整合项目:CRM客户管理系统_第1张图片

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

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

log4j.properties 日志的名字

SSM整合项目:CRM客户管理系统_第3张图片

Jsp页面主要用于后台管理系统,页面展示。
EL表达式,JSP指令,JSP脚本,JSP指令内置对象,JSP标签库,Form表单。
如何在jsp页面中发送网路请求?
Form表单的使用:发送网络请求。
jsp页面与java后台的交互还是不熟悉,一定要精通。对表单的网络请求不熟悉。
Jstl标签库:什么时候使用jstl标签库?格式化日期,非空判断,循环遍历等
Jsp页面中如何输入java代码?
 
<Form>提交按钮 定义用于向表单处理程序(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映射文件:





    
    
    
    
    

    
        update customer set cust_name=#{cust_name} where cust_id=#{cust_id};
    

    
        delete from customer where cust_id=#{id}
    

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 fromType = mBaseCustomerService.selectCustomerByCode(fromTypeCode);
        List industryType = mBaseCustomerService.selectCustomerByCode(industryTypeCode);
        List levelType = mBaseCustomerService.selectCustomerByCode(levelTypeCode);
        //特別注意:键的名称要和jsp页面中获取的一样。
        model.addAttribute("fromType", fromType);
        model.addAttribute("industryType", industryType);
        model.addAttribute("levelType", levelType);

        //填充结果数据
        Page 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";
    }
}

你可能感兴趣的:(服务器端)