Linux

linux环境安装
一,vmware 虚拟机工具
1,网络模式
A,桥接:主机当网络桥梁,让主机内的虚拟机访问外网,主机和虚拟机IP是独立的
B,nat:适用于主机和虚拟机共享IP,通过同一IP访问外网
C,主机模式(host only)
二,linux系统安装
1,操作系统
A,常用的操作系统:windows系列,安卓,IO,linux系列等
B,按用途分类:普通版本和server版本
C,linux系列:主要用来做服务器,常用的red hat系列, centos就属于red hat系列
2,linux用户
安装和卸载软件都用超级管理员角色,root是拥有超级管理员角色的用户,用户可以有多个角色。
3,vmware-tools
A,简介:解决虚拟机与外部机器的交互(复制,粘贴)
B,安装:vmware -虚拟机-安装vmware-tools

安装步骤:
1,虚拟机-安装vmware-tools
2,把文件拖入桌面
3,解压文件
4,切换root帐号 安装程序:sudo vmware-tools-distrib/vmware-install.pl
5,重启:sudo shutdown -r now

4,linux目录
用户目录(/home):一个用户一个子目录,如zsc用户对应/home/zsc;如/home/zsc/桌面,是zsc用户自己的桌面
/ :根目录,等同于windows系统的盘
/bin:二进制命令,常用的ls等命令都在/bin下
/etc:系统的配置文件(环境变量,网络配置,用户信息等)位置
/usr:软件的默认安装位置
/dev:设备文件目录,如:/dev/cdrom 是光驱
/var:缓存文件与脱机文件
5,命令
A,目录命令:

查看当前命令行所在的目录位置:pwd
	~ :表示当前用户    等同于: /home/zsc
	../:上一级目录
切换目录:cd
	语法:cd 路径
	样例:切换到桌面    cd /home/zsc/桌面
	cd ~ :打开当前用户的主目录
	cd..	:返回上级目录
	cd -	:返回进入目录
	cd/	:打开根目录
查看目录下的文件列表:ls
	ls:查看当前目录下的子目录或者子文件
	ls 路径:查看任意一个目录下的子目录或子文件
	ls -l 路径:查看详细信息(不只是文件名) 等同于:ll
	ls -a	:查看所有文件(包括隐藏文件)
	ls -la :查看所有文件(包括隐藏文件)的详细信息
创建文件目录:mkdir
	语法:mkdir [参数] 目录名称
	参数:-m:设定文件的权限,后边可以跟权限标识
		  -p:帮助用户直接将所需要的目录递归建立起来
		  如:mkdir -p test/test1/test2
删除文件目录:rmdir
	语法:rmdir  [参数] 目录名称
	参数:-p:递归将所有层级目录都删除
删除文件或者目录:rm
	语法:rm  [参数] 文件或目录
	参数:-f:删除指定的文件
		  -i:互动模式,在删除前会询问使用者是否删除
		  -r:递归删除
复制文件或目录:cp
	语法:cp  [参数][目录1名称][目录2名称]      -复制目录1到目录2
	参数:-r:递归持续复制,用于目录的复制行为
		  -f:为强制的意思,当有重复或其他疑问时,不会询问使用都,强制复制
		  -i:覆盖既有目录之前先询问用户
		  -p:保存源文件和目录的属性
移动文件,修改文件名:mv
	同级目录移动,文件名不一样就是修改文件……
	不同目录移动,就 是移动文件。
	语法:mv  [参数] 文件1 文件2	-将文件1的名称更改为文件2 
	语法:mv  [参数] 目录1 目录2	-将目录1的文件移动到目录2
	参数:-b:若覆盖文件,则覆盖前先备份
		  -f:若已经存在目标文件,则强制覆盖
		  -i:若已经存在目标文件,则会询问是否覆盖
		  
解压和压缩:tar
	语法:tar -zxvf 压缩包路径 [-C 解压的位置]
	参数:z:表示解压的压缩包是zip性质的。
	      x:解压
	      v:显示解压的过程
	      f:file 或 full
	语法:tar -zcvf mydata.tar 被压缩的目录		# #压缩为mydata.tar
	参数:c:压缩

解压和压缩:zip
	压缩:
		语法:zip -r mydata.zip  被压缩的目录     #压缩为mydata.zip
		语法:zip -r mydata.zip  被压缩的目录1 被压缩的目录2
	解压:
		语法:unzip 压缩包路径 -d 解压的位置
		语法:unzip 压缩包路径   #直接解压到当前目录
		参数:-o:不必先询问用户,unzip执行后覆盖原有文件
		
重启:reboot	
	  	

B,文件命令:

创建文件:touch
	语法:touch 文件名称
查看,编辑文件命令:vi   (处于只读状态)
	如果文件已经存在,则直接打开文件;如果不存在,则打开一个全新的空文件
	vi命令的3种模式:
		1)命令模式
			L:光标移至屏幕最后一行
			space:光标右移一个字符
			backspace:光标左移一个字符
			N+:光标向上移动N行
			n+:光标向下移动n行
		2)输入模式
			按下a或i,文档切换到编辑状态
			dd:删除光标当前行
			ndd:删除n行
		3)末行模式
			如果完成编辑,按下ESC键切换到只读状态
			shift+“:”组合键进入末行模式
			:wq:保存并退出
			:q!:强制退出
			:s/字符串1/字符串2:将文件中出现的字符串1替换成字符串2
			:set nu:显示所有的行号
查看,编辑文件命令:cat 	(主要用于查看)
	显示文件的全部内容,文件大会翻屏显示,适合打开内容较少的文件,打开文件
	后,可以输入相应的内容,系统自动保存,ctrl+d组合键退出文件编辑
	语法:cat [参数] 文件名称
	参数:〉:创建并打开一个新的文件
查看文件开关内容命令:head
	语法:head[参数] [文件]
	参数:-n:显示的行数
		 默认:显示文件前10行数据
查看文件结尾内容命令:tail
	适用动态加载文件的内容(常用于查看日志文件)
	语法:tail[参数] 文件名称
	参数:-f:监视文件的增长,内容更新后,终端显示也将动态更新
		 -n Number:从倒数第Number行位置读取指定文件的全部内容

C,用户和用户组命令:
用户:简写:u,登陆用用户,一个用户一个对应的目录
用户组:简写:g,一个或多个用户按照不同应用规划成一组,用户必须在一个用户组中

切换用户:su
	语法:su 用户名
	样例:su root
退出当前登陆:exit
查看当前登陆用户的信息(uid,gid):id
	uid:是用户的唯一标识
	gid:是用户组的唯一标识
新建用户:useradd 
	语法:useradd [用户名]
	语法:useradd [-u] [用户名]
	参数:-u:用户id,最好500以上
修改密码:passwd
	语法:passwd 用户名
新建用户组:groupadd
	语法:groupadd 组名
新建用户并指定用户组:useradd -g
	语法:useradd -g  已有组名  新用户名
修改用户的用户组:usermod -g
	语法:usermod -g  已有组名  用户名
删除用户:userdel
	语法:userdel 用户名
	注意:如果用户登陆了不能删除;删除后用户文件目录还存在

D,系统命令:

清屏:clear
查看命令语法:man
	语法:man  命令
挂载命令:mnt
	语法:mnt [设备名称] [挂载点]
终止当前的操作:快捷键ctrl+z
查看进程命令:ps
	第一列表示开启进程的用户,第二列表示进程唯一标识PID,第三列表示父进程PPID。
	语法:ps [-ef |grep 进程名]
	参数: e:所有进程
		   f:进程的所有信息
		   |grep 进程名:相等于模糊查询
查看JAVA进程:jps
杀掉进程命令:kill
	语法:kill -9 [PID]
	参数:-9:强制杀掉进程
查看IP:ifconfig

E,权限命令:
linux系统中文件和目录都拥有对应的权限码(10位)

权限码:drwxr-xr-x
	第0位:表示是文件或者目录,-表示文件,d表示目录
	第1-3位:u(文件或目录拥有者的权限)
	第4-6位:g(拥有者所在用户组其他用户的权限)
	第7-9位:o(拥有者所在组以外的用户的权限)
	r:读权限,对应数字权限码4
	w:写权限,对应数字权限码2
	x:执行权限,对应数字权限码1
	-:没有权限,对应数字权限码0
修改权限:
	1)字母权限码
		语法:chmod [-r] g-w ~/test
		u:1-3位,拥有者权限
		g:4-6位,拥有者所在用户组其他用户的权限
		o:7-9位,拥有者所在组以外的用户的权限
		+:增加权限
		-:取消权限
		-r:表示目录
	2)数字权限码
		语法:chmod [-r]  数字权限码  文件目录
		样例:chmod 700 ~/test
修改文件拥有者:chown
	语法:chown [-R]  用户.用户组  被修改的文件或目录
	参数:-R:指定目录下所有目录或文件全部修改,不加只修改当前目录或文件

三,linux软件安装
1,概述:由于linux有多种系列,每种系列都有自己的推荐安装方式,所以将安装方式分为两种:一种通用的安装方式,一种是不同版本独有的安装方式。linux通用安装推荐rmp安装

2,yum安装(centos系列,在线安装):通过选择仓库来完成安装

查询yum仓库的软件:
	语法:yum list |grep 软件名    
查询yum仓库的软件所有信息(包括版本):
	语法:yum info 软件名
安装(root):
	语法:yum install -y 软件名
通过yum方式查看已安装的软件:
	语法:yum list installed [|grep 软件名]
	查看所有安装软件:yum list installed
通过yum方式卸载软件:
	语法:yum remove -y 软件名

3,tar安装(linux通用,离线安装):
1)下载一个tar安装包
2)解压到安装位置
3)配置
4)启动测试

1,JAVA JDK安装
	1)yum卸载已经安装的JDK
		查看:yum list installed|grep java
		卸载:yum remove -y 软件名
	2)先获取安装包
	3)解压到安装目录
	4)JDK配置环境变量(/etc/profile):
		打开:vi /etc/profile,在文档最后追加内容:
		export JAVA_HOME=/usr/local/java/jdk1.8.0_171
		export PATH=$PATH:$JAVA_HOME/bin
	5)生效环境变量:
		source /etc/profile
	6)测试:
		java -version
2,tomcat安装
	1)获取安装包
	2)解压到/home/用户/,产生tomat主目录,apache-tomcat-7.0.78
	3)tomcat主目录/bin文件夹下 执行启动和关闭
		启动:tomcat主目录/bin/startup.sh
		关闭:tomcat主目录/bin/shutdown.sh
	4)用火狐测试:http://localhost:8080/
3,mysql安装
	root用户操作:
	1)查看已安装mysql(rpm)
		语法:rpm -qa |grep -i mysql
		参数:q:查询
			  a:所有
	2)卸载
		语法:rpm -e 软件名
	3)获取安装包并解压
		语法:tar -xvf mysql-5.7.1*.tar 获取两个tar.gz文件
	4)解压mysql-5.7.1*.tar.gz到/usr/local/
	5)更改解压后的文件名为mysql
	6)在mysql目录中创建目录data
	7)新建用户组与用户
		用户组:mysql 用户:mysql
	8)更改mysql目录的拥有者为mysql
	
	以下mysql用户操作:
	9)初始化数据库,生成密码
		$>mysql主目录/bin/mysqld  --initialize --user mysql 
		--basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data
		
	以下root用户操作:
	10)生成mysql服务(root)
		cp mysql主目录/support-files/mysql.server /etc/init.d/mysql4
		mysql4:自己取的名字
	11)服务设置为开机启动(root)
		$>chkconfig mysql4 on
	12)启动mysql服务(root)
		$>service mysql4 start
		
	以下mysql用户操作:
	13)利用临时密码登陆
		$>mysql主目录/bin/mysql -u root -p
	14)修改密码
		mysql>set password for root@localhost=password('123456');
	15)修改mysql root用户的访问作用域
		root默认只能localhost访问
		修改mysql数据库user表host字段值为‘%‘
			mysql>use mysql
		查看所有用户以及访问作用域
			mysql>select host,user from user;
		修改root用户作用域为所有
			mysql>update user set host='%' where user='root';
		退出mysql编辑:exit
	
	以下root用户操作
	16)重启mysql服务
		service mysql4 restart
	17)windows mysql工具连接测试,需要关闭防火墙,或者防火墙开放端口
	
	18)关闭服务:
		service mysql4 stop

4,rpm安装(linux通用,离线安装)
四,防火墙设置
1)概述:
系统服务:/etc/init.d/这个文件夹的内容就是服务

防火墙服务:iptables
启动服务:service 服务名 start
关闭服务:service 服务名 stop
重启服务:service 服务名 restart
关闭防火墙:service iptables stop

系统配置:

禁用服务:chkconfig 服务名 off
解禁服务:chkconfig 服务名 on
禁用防火墙:chkconfig iptables off

防火墙只开放一个断口

1)编辑防火墙配置文件:vi /etc/init.d/iptables
2)开放8080则增加如下内容(内容放文件前端):
	内容省略

五,其他软件
1)ssh基本知识:安全外壳协议,用来做远程连接其他linux服务器。

远程连接命令:ssh [用户名@] 网址

2)xManager:是windows访问linux一套工具包

Xshell:
	连接linux:打开Xshell,输入命令:ssh [用户名@] 网址

然后可以远程操作linux

六,dubbox微服环境
1,概述:
传统架构(B/S):单体架构,一个项目中开发,一起部署
微服架构(B/S):分布式开发,隔离部署,通过通信中间件实现多个服务器之间通信。
主流微服架构种类:dubbox(dubbo),spring cloud。
dubbox:是dubbo的扩展版本,由当当网发布并维护,是alibaba提出的
spring cloud:是springframe提出并维护的。
2,dubbo体系介绍:由注册中心,消费者,提供者,监控中心构成
注册中心:主要负责各个tomcat之间通信,注册服务,订阅服务。我们使用zookeeper中间件
监控中心:主要负责监控注册中心上是否有新服务注册,是否服务被消费
提供者:向注册中心注册服务。
消费者:从注册中心订阅服务。
3,dubbo环境准备:
A)搭建注册中心:

1,获取一个zookeeper中间件  解压zookeeper-3.4.12.tar.gz
2,更改zookeeper的配置文件 在zookeeper主目录下/conf/zoo_sample.cfg 
更改为zoo.cfg  打开该配置文件的修改如下:
	clientPort=2181  //访问端口是2181
	在zookeeper主目录下新建data目录,修该dataDir=data的路径
	如:dataDir=D:/zookeeper-3.4.12/data
3,启动zookeeper服务端
	双击 zookeeper主目录/bin/zkServer.cmd  启动服务端
	双击zookeeper主目录/bin/zkCli.cmd 启动客户端
	
	先打开3,再打开4步骤,打开后不要关掉。注意:如果打开时是一闪而过,说明
	Windows下面的jdk环境变量配置有问题。正确的配置如下:
       在全局变量栏配置:变量 :JAVA_HOME   值 :D:\xuexi\JDK  (jdk的路径)
                      变量 :path  值 :%JAVA_HOME%\bin  (jdk下面的bin路径)

B)搭建监控中心:

1,获取监控中心项目  dubbo-admin 监控中心项目(解压dubbo.zip后,在解压 
    dubbox-master.rar获得dubbo-admin项目)
dubbo.properties配置文件内容:
	//注册中心地址
	dubbo.registry.address=zookeeper://127.0.0.1:2181
	//root帐户密码
	dubbo.admin.root.password=root
	//guest帐户密码
	dubbo.admin.guest.password=guest
2,将dubbo-admin项目里dubbo-admin-2.8.4.war部署到tomcat里,启动tomcat(
	dubbo-admin项目/target/路径下可以找到dubbo-admin-2.8.4.war)
	操作:将dubbo-admin-2.8.4.wa包复制到weapps下面即可,启动tomcat(操
	作:双击tomcat主目录/bin/startup.bat 批处理文件 启动服务)
3,在浏览器访问dubbo监控中心项目http://localhost:8080/dubbo-admin-2.8.4

---------------下面是创建分布式项目,在之前需要先设置maven的仓库路径,然后再创建普通maven工程--------------------------------------
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C)创建公共项目:
创建一个主项目(普通maven项目):dubbox-project,然后在项目上右
键新建module公共项目

1,新建一个公共项目smbms-common(module普通maven项目)
	<!--添加maven:-->
	<dependencies>
        <!--json插件-->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.12</version>
        </dependency>

    </dependencies>
2,新建实体类与service接口
	cn.kgc1803.smbms_common.pojo实体类包
	
		import java.io.Serializable;
		public class User implements Serializable {
   			private Integer id;
    			private String userCode;
    			private String userName;
    			private String password;

    			public Integer getId() {
        			return id;
    			}

    			public void setId(Integer id) {
        			this.id = id;
    			}
    			
	cn.kgc1803.smbms_common.service接口包
	
		public interface UserService {
    			//登陆
    			User loginUser(User user);
		}
		
3,利用maven将公用项目打成jar包安装到maven仓库中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

D)dubbo开发provider(提供者)

1,新建一个module   smbms-user-provider
2,增加jar包依赖:
	1)mybatis jar
	2)spring-* jar
	3)mysql驱动包
	4)mybatis-spring jar
	------以下是dubbo,上面的包可以先不配----------
	5)zookeeper jar包			//
	6)zkclient jar包			//
	7)dubbo jar包				//
	8)smbms-common.jar包		//公共包
	9)hessian.jar包			//
	10)dubbo-rpc-rest.jar包 	//dubbox rest风格包
	
		<!--公共包-->
        <dependency>
            <groupId>cn.kgc1803</groupId>
            <artifactId>smbms-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.8</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.7</version>
        </dependency>
        <!--dubbox rest风格包-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-rpc-rest</artifactId>
            <version>2.8.4</version>
        </dependency>
        
3,编写pojo(共项目smbms-common的pojo):

	import org.codehaus.jackson.annotate.JsonProperty;
	import java.io.Serializable;
	public class Order implements Serializable {
    		@JsonProperty     //实体类可以自动转化为json类对象数据的属性
    		private Integer id;
    		@JsonProperty
    		private Integer ownerUserId;
    		@JsonProperty
    		private String productName;
    		@JsonProperty
    		private Double price;
    		@JsonProperty
    		private Integer amount;
    		
4,编写service实现类:
	<!--rest协议访问的service-->
	import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType;
	@Path("order")
	@Produces(ContentType.APPLICATION_JSON_UTF_8)  //设置输出结果集的 字符集
	public class OrderServiceImpl implements OrderService {
    		@Path("/orderlist/{userId}")   //访问路径
    		@GET                        //请求方式
    		public List<Order> findList(@PathParam("userId") Integer userId) {
        		List<Order> orders=new ArrayList<Order>();
        		Order order=new Order();
        		order.setId(userId);
        		order.setOwnerUserId(11);
        		order.setAmount(33);
        		order.setPrice(55.3);
        		order.setProductName("华为p8");
        		orders.add(order);
        		return orders;
    		}
	}
	
	<!--普通访问的service-->
	import cn.kgc1803.smbms_common.pojo.User;
import cn.kgc1803.smbms_common.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;
    @RequestMapping(value = "dologin.htm",method = RequestMethod.POST)
    public String doLogin(User user, HttpSession session){
        User u=userService.loginUser(user);
        if(u!=null){
            session.setAttribute("session_user",u);
            return "index";
        }else {
            return "login";
        }
    }
}


5,配置spring
6,配置dubbox发布服务(在提供者项目新建dubbo_user_provider.xml配置文件):

	<?xml version="1.0" encoding="UTF-8"?>
	<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    		<!-- service注入,可以用spring注解注入,添加id属性 -->
    		<bean id="userService" class="cn.kgc1803.smbms_user_provider.service.UserServiceImpl"/>
    		<bean id="orderService" class="cn.kgc1803.smbms_user_provider.service.OrderServiceImpl"/>
    		
    		<!-- 配置dubbo发布服务-->
    		<!-- 设置提供者本次发布服务的应用名称 owner:拥有者;organization:组织者-->
    		<dubbo:application name="user_provider_app" owner="kgc" organization="kgc1803"/>
    		<!--配置注册中心的地址-->
    		<dubbo:registry address="zookeeper://localhost:2181"/>
    		<!--配置一个协议 选择dubbo协议-->
    		<buddo:protocol name="dubbo" contextpath="dubbo"/>
    		<!--rest协议-->
    		<dubbo:protocol name="rest" port="20888"/>
    		<!--发布服务-->
    		<dubbo:service interface="cn.kgc1803.smbms_common.service.UserService" protocol="dubbo" ref="userService" timeout="10000"/>
    		<dubbo:service interface="cn.kgc1803.smbms_common.service.OrderService" protocol="rest" ref="orderService" timeout="10000"/>
	</beans>
	
7,启动测试:
	浏览器访问dubbo监控中心项目http://localhost:8080/dubbo-admin-2.8.4里可以	看到服务
	浏览器也可以用rest协议直接访问service实现类的方法,如:http://localhost:20888/order/orderlist/100

E)dubbo开发consume(消费者)

1)新建module smbms-user-consume
2)增加jar包依赖

1,spring-webmvc(spring+spring web+spring mvc):
	<!--spring-mvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>
        <!--servlet包-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <!--jstl-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        
2,dubbo:
	<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>
        
3,zookeeper:
	<dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        
4,zkclient:
	<dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.8</version>
        </dependency>
        
5,hession:
	<dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.7</version>
        </dependency>
        
6,公共包
	<dependency>
            <groupId>cn.kgc1803</groupId>
            <artifactId>smbms-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

3)编写控制器(spring mvc)

@Controller
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;
    @RequestMapping(value = "dologin.htm",method = RequestMethod.POST)
    public String doLogin(User user, HttpSession session){
        User u=userService.loginUser(user);
        if(u!=null){
            session.setAttribute("session_user",u);
            return "index";
        }else {
            return "login";
        }
    }
}
<!--rest协议ajax访问-->
package cn.kgc1803.smbms_user_consume.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

@Controller
@RequestMapping("/order")
public class OrderController {
    @RequestMapping("/orderlist.htm")
    public void getOrderListJson(HttpServletResponse response,Integer userId){
        response.setCharacterEncoding("UTF-8");
        try {
            //请求输出流
            OutputStream out=response.getOutputStream();
            //获取远程的dubbo rest数据
            //请求地址
            URL url=new URL("http://localhost:20888/order/orderlist/"+userId);
            //建立连接
            URLConnection conn=url.openConnection();
            //获取请求结果集对应的输入流
            InputStream input=conn.getInputStream();
            byte[] buf=new byte[1024];
            int len=input.read(buf);
            while (len!=-1){
                //输出0到len的数据
                out.write(buf,0,len);
                len=input.read(buf);
            }
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4)编写spring mvc配置文件(spring-servlet.xml)

1,配置spring mvc扫描注入控制器
	<context:component-scan base-package="cn.kgc1803.smbms_user_consume.controller"/>
2,配置注解驱动(解析控制器需求)
	 <mvc:annotation-driven/>
3,配置视图解析器
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view"/>
        <property name="suffix" value=".jsp"/>
    </bean>
 4,静态资源文件访问
 	<!--静态资源文件访问-->
    <mvc:resources mapping="/js/*" location="/js/"/>

5)编写页面
1,如果不是web项目,改成web项目:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在当前消费者项目smbms-user-consume,pom.xml配置:

	<!--改成web项目-->
    <packaging>war</packaging>

2,编写页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@page isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>登陆</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
</head>
<body>
    <h2>${pageContext.request.contextPath}</h2>
    <form method="post" action="${pageContext.request.contextPath}/user/dologin.htm">
        用户名:<input name="userCode">
        密码:<input name="password">
        <input type="submit" value="登陆">
    </form>
    <form action="http://localhost:20888/order/orderlist" method="get">
    <input name="userId" id="userId">
    <input type="button" value="查订单" "findList()">
    </form>
</body>
</html>

6)配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <welcome-file-list>
        <welcome-file>/WEB-INF/view/login.jsp</welcome-file>
    </welcome-file-list>

    <!--启动dubbo-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:smbms-user-consume.xml</param-value>
    </context-param>
    <!--多个spring容器之间访问-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--启动spring mvc配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

-------以下都是dubbo消费者的配置---------
7)编写dubbo的配置文件(消费者):smbms-user-consume.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 应用名称 -->
    <dubbo:application name="smbms_user_consume"/>
    <!--配置注册中心-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--订阅服务-->
    <dubbo:reference interface="cn.kgc1803.smbms_common.service.UserService" id="userService"/>
</beans>

8)配置web.xml(dubbo)

1,启动dubbo消费者配置文件
	<!--启动dubbo-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:smbms-user-consume.xml</param-value>
    </context-param>
    
2,让springmvc与dubbo两个spring容器能相互访问
	<!--多个spring容器之间访问-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

6)测试
把消费者项目smbms-user-consume配置到Tomcat服务器

F,spring+mybatis(注解)
1)jar依赖(smbms-user-provider(提供者))

spring+mybatis+整合包+数据库驱动包
	1,mybatis jar
	2,整合包
	3,数据库驱动包
	
	<!--mybatis 3.3以上支持注解-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!--mybatis spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <!--dbcp数据库缓冲池-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.9.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.2.9.RELEASE</version>
        </dependency>
    </dependencies>

2)编写 dao

import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

@Mapper  //表示该接口是一个注解mybatis接口
@Repository   //表示注入一个dao实现类
public interface UserMapper {
    //登陆
    @Select("SELECT id,userName,userCode FROM smbms_user WHERE userCode=#{userCode} and password=#{password}")
    @Results(id="userMap",value = {
            @Result(property = "id",column = "id",javaType =Integer.class ),
            @Result(property = "userName",column = "userName",javaType =String.class ),
            @Result(property = "userCode",column = "userCode",javaType =String.class )
            })         //相当于resultMap,如果用resultType就不用写
    User loginUser(User user);
}

3)配置spring(注入mybatis,dao,service)

1,新建一个spring整合配置文件:spring-service.xml
2,注入dataSource,sessionFactory,dao mapper
3,注入service
	
	<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--引入配置文件-->
    <context:property-placeholder location="classpath:database.properties"/>
    <!--注入dataSource-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${mysql.driverClass}"/>
        <property name="url" value="${mysql.jdbcUrl}"/>
        <property name="username" value="${mysql.user}"/>
        <property name="password" value="${mysql.password}"/>
    </bean>
    <!--注入sessionFactory-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--注入dao mapper-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
        <property name="basePackage" value="cn.kgc1803.smbms_user_provider.dao"/>
    </bean>
    <!--注入service-->
    <context:component-scan base-package="cn.kgc1803.smbms_user_provider.service"/>
</beans>

4)启动:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestProvider {
    public static void main(String[] args){
        String[] xmls={"spring-service.xml","dubbo_user_provider.xml"};
        //加载sering配置文件
        ApplicationContext ctx=new ClassPathXmlApplicationContext(xmls);
        try {
            //休眠10分钟
            Thread.sleep(60*60*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值