java webjava web 动静分离离后怎么实现不同环境的部署

JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要动静分离?
JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要动静分离?
---------------------------------------------------
以前的项目大多数都是程序猿又当爹又当妈,又搞前端(ajax//js/html/css等等),又搞后端(java//等等)。
随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情,正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。
大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。你要是这辈子就吃java这碗饭,就不要去研究什么css,js等等。
把你的精力专注在java,jvm原理,原理,mysql锁,事务,多线程,大并发,分布式,,以及相关的项目管理等等,这样你的核心竞争力才会越来越高,正所谓你往生活中投入什么,生活就会反馈给你什么。
满满的正能量:
一旦你成为了一个行业里的精英,相信我,到时候,车,房,女人,钱,机会就都来找你了,不用着急,真的。
干java程序猿这行,真的很简单的,你懂得知识越多,你的钱就越多,当然了还需要有一定的情商。。。
你的能力越强,你就比别人创造的价值更多,你为公司创造了价值,公司给你各种福利,双赢!
几曾何时,我们的web项目都是使用了若干后台框架,springmvc/struts
+ spring + spring jdbc//mybatis
大多数项目在java后端都是分了三层,控制层(controller/action),业务层(service/manage),持久层(dao)。
控制层负责接收参数,调用相关业务层,封装数据,以及路由到jsp页面。然后jsp页面上使用各种标签(jstl/el)或者手写java(
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。一般的动静分类会使用Apache+tomcat或者Nginx+tomcat的方式进行实现,Nginx+tomcat的方式配置较为简单,而且Nginx处理并发性能也更强;此处仅使用tomcat进行简单的动静分离处理。
tomcat、jboss、jetty等容器提供了一个默认的servlet:default,该servlet将静态资源的映射从/改为/static,该servlet在jboss中的定义位置为:${jboss_home}/server/default/deployers/jbossweb.deployer/web.xml;在tomcat中的定义位置:${tomcat_home}/conf/web.xml。
默认的servlet是既服务于静态资源又服务于目录列表(如果允许目录列表的话)的servlet。它在$CATALINA_HOME/conf/web.xml中被全局声明。默认形式的声明是这样的: $CATALINA_HOME/conf/web.xml
&servlet-name&default&/servlet-name&
&servlet-class&
org.apache.catalina.servlets.DefaultServlet
&/servlet-class&
&init-param&
&param-name&debug&/param-name&
&param-value&0&/param-value&
&/init-param&
&init-param&
&param-name&listings&/param-name&
&param-value&true&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
因此在默认的情况下,默认servlet在webapp启动时被装载,目录列表可被使用,日志调试功能被关掉。
DefaultServlet允许以下初始化参数:
日志级别。如果你不是tomcat开发人员,这对你没有什么用处。目前,有用的值是0, 1, 11, 1000。
如果没有欢迎文件,要不要显示目录列表?值可以是
欢迎文件是servlet api的一部分。
警告:列表显示包含太多记录的目录是非常消耗服务性能的 . 大量请求访问大目录列表会吃掉服务器大部分的资源.
readmeFile
如果允许目录列表,可能有一个readme文件和这个列表在一起。这个文件包含HTML被插入。默认值是null。
globalXsltFile
如果你希望定制你的目录列表显示效果,你可以使用一个XSL转换(transformation)。这个值是一个可用于所有目录列表的绝对路径文件名。它可以被每个webapp 重新自定义使用,或者通过在你局部webapp的web.xml文件里声明默认servlet取消使用。这个xml文件的格式在下面有显示。
localXsltFile
你还可以在每个目录通过配置
localXsltFile定制你的目录列表。它应该是在产生列表的目录里的一个相对路径文件名。它覆盖
globalXsltFile。如果这个值存在,但是文件不存在,那么就使用globalXsltFile。如果globalXsltFile也不存在,那么默认的目录列表就会被显示出来。
在读取用于服务的资源时的输入缓冲容量(in bytes)。[2048]
在读取用于服务的资源时的输出缓冲容量(in bytes)。[2048]
这个上下文否&read only&,因此如PUT 和 DELETE的HTTP命令将被拒绝执行? [true]
fileEncoding
文件编码用于读取静态资源时. [平台默认值]
sendfileSize
如果连接器支持 sendfile, 这个参数表示sendfile将用到的最小文件大小(以KB为单位) . 使用负数 可以禁止使用sendfile. [48]
那么在实际应当当中,我们的应用的一些静态资源就可以交给该servlet去处理,以减轻服务器压力,节省资源。比如我们把对静态资源的访问路径从/变更为/static,如访问http://localhot/style.css改成http://localhost/static/style.css,然后再应用的web.xml文件中增加如下配置代码:
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&/static/*&/url-pattern&
&/servlet-mapping&
以此来实现简单的动静分离。
Tomcat相关教程见以下内容
CentOS 6.6下安装配置Tomcat环境
/Linux/234.htm
RedHat Linux 5.5安装JDK+Tomcat并部署Java项目
/Linux/528.htm
Tomcat权威指南(第二版)(中英高清PDF版+带书签)
/Linux/062.htm
Tomcat 安全配置与性能优化
/Linux/060.htm
Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案
/Linux/395.htm
CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤
/Linux/485.htm
CentOS 6.5下安装Tomcat
/Linux/415.htm
Tomcat 的详细介绍
:请点这里
Tomcat 的下载地址
:请点这里
本文永久更新链接地址
/Linux/394.htm
最新教程周点击榜
微信扫一扫ALLEN_YNAG 的BLOG
用户名:ALLEN_YNAG
文章数:36
评论数:129
访问量:109469
注册日期:
阅读量:5863
阅读量:12276
阅读量:402840
阅读量:1092204
51CTO推荐博文
一、简介二、环境介绍三、后端服务器安装配置四、安装论坛五、安装配置前端Nginx服务器六、验证服务一、Tomcat简介Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是8.0Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC3 (alpha) ReleasedTomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能Tomcat最初是由Sun的软件构架师詹姆斯?邓肯?戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O'Reilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫二、环境介绍系统版本: CentOS 6.4_x86_64 Nginx版本: nginx-1.4.2 JDK版本: jdk-7u40-linux-x64 Tomcat版本:apache-tomcat-7.0.42 论坛版本: JspRun!_6.0.0_GBK 环境介绍: 当用户访问时""网站时,通过Nginx服务器代理,将请求的静态内容(如:.html|.jpg等)让web服务器来响应,而请求的动态内容都让java服务器来响应;这样就实现了动、静的分离三、后端服务器的安装与配置1、安装java服务器 ######1、安装JDK并设置环境变量
[root@java ~]# rpm -ihv jdk-7u40-linux-x64.rpm
[root@java ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
[root@java ~]# . /etc/profile.d/java.sh
######验证JDK是否安装成功
[root@java ~]# java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
========================================================================
######2、安装Tomcat
[root@java ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[root@java ~]# cd /usr/local/
[root@java local]# ln -s apache-tomcat-7.0.42 tomcat
[root@java local]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@java local]# . /etc/profile.d/tomcat.sh
######验证Tomcat是否安装成功
[root@java local]# catalina.sh version
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
/usr/java/latest
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.42
Server built:
Server number:
OS Version:
2.6.32-358.el6.x86_64
Architecture:
JVM Version:
1.7.0_40-b43
JVM Vendor:
Oracle Corporation
----------------------------------------------------------------------
[root@java ~]# catalina.sh start2、访问测试Java服务器######查看监听端口,Tomcat默认监听8080端口
[root@java ~]# ss -tanlp | grep 8080
users:(("java",6163,40))3、安装web服务器######安装nginx依赖环境
[root@web ~]# yum -y install pcre-devel gcc gcc-c++ openssl-devel
[root@web ~]# useradd -r nginx
[root@web ~]# tar xf nginx-1.4.2.tar.gz
[root@web ~]# cd nginx-1.4.2
[root@web nginx-1.4.2]# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
[root@web nginx-1.4.2]# make && make install
======================================================================
######为Nginx提供Sysv服务脚本
[root@web ~]# vim /etc/init.d/nginx
# nginx - this script starts and stops the nginx daemon
# chkconfig:
# description:
Nginx is an HTTP(S) server, HTTP(S) reverse \
proxy and IMAP/POP3 proxy server
# processname: nginx
/etc/nginx/nginx.conf
/etc/sysconfig/nginx
# pidfile:
/var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2&&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2&&1 | grep 'configure arguments:'`
for opt in $ do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
[ $retval -eq 0 ] && touch $lockfile
return $retval
echo -n $"Stopping $prog: "
killproc $prog -QUIT
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
restart() {
configtest || return $?
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
force_reload() {
configtest() {
$nginx -t -c $NGINX_CONF_FILE
rh_status() {
status $prog
rh_status_q() {
rh_status &/dev/null 2&&1
case "$1" in
rh_status_q && exit 0
rh_status_q || exit 0
restart|configtest)
rh_status_q || exit 7
force-reload)
force_reload
condrestart|try-restart)
rh_status_q || exit 0
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
----------------------------------------------------------------------
[root@web ~]# chmod +x /etc/init.d/nginx
[root@web ~]# chkconfig --add nginx
[root@web ~]# service nginx start
[root@web ~]# chkconfig nginx on4、访问测试web服务器[root@web nginx-1.4.2]# ss -tanlp | grep 80
users:(("nginx",30503,6),("nginx",30504,6))5、安装Mysql服务器root@mysql ~]# yum -y install mysql-server
root@mysql ~]# service mysqld start
[root@mysql ~]# mysql
mysql& grant all on bbs.* to 'bbsuser'@'172.16.%.%' identified by 'bbspass';
######注释:创建一个数据库并授权用户,方便后面安装论坛使用到6、测试授权用户是否能使用"172.16.0.0"网段的主机连接,远程主机请确定安装了mysql客户端[root@java ~]# mysql -ubbsuser -pbbspass -h 172.16.14.4 -e 'show databases';
+--------------------+
| Database
+--------------------+
| information_schema |
+--------------------+
######可以远程查询到数据说明已连接成功四、安装论坛1、在java服务器上安装论坛程序######创建网站存放目录
[root@java ~]# mkdir /web
[root@java ~]# unzip JspRun\!_6.0.0_GBK.zip
[root@java ~]# mv upload /web/bbs
------------------------------------------------------------------------
######修改Tomcat的默认访问端口8080为80
&Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /&
######修改tomcat主配置文件添加虚拟主机
&Engine name="Catalina" defaultHost=""&
&Host name=""
appBase="/web/bbs"
unpackWARs="true" autoDeploy="true"&
&Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="bbs_access_log." suffix=".txt"
pattern="%h %l %u %t &%r& %s %b" /&
&Context path="" docBase="/web/bbs" /&
注释:将"&Host&"标记的段添加到"Engine"中,而"Engine"中的默认主机改为定义的主机名称;
name:主机名称
defaultHost:默认访问的主机名称
appBase:网站目录
unpackWARS:是否自动解压"war"格式的包
autoDeploy:是否自动部署应用程序
className:类名称
prefix:日志名称
suffix:日志后缀名
pattern:日志格式
"Context"标记中path:虚拟目录名称,docBase:虚拟目录路径
======================================================================
######修改论坛配置文件,指定数据库主机,数据用户名密码及数据库名称
[root@java conf]# cd /web/bbs/
[root@java bbs]# vim config.properties
dbhost = 172.16.14.4
dbport=3306
dbuser = bbsuser
dbpw = bbspass
dbname = bbs
======================================================================
######启动Tomcat服务并查看端口
[root@java ~]# catalina.sh start
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
/usr/java/latest
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@java ~]# ss -tanlp | grep 80
users:(("java",7493,40))
::ffff:127.0.0.1:8005
users:(("java",7493,53))
users:(("java",7493,41))2、安装论坛程序3、点击下一步--&我同意--&下一步,进入数据库配置页面4、点下一步--&(填写管理员密码)下一步--&进入创建数据表阶段--&然后点--&进入首页5、将论坛程序拷贝到web服务器上面一份,因为WEB服务器要解析静态文件######创建网站存放目录
[root@web ~]# mkdir /web
[root@web ~]# scp -r 172.16.14.3:/web/bbs /web/
######修改Nginx主配置文件
[root@web ~]# vim /etc/nginx/nginx.conf
log_format
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log
logs/host.access.
location / {
index.html index.
######注释:开启访问日志功能;修改虚拟主机指定网站网站目录为"/web/bbs"
----------------------------------------------------------------------
######创建一个静态测试页方便后面测试
[root@web ~]# echo '&h1&WEB:172.16.14.2&/h1&' & /web/bbs/index.html
[root@web ~]# mkdir /usr/local/nginx/logs
#创建日志存放目录
[root@web ~]# service nginx restart五、安装配置Nginx前端服务器1、安装方法与第三部分的nginx安装方法相同,这里就不再介绍如何安装[root@nginx ~]# vim /etc/nginx/nginx.conf
worker_processes
worker_rlimit_nofile 51200;
#error_log
logs/error.
logs/nginx.
worker_connections
default_type
application/octet-
log_format
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log
logs/access.
client_max_body_size 20m;
client_header_buffer_size 16k;
large_client_header_buffers 4 16k;
keepalive_timeout
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 3;
gzip_types text/plain application/x-javascript text/css application/
proxy_temp_path
/tmp/proxy_
proxy_cache_path
/tmp/proxy_cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=3g;
proxy_connect_timeout
proxy_read_timeout
proxy_send_timeout
proxy_buffer_size
proxy_buffers
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 1024m;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404 http_502 http_504;
access_log
logs/host.access.
location / {
proxy_pass http://172.16.14.3;
location ~* \.(|html|htm|jpg|jpeg|png|gif|bmp|swf|ico)$ {
proxy_pass http://172.16.14.2;
location ~* \.(jsp|css|do)$ {
proxy_pass http://172.16.14.3;
#error_page
# redirect server error pages to the static page /50x.html
error_page
500 502 503 504
location = /50x.html {
======================================================================
[root@nginx ~]# service nginx start2、修改Nginx主配置文件六、验证服务1、在客户端使用""域名访问测试,注意:由于没有"DNS"服务器解析需要修改hosts文件来解析 ######添加如下内容解析
C:\Windows\System32\drivers\etc\hosts
172.16.14.1
2、访问静态测试页2、查看web服务器上nginx访问日志[root@web ~]# tail -5 /usr/local/nginx/logs/host.access.log
172.16.14.1 - - [23/Sep/:39 +0800] "GET /images/common/softkeyboard.gif HTTP/1.0" 304 0 "/include/css/keyboard.css" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/ Firefox/24.0" "-"
172.16.14.1 - - [23/Sep/:39 +0800] "GET /images/default/link.gif HTTP/1.0" 304 0 "/forumdata/cache/style_1.css" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/ Firefox/24.0" "-"
172.16.14.1 - - [23/Sep/:02 +0800] "GET /index.html HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/ Firefox/24.0" "-"
172.16.14.1 - - [23/Sep/:39 +0800] "GET /images/default/forumbox_head.gif HTTP/1.0" 304 0 "/forumdata/cache/style_1.css" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/ Firefox/24.0" "-"
172.16.14.1 - - [23/Sep/:01 +0800] "GET /index.html HTTP/1.0" 200 25 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/ Firefox/24.0" "-"
----------------------------------------------------------------------
######由上可见,访问""域名时,所有静态内容都转发到web服务器上;如图片3、查看java服务器上Tomcat访问日志[root@java ~]# tail -5 /usr/local/tomcat/logs/bbs_access_log..txt
172.16.14.1 - - [14/Sep/:57 +0800] "GET /forumdata/cache/style_1.css HTTP/1.0" 304 -
172.16.14.1 - - [14/Sep/:57 +0800] "GET /forumdata/cache/style_1_append.css HTTP/1.0" 304 -
172.16.14.1 - - [14/Sep/:02 +0800] "GET /member.jsp?action=list HTTP/1.0" 200 6839
172.16.14.1 - - [14/Sep/:02 +0800] "GET /forumdata/cache/style_1_append.css HTTP/1.0" 304 -
172.16.14.1 - - [14/Sep/:02 +0800] "GET /forumdata/cache/style_1.css HTTP/1.0" 304 -
------------------------------------------------------------------------
######由上可见,访问的动态内容都转发到Java服务器来解析;如jsp结尾的文件到此,Nginx+Tomcat实现WEB网站的动、静分离已经完成;后面将会更新Apache+Tomcat如何实现Apache代理Tomcat及如何实现会话保存...本文出自 “” 博客,谢绝转载!
了这篇文章
类别:┆阅读(0)┆评论(0)
13:58:05 14:00:10 14:00:42 14:10:54 14:11:41 14:12:15 16:26:57 12:36:14}

我要回帖

更多关于 java web 动静分离 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信