day47,品优购电商,Maven依赖结构,Dubbox+SSM搭建,mybatis逆向工程,搭建zookeeper分布框架,向页面返回json数据,前端框架AngularJS入门

第2章
项目搭建

课程目标
目标1:能够说出项目的Maven依赖结构
目标2:能够运用Dubbox+SSM搭建分布式应用
目标3:搭建工程框架,完成品牌列表后端代码
目标4:理解AngularJS前端框架的常用指令

1.品优购-框架搭建
1.1工程结构分析与设计
最终完整的工程结构如下:
在这里插入图片描述

在这里插入图片描述
工程说明:
pinyougou-parent 聚合工程
pinyougou-pojo 通用实体类层
pinyougou-dao 通用数据访问层
pinyougou-xxxxx-interface 某服务层接口
pinyougou-xxxxx-service 某服务层实现
pinyougou-xxxxx-web 某web工程
1.2.创建数据库表
执行资源文件夹中pinyougou-db.sql

1.3.搭建框架
注意:所有项目配置文件在/品优购资源/03配置文件/第一天搭建/目录中
1.3.1父工程
创建Maven工程parent (POM) ,groupId 为cn.itcast, artifactId 为parent , 在pom.xml中添加锁定版本信息dependencyManagement

<!-- 集中定义依赖版本号 -->
<properties>
	<junit.version>4.12</junit.version>
	<spring.version>4.2.4.RELEASE</spring.version>
	<pagehelper.version>4.0.0</pagehelper.version>
	<servlet-api.version>2.5</servlet-api.version>
	<dubbo.version>2.8.4</dubbo.version>
	<zookeeper.version>3.4.7</zookeeper.version>
	<zkclient.version>0.1</zkclient.version>		
	<mybatis.version>3.2.8</mybatis.version>
	<mybatis.spring.version>1.2.2</mybatis.spring.version>
	<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
	<mysql.version>5.1.32</mysql.version>		
	<druid.version>1.0.9</druid.version>
	<commons-fileupload.version>1.3.1</commons-fileupload.version>
	<freemarker.version>2.3.23</freemarker.version>
	<activemq.version>5.11.2</activemq.version>
	<security.version>3.2.3.RELEASE</security.version>		
	<solrj.version>4.10.3</solrj.version>
	<ik.version>2012_u6</ik.version>		
</properties>	
<dependencyManagement>
	<dependencies>	
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jms</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- dubbo相关 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>${dubbo.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>${zookeeper.version}</version>
		</dependency>
		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>${zkclient.version}</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.28</version>
		</dependency>
		<dependency>
			<groupId>javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.11.0.GA</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.10</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			 <groupId>com.github.pagehelper</groupId>
			 <artifactId>pagehelper</artifactId>
			 <version>${pagehelper.version}</version>
		</dependency>		
		 <!-- Mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis.spring.version}</version>
		</dependency>
		<dependency>
			<groupId>com.github.miemiedev</groupId>
			<artifactId>mybatis-paginator</artifactId>
			<version>${mybatis.paginator.version}</version>
		</dependency>		
		<!-- MySql -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<!-- 连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
		</dependency>		
		<dependency>
			<groupId>org.csource.fastdfs</groupId>
			<artifactId>fastdfs</artifactId>
			 <version>1.2</version>
		</dependency>
		<!-- 文件上传组件 -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>${commons-fileupload.version}</version>
		</dependency>		
			<!-- 缓存 -->
			<dependency> 
			  <groupId>redis.clients</groupId> 
			  <artifactId>jedis</artifactId> 
			  <version>2.8.1</version> 
			</dependency> 
			<dependency> 
			  <groupId>org.springframework.data</groupId> 
			  <artifactId>spring-data-redis</artifactId> 
			  <version>1.7.2.RELEASE</version> 
			</dependency>		
			<dependency>
				<groupId>org.freemarker</groupId>
				<artifactId>freemarker</artifactId>
				<version>${freemarker.version}</version>
			</dependency>		
			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-all</artifactId>
				<version>${activemq.version}</version>
			</dependency>
			<!-- 身份验证 -->
			<dependency>
				<groupId>org.springframework.security</groupId>
				<artifactId>spring-security-web</artifactId>
				<version>4.1.0.RELEASE</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.security</groupId>
				<artifactId>spring-security-config</artifactId>
				<version>4.1.0.RELEASE</version>
			</dependency>		
			<dependency>
			    <groupId>com.github.penggle</groupId>
			    <artifactId>kaptcha</artifactId>
			    <version>2.3.2</version>
			    <exclusions>
			    	<exclusion>
			    		<groupId>javax.servlet</groupId>
	      				<artifactId>javax.servlet-api</artifactId>
			    	</exclusion>
			    </exclusions>
			</dependency>		
			<dependency>  
		        <groupId>org.springframework.security</groupId>  
		        <artifactId>spring-security-cas</artifactId>  
		        <version>4.1.0.RELEASE</version>  
		    </dependency>  
		    <dependency>  
		        <groupId>org.jasig.cas.client</groupId>  
		        <artifactId>cas-client-core</artifactId>  
		        <version>3.3.3</version>  
		        <!-- 排除log4j包冲突 -->  
		        <exclusions>  
		            <exclusion>  
		                <groupId>org.slf4j</groupId>  
		                <artifactId>log4j-over-slf4j</artifactId>  
		            </exclusion>  
		        </exclusions>  
		    </dependency> 	    
		    <!-- solr客户端 -->
			<dependency>
				<groupId>org.apache.solr</groupId>
				<artifactId>solr-solrj</artifactId>
				<version>${solrj.version}</version>
			</dependency>
			<dependency>
				<groupId>com.janeluo</groupId>
				<artifactId>ikanalyzer</artifactId>
				<version>${ik.version}</version>
			</dependency>	
	  		<dependency>
	  			<groupId>org.apache.httpcomponents</groupId>
	  			<artifactId>httpcore</artifactId>
	  			<version>4.4.4</version>
	  		</dependency>  		
	  		<dependency>
	  			<groupId>org.apache.httpcomponents</groupId>
	  			<artifactId>httpclient</artifactId>
	  			<version>4.5.3</version>
	  		</dependency>
	  		<dependency>
	  			<groupId>dom4j</groupId>
	  			<artifactId>dom4j</artifactId>
	  			<version>1.6.1</version>
	  		</dependency>  		
	  		<dependency>  
	            <groupId>xml-apis</groupId>  
	            <artifactId>xml-apis</artifactId>  
	            <version>1.4.01</version>  
	        </dependency> 		
		</dependencies>	
	
	</dependencyManagement>
	<build>
		<plugins>			
			<!-- java编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
</build>

以下模块均继承自此父工程
1.3.2通用工具类模块
创建jar模块项目common

<dependencies>
	<dependency>
	    <groupId>com.github.pagehelper</groupId>
	    <artifactId>pagehelper</artifactId>	   
	</dependency>		
	 	<!-- Mybatis -->
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>		
	</dependency>
	<dependency>
		<groupId>com.github.miemiedev</groupId>
		<artifactId>mybatis-paginator</artifactId>		
	</dependency>		
	<!-- MySql -->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>		
	</dependency>
	<!-- 连接池 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>		
	</dependency>
		<!-- 文件上传组件 -->
	<dependency>
	    <groupId>org.csource.fastdfs</groupId>
	    <artifactId>fastdfs</artifactId>
	</dependency>
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
	</dependency>
		
		<!-- 缓存 -->
	<dependency> 
		  <groupId>redis.clients</groupId> 
		  <artifactId>jedis</artifactId> 
	</dependency> 
	<dependency> 
		  <groupId>org.springframework.data</groupId> 
		  <artifactId>spring-data-redis</artifactId> 
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpclient</artifactId>
	</dependency>
	 		
	 	<!-- Spring -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jms</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context-support</artifactId>		
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>		
	</dependency>
	<!-- dubbo相关 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo</artifactId>	
	</dependency>
	<dependency>
		<groupId>org.apache.zookeeper</groupId>
		<artifactId>zookeeper</artifactId>	
	</dependency>
	<dependency>
		<groupId>com.github.sgroschupf</groupId>
		<artifactId>zkclient</artifactId>		
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>		
	</dependency>
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>		
	</dependency>
	<dependency>
		<groupId>javassist</groupId>
		<artifactId>javassist</artifactId>		
	</dependency>
	<dependency>
	    <groupId>commons-codec</groupId>
	    <artifactId>commons-codec</artifactId>	   
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>		
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-web</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-cas</artifactId>
	</dependency>
	<dependency>
		<groupId>org.jasig.cas.client</groupId>
		<artifactId>cas-client-core</artifactId>
		<exclusions>
			<exclusion>
				<groupId>org.slf4j</groupId>
				<artifactId>log4j-over-slf4j</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<!-- activeMq -->
	<dependency>
		<groupId>org.apache.activemq</groupId>
		<artifactId>activemq-client</artifactId>
		<version>5.13.4</version>
	</dependency>
	<!-- freemarker -->
	<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
		<version>2.3.23</version>
	</dependency>
	<!-- github -->
	<dependency>
		<groupId>com.github.wxpay</groupId>
		<artifactId>wxpay-sdk</artifactId>
		<version>0.0.3</version>
	</dependency>
	<!-- solr -->
	<dependency>
		<groupId>org.springframework.data</groupId>
		<artifactId>spring-data-solr</artifactId>
		<version>1.5.5.RELEASE</version>
	</dependency>
</dependencies>

1.3.3通用实体类模块
创建jar模块项目pojo .添加依赖于common项目
1.3.4通用数据访问模块
创建jar模块项目dao .添加依赖于pojo项目
1.3.5服务接口模块
创建jar模块项目interface , 添加依赖于pojo项目
1.3.6 service服务项目
创建maven(war)模块sellergoods-service,buyer-service, page-service, search-service, user-service这五个项目, 添加依赖于dao和interface以及下面依赖

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>		
	<scope>provided</scope>
</dependency>

1.3.7 controller项目
创建maven(war)模块manager-web,portal-web, shop-web, user-web这四个项目, 添加依赖于interface和下面依赖

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>		
	<scope>provided</scope>
</dependency>

1.3.8 web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">	
</web-app>
<param-value>classpath*:spring/applicationContext*.xml</param-value>
classpath和classpath*区别:
classpath:加载本项目下的指定目录的配置文件
classpath*: 加载本项目下和本项目所依赖的所有项目的指定目录下的配置文件

1.4 实体类与数据访问层模块
1.5.生成代码
利用mybatis逆向工程generatorSqlmapCustom实现实体类与数据访问层代码的自动生成
1.6.拷贝代码
将cn.itcast.core.pojo包拷贝到pojo工程
将cn.itcast.core.dao包和resources下的cn.itcast.core.dao文件夹拷贝到dao工程

mybatis逆向工程说明:
mybatis官方推出逆向工程, 用来连接数据库根据表结构生成pojo实体类, 生成映射文件和接口文件, 但是只有
单表的增删改查, 如果多表增删改查还是需要自己动手写.
注意: mybatis生成这些文件的方式是追加和不是覆盖.如果想重新生成需要将原来文件全部删除再重新运行生成,
不然会造成文件损坏无法使用

mybatis逆向工程生成:
idea导入,逆向工程,把dao,resources,pojo目录结构,创建为和使用项目的目录包为一致。
并且要求项目目录没有其他多余文件,并且只能生成一次,二次生成,就会损坏文件
接着修改逆向工程配置文件中的,1.数据库信息,2.生成的文件名映射(比较麻烦,要参照着写),前提是数据库中有相应的表。
生成好后,复制进项目相应目录之下。即可使用。
mybatis逆向工程使用:

@Test
    public void testfindBrandByWhere() {
        //创建查询对象
        BrandQuery brandQuery = new BrandQuery();
        //设置查询的字段名,如果不写默认是* 查询所有
        brandQuery.setFields("id, name");
        //不设置,默认是false,不去重复的数据,true,去重
        brandQuery.setDistinct(true);
        //设置排序, 设置根据id降序排序
        brandQuery.setOrderByClause("id desc");

        //创建where查询条件对象,中的where属性内部类,通过查询对象的方法创建
        BrandQuery.Criteria criteria = brandQuery.createCriteria();
        //查询id等于1的
        criteria.andIdEqualTo(1L);
        //根据name字段模糊查询
        criteria.andNameLike("%联%");
        //根据首字母字段模糊查询
        criteria.andFirstCharLike("%L%");

        List<Brand> brands = brandDao.selectByExample(brandQuery);
        System.out.println("=======" + brands);
    }

2.配置九个Tomcat
3.部署后的位置在eclipse当前工作空间的.metadata.plugins\org.eclipse.wst.server.core目录中

在这里插入图片描述

项目名(无项目名)
www.jd.com:80/

localhost:8080/

  1. 品牌列表-后端代码
    3.1需求分析
    完成品牌管理的后端代码,在浏览器可查询品牌的数据(json格式)
3.2数据库表
tb_brand  品牌表
字段	类型	长度	含义
Id		Bigint		主键
Name	Varchar	255	品牌名称
First_char	Varchar	1	品牌首字母

3.3后端代码
3.3.1 服务层接口
在pinyougou-sellergoods-interface 工程创建BrandService接口

package com.pinyougou.sellergoods.service;
import java.util.List;
import com.pinyougou.pojo.TbBrand;
/**
 * 品牌服务层接口
 * @author Administrator
 *
 */
public interface BrandService {
	/**
	 * 返回全部列表
	 * @return
	 */
	public List<TbBrand> findAll();
}
3.3.2 服务实现类
在sellergoods-service 工程创建BrandServiceImpl类
package com.pinyougou.sellergoods.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.config.annotation.Service;
import com.pinyougou.mapper.TbBrandMapper;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;
@Service
public class BrandServiceImpl implements BrandService {
	@Autowired
	private TbBrandMapper brandMapper;
	@Override
	public List<TbBrand> findAll() {
		return brandMapper.selectByExample(null);
	}
}

3.3.3 控制层代码
在manager-web工程创建cn.itcast.core.controller包,包下创建BrandController类

package com.pinyougou.manager.controller;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;
/**
 * 品牌controller
 * @author Administrator
 */
@RestController
@RequestMapping("/brand")
public class BrandController {
	@Reference
	private BrandService brandService;
	/**
	 * 返回全部列表
	 * @return
	 */
	@RequestMapping("/findAll")
	public List<TbBrand> findAll(){			
		return brandService.findAll();
	}
}

3.4测试
启动sellergoods-service
启动manager-web

地址栏输入http://localhost:8080/brand/findAll.do

可以看到浏览器输出了json数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值