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();
}
}
}