1. 程式人生 > >【CRM(二)】登入&客戶管理模組

【CRM(二)】登入&客戶管理模組

CRM綜合練習:使用者模組登入功能

使用者模組:登入功能程式碼實現

修改登入頁面

<FORM id=form1 name=form1 action="${ pageContext.request.contextPath }/user_login.action" method=post target="_parent">

編寫Action中login方法

  • UserAction.java
/**
 * 使用者登入的方法:login
 */
public String login(){
	//呼叫業務層查詢使用者:
	User existUser =
userService.login(user); if(existUser == null){ //登入失敗 //新增錯誤資訊 this.addActionError("使用者名稱或密碼錯誤!"); return LOGIN; }else{ //登陸成功 // ServletActionContext.getRequest().getSession().setAttribute("existUser", existUser); ActionContext.getContext().getSession().put("existUser", existUser); return
SUCCESS; } }

編寫Service實現類

@Override
//業務層使用者登陸的方法
public User login(User user) {
	user.setUser_password(MD5Utils.md5(user.getUser_password()));
	//呼叫DAO
	return userDao.login(user);
}

編寫DAO實現類

@Override
//DAO中根據使用者名稱和密碼進行查詢的方法:
public User login(User user) {
	List<User> list = (List<User>
) this.getHibernateTemplate().find("from User where user_code=? and user_password = ?", user.getUser_code(),user.getUser_password()); if(list.size() > 0){ return list.get(0); } return null; }

配置頁面的跳轉

struts.xml

<package name="crm" extends="struts-default" namespace="/">
	<action name="user_*" class="userAction" method="{1}">
		<result name="login">/login.jsp</result>
		<result name="success" type="redirect">/index.jsp</result>
	</action>
</package>

在頁面中顯示資料

  • 在登入成功的頁面上顯示使用者的資訊
    top.jsp
當前使用者:<s:property value="#session.existUser.user_name"/>
  • 在失敗的頁面上顯示錯誤資訊
    login.jsp
<%@ taglib uri="/struts-tags" prefix="s"%>
 <s:actionerror/>

CRM綜合練習:客戶管理

客戶管理:準備工作

建立表

CREATE TABLE `cst_customer` (
  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客戶編號(主鍵)',
  `cust_name` varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客戶資訊來源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客戶所屬行業',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客戶級別',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定電話',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '行動電話',
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

建立實體和對映

  • 建立實體
    在這裡插入圖片描述
  • 建立對映
    在這裡插入圖片描述

建立Action

在這裡插入圖片描述

建立Service

在這裡插入圖片描述

建立DAO

在這裡插入圖片描述

配置Action、Service、DAO

在這裡插入圖片描述

跳轉到新增頁面

修改左側選單頁面

在這裡插入圖片描述

編寫Action中的saveUI的方法

在這裡插入圖片描述

配置Action的跳轉

在這裡插入圖片描述

測試跳轉

在這裡插入圖片描述

引入資料字典

什麼是資料字典

資料字典用來規範某些地方具體值和資料

建立資料字典表

CREATE TABLE `base_dict` (
  `dict_id` varchar(32) NOT NULL COMMENT '資料字典id(主鍵)',
  `dict_type_code` varchar(10) NOT NULL COMMENT '資料字典類別程式碼',
  `dict_type_name` varchar(64) NOT NULL COMMENT '資料字典類別名稱',
  `dict_item_name` varchar(64) NOT NULL COMMENT '資料字典專案名稱',
  `dict_item_code` varchar(10) DEFAULT NULL COMMENT '資料字典專案(可為空)',
  `dict_sort` int(10) DEFAULT NULL COMMENT '排序欄位',
  `dict_enable` char(1) NOT NULL COMMENT '1:使用 0:停用',
  `dict_memo` varchar(64) DEFAULT NULL COMMENT '備註',
  PRIMARY KEY (`dict_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert  into `base_dict`(`dict_id`,`dict_type_code`,`dict_type_name`,`dict_item_name`,`dict_item_code`,`dict_sort`,`dict_enable`,`dict_memo`) values ('1','001','客戶行業','教育培訓 ',NULL,1,'1',NULL),('10','003','公司性質','民企',NULL,3,'1',NULL),('12','004','年營業額','1-10萬',NULL,1,'1',NULL),('13','004','年營業額','10-20萬',NULL,2,'1',NULL),('14','004','年營業額','20-50萬',NULL,3,'1',NULL),('15','004','年營業額','50-100萬',NULL,4,'1',NULL),('16','004','年營業額','100-500萬',NULL,5,'1',NULL),('17','004','年營業額','500-1000萬',NULL,6,'1',NULL),('18','005','客戶狀態','基礎客戶',NULL,1,'1',NULL),('19','005','客戶狀態','潛在客戶',NULL,2,'1',NULL),('2','001','客戶行業','電子商務',NULL,2,'1',NULL),('20','005','客戶狀態','成功客戶',NULL,3,'1',NULL),('21','005','客戶狀態','無效客戶',NULL,4,'1',NULL),('22','006','客戶級別','普通客戶',NULL,1,'1',NULL),('23','006','客戶級別','VIP客戶',NULL,2,'1',NULL),('24','007','商機狀態','意向客戶',NULL,1,'1',NULL),('25','007','商機狀態','初步溝通',NULL,2,'1',NULL),('26','007','商機狀態','深度溝通',NULL,3,'1',NULL),('27','007','商機狀態','簽訂合同',NULL,4,'1',NULL),('3','001','客戶行業','對外貿易',NULL,3,'1',NULL),('30','008','商機型別','新業務',NULL,1,'1',NULL),('31','008','商機型別','現有業務',NULL,2,'1',NULL),('32','009','商機來源','電話營銷',NULL,1,'1',NULL),('33','009','商機來源','網路營銷',NULL,2,'1',NULL),('34','009','商機來源','推廣活動',NULL,3,'1',NULL),('4','001','客戶行業','酒店旅遊',NULL,4,'1',NULL),('5','001','客戶行業','房地產',NULL,5,'1',NULL),('6','002','客戶資訊來源','電話營銷',NULL,1,'1',NULL),('7','002','客戶資訊來源','網路營銷',NULL,2,'1',NULL),('8','003','公司性質','合資',NULL,1,'1',NULL),('9','003','公司性質','國企',NULL,2,'1',NULL);

客戶表和字典表的關係分析

在這裡插入圖片描述
在這裡插入圖片描述

建立字典的實體和對映

  • 建立實體
    在這裡插入圖片描述
  • 建立對映
    在這裡插入圖片描述

修改字典和客戶的關係對映

  • 修改了客戶的實體
    在這裡插入圖片描述
  • 修改客戶的對映
    在這裡插入圖片描述

將對映檔案交給Spring

在這裡插入圖片描述

在新增頁面上非同步載入字典資料

建立字典的Action、Service、DAO

  • 編寫DAO
    在這裡插入圖片描述
  • 編寫Service
    在這裡插入圖片描述
  • 編寫Action
    在這裡插入圖片描述

將字典類交給Spring

在這裡插入圖片描述

引入jquery的js(在新增頁面上)

在這裡插入圖片描述

編寫非同步載入的方法

<script type="text/javascript">
	$(function(){
		// 頁面載入函式就會執行:
		// 頁面載入,非同步查詢字典資料:
		// 載入客戶來源
		$.post("${pageContext.request.contextPath }/baseDict_findByTypeCode.action",{"dict_type_code":"002"},function(data){
			// 遍歷json的資料:
			$(data).each(function(i,n){
				$("#cust_source").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
			});
		},"json");
	});
</script>

編寫Action

  • 引jar包
    在這裡插入圖片描述
package com.lele.crm.web.action;

import java.io.IOException;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.lele.crm.domain.BaseDict;
import com.lele.crm.service.BaseDictService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
/**
 * 字典的Action的類
 * @author lele
 *
 */
public class BaseDictAction extends ActionSupport implements ModelDriven<BaseDict> {
	//模型驅動使用的物件
	private BaseDict baseDict = new BaseDict();
	@Override
	public BaseDict getModel() {
		return baseDict;
	}
	
	//注入Service
	private BaseDictService baseDictService;
	public void setBaseDictService(BaseDictService baseDictService) {
		this.baseDictService = baseDictService;
	}
	
	/**
	 * 根據型別名稱查詢字典的方法:findByTypeCode
	 * @throws IOException 
	 */
	public String findByTypeCode() throws IOException{
		System.out.println("BaseDictAction中的findByTypeCode方法執行了...");
		//呼叫業務層查詢:
		List<BaseDict> list = baseDictService.findByTypeCode(baseDict.getDict_type_code());
		//將list轉成JSON。----jsonlib fastjson
		
		/**
		 * JSONConfig:轉JSON的配置物件
		 * JSONArray :將陣列和list集合轉成JSON
		 * JSONObject:將陣列和Map集合轉成JSON
		 */
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setExcludes(new String[]{"dict_sort","dict_enable","dict_memo"});
		JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);
		System.out.println(jsonArray.toString());
		//將JSON列印到頁面
		ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
		ServletActionContext.getResponse().getWriter().println(jsonArray.toString());
		return NONE;
	}
}

編寫Service

public class BaseDictServiceImpl implements BaseDictService {
	//注入DAO
	private BaseDictDao baseDictDao;

	public void setBaseDictDao(BaseDictDao baseDictDao) {
		this.baseDictDao = baseDictDao;
	}

	
            
           

相關推薦

CRM登入&amp;客戶管理模組

CRM綜合練習:使用者模組登入功能 使用者模組:登入功能程式碼實現 修改登入頁面 <FORM id=form1 name=form1 action="${ pageContext.request.contextPath }/user_login.action" meth

Struts2Struts2的封裝方法&amp;其他介紹&amp;注入方式詳解

1.2 相關知識點 1.2.1 Struts2的Servlet的API的訪問 在Struts2中,Action並沒有直接和Servlet API進行耦合,也就是說在Struts2的Action中不能直接訪問Servlet API。雖然Struts2中的Action訪問Servl

Spring4IOC註解&amp;AOP

Spring 的IOC 的註解開發(*****) Spring的IOC的註解開發的入門 建立web專案,引入jar包 在Spring4的版本中,除了引入基本的開發包以外,還需要引入aop的包。 引入Spring的配置檔案 在src下建立一個Ap

Hibernate持久化類、主鍵生成策略和一級快取

1.2 持久化類的編寫規則 1.2.1 持久化類的概述 什麼是持久化類 持久化:將記憶體中的一個物件持久化到資料庫中過程。Hibernate框架就是用來進行持久化的框架。 持久化類:一個Java物件與資料庫的表建立了對映關係,那麼這個類在Hibernate中稱為是持久化類。

Struts2控制器&amp;其他OGNL標籤&amp;攔截器

1.2 Struts2的攔截器 1.2.1 攔截器概述 1.2.1.1 什麼是攔截器 Interceptor:攔截器,起到攔截Action的作用。       Filter:過濾器,過濾從客戶端向伺服器傳送的請

CRM聯絡人管理

CRM綜合練習_聯絡人管理 儲存聯絡人 修改menu.jsp的連結 編寫Action中的saveUI的方法 編寫Service 編寫DAO 修改新增頁面(改成struts2的標籤) 編寫表單提交路徑 編寫Action的save

Spring4Spring的事務管理和JDBC模板的使用

Spring 的 AOP 的基於 AspectJ 註解開發 Spring 的基於AspectJ 的註解的 AOP 開發 建立專案,引入 jar 包 引入配置檔案 applicationContext.

C語言天天練statickeyword

修飾 weight () main函數 class code keyword spa tail 引言: statickeyword不僅能夠修飾變量。並且能夠修飾函數。了解它的使用方法,不僅對閱讀別人的代碼有幫助,也有助於自己寫出更加健壯的

Android開發—智慧家居系列:用手機對WIFI模組進行配置

【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置   版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010924834/article/details/49496729   在實際開發中,我開

Mac系統 + Python + Django之開發一個釋出會系統Django模型 Mac系統 + Mysql之安裝Mysql資料庫 Python + Mysql之用pymysql庫連線Mysql資料庫並進行增刪改查操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

C語言實現串列埠通訊知識點整理遇到的問題整理待續....

1.c編譯錯誤--error:stray \357 in program UTF-8編碼問題。UTF-8編碼有BOM和無BOM格式。BOM,ByteOrderMark(位元組標記順序),表明使用UTF8來進行編碼。UTF-8的BOM通常為3個位元組EF BB BF。轉換成對應的字元檢視,就是‘\

web框架 Cloud-Admin學習筆記前後端分離的釋出配置

因為spirng前後端分離設計,釋出流程略有不同,前後端單獨釋出,通過nginx整合 1、前端專案打包 #轉到前端專案根目錄 cd D:\001\myProject\GitHub\AG-Admin-v2-UI # 構建生成環境 cnpm run build:prod 然後等待伺服

Spring使用Spring進行事務管理的幾種方式

      Spring既是SSH中的一員,也是SSM中的一員。不管是在SSH,還是在SSM中,Spring都起到了十分重要的“管理”作用,不論是對action的管理,還是對Controller的管理

Servicemesh系列Envoy原始碼解析一個Http請求到響應的全鏈路

目錄 1. http連線建立 當有新連線過來的時候,會呼叫上一章節所提及的被註冊到libevent裡面的回撥函式。我們回顧一下,上一章節提及了,會有多個worker註冊所有的listener,當有一個連線過來的時候,系統核心會排程一個執行緒出來交付

Android Studio建立工程

Android Studio讓你可以很輕鬆的建立多種類別的安卓應用,比如Phone,table,TV,Wear,Google Glass等。在新建的專案嚮導中你可以根據你自己的需求建立你所需要的工程。 接下來講如何在Android Studio中建立一個工程。 Step1:

spring mvcspring mvc使用屬性檔案配置c3p0和dbcp資料來源

spring mvc如果要用到資料庫,就要為專案配置資料來源,目前有兩個比較常見的資料來源:c3p0與dbcp。這兩個都是連線池技術,連線池的概念大概是,維護若干個資料庫的連線,程式需要使用的時候直接返回給它,這樣做的用意是降低資料庫連線,關閉的開銷,如果每次程式請求資料庫

Java開發手冊之異常日誌日誌規約

【強制】應用中不可直接使用日誌系統 (Log 4 j 、 Logback) 中的 API ,而應依賴使用日誌框架SLF 4 J 中的 API ,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。 import org.slf4j.Logg

.Net Core快取元件(MemoryCache)快取篇

一、前言   .Net Core快取原始碼   1、上篇.NET Core ResponseCache【快取篇(一)】中我們提到了使用客戶端快取、和服務端快取。本文我們介紹MemoryCache快取元件,說到服務端快取我們一般都會想到MemoryCache、Redis等等優秀的快取元件,各自有各自使用的場景。

jmeter1jmeter的安裝和基本使用

多少 一個 將在 主界面 地址 ads 發送 收集 處理器 本篇文章主要介紹一下JMeter的安裝及基本使用方法。 1.安裝 JMeter的官方網址為http://jmeter.apache.org/ 下載地址為http://jmeter.apache.org/downlo

Lync Server 2013 標準版部署DNS記錄&amp;權限

Lync Server 2013 Lync Server 標準版 Lync Server 2013 標準版數據庫安裝完成後;登錄AD服務器,在AD服務器中新建Lync 系統管理賬戶及添加Lync所需的DNS記錄。1.打開ADUC,創建Lync系統管理賬戶LyncAdmin2.設置密碼3.創建完成4.選