手把手教你用Java搭建自己的网站

news/2024/5/9 14:25:39/文章来源:https://blog.csdn.net/csnewdn/article/details/53377497

手把手教你用Java搭建自己的网站

2016-09-21张昀新浪云计算

经过一段时间的开发,更新,迭代,新浪云容器 Java 环境逐渐成熟起来,相比过去的 Java 运行环境,可用性和易用性都得到了大量的提升。同时也收到了不少用户反馈的使用问题,特此在这篇文章里综合介绍一下容器 Java 使用以及相关服务的整合。


环境说明


新浪云容器 Java 环境基于 Docker 搭建,支持多实例负载均衡,近乎原生虚拟机环境使用无门槛

  • JDK 1.8

  • Web 容器 tomcat-8.0.35

注意:这里以后可能会提供相应的 Web 容器定制服务


准备


开发自己的应用之前,我们先要准备好自己的开发环境,新浪云的容器 Java 应用所需的环境和一般开发环境类似。

  • JDK(最好是能与线上同步,当然低版本也可以) version:1.7 以上

  • 开发 IDE(推荐 eclipse,有相应的开发插件,能够快速上传) version:eclipse(Mars.1 Release (4.5.1) 此版本自带了 maven 插件,不需要另装了)

  • maven(推荐使用,能够方便使用新浪云提供的 sdk) version:3.3.9

安装方式就不累述了,各个环境下如何安装配置,大家可以自行用百度谷歌一下


创建初始化应用


首先我们要创建自己的新浪云账号,这个就不累述了,具体参看新浪云。


然后我们来着手建立一个 maven 的项目,当然我们可以通过 maven 的命令来创建一个项目,不过我们有 IDE,可以方便的利用可视化界面操作,而且也方便使用插件。


好了,我们打开 Eclipse,接下来我们就开始创建自己的 Web 项目,点击"File"->"New"->"Maven project",如下图:



然后点击"Next",注意接下来选择的"Archetype",咱们是 Web 项目,所以一定要选择"maven-archetype-webapp",如下图:



然后点击"Next",填写 Group Id 和 Artifact Id,然后在点击"Finish"。



然后咱们的项目就建好了,目录结构如下图,接下来我们就开始开发我们自己的项目。



首先我们建立一下源码目录,在 src->main 下面新建一个文件夹 java,然后就可以看到如图的应用结构了:



这里还有一个注意的地方,建立好新的 maven 项目之后,可能需要一些简单的配置,如果默认配置好了可以忽略了,主要注意两个方面的配置,一是 Servlet 版本,一是 JDK 版本,以及项目结构。


改下 JDK,点击项目右键 ->proerties->java compile,如下图:



将 JDK 版本调整为 1.7 以上以匹配线上版本。


在修改下项目的结构,如下图。点击 Project Facet,修改下 Java 的版本和刚刚修改的版本一致。



修改下 Dynamic Web Module,改成 3.1 版本(如果点击下面提示无法改变版本的话,就先反选 Dynamic Web Module 然后确定,在重新进入这个界面在勾选即可修改)。如下图:


注意图中的标注位置,点击进去,配置一下 Web 目录,如下图:


将我们建立项目的 Web 目录配置下。


最后,我们在来安装下新浪云的 Eclipse 插件,具体安装的方法参见使用 Eclipse 插件部署 Java 应用。


至此,我们开发前的准备工作就完成了,接下来我们可以开始开发了。


接下来的 Web 应用就可以根据自己的业务需求开始开发,就不说具体的开发过程了,下面着重介绍下新浪云相关服务的使用方法和注意事项。

我们先来建立一个 Servlet,通过这个 Servlet 来演示相关功能的展示,建立一个如下图的 package 在建立一个名为 test 的 Servlet。


create-servlet


然后可以通过 Eclipse 插件将应用上传到新浪云,插件使用见使用 Eclipse 插件部署 Java 应用,也就是你刚刚创建的应用,注意填写相关的信息。部署时间大约为 3 分钟,然后可以在浏览器里访问我们创建的 servlet 了,如下图:



这样,我们的 Servlet 的就建立好了,接下来我们的演示就基于这个 Servlet 展开介绍。

MySQL


新浪云的数据库服务有两种,一种是共享型数据库,一种是独享型数据库,但其实操作方式都是一样的,具体参看相关文档。以共享型数据库为例子吧,通过 jdbc 方式即可连接。


首先,在新浪云控制面板中创建自己的共享型 mysql 实例,然后在pom.xml里添加下 jdbc 驱动。


<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.20</version></dependency>


然后,在咱们刚刚创建的 Serlvet 中,添加如下代码:


String driver = "com.mysql.jdbc.Driver";String username = System.getenv("ACCESSKEY");String password = System.getenv("SECRETKEY");String dbName = System.getenv("MYSQL_DB");String host = System.getenv("MYSQL_HOST");String port = System.getenv("MYSQL_PORT");String dbUrl = "jdbc:mysql://"+host+":"+port + "/" +dbName;try {Class.forName(driver);Connection conn = DriverManager.getConnection(dbUrl,username,password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("show status");while(rs.next()){response.getWriter().println(rs.getString("Variable_name") + " : " +rs.getString("value"));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}


通过插件在上传到你的应用上,稍等一会就能看到如下的效果。



这里只是展示了最基本的使用方法,有些项目中会使用连接池,连接池只需要注意一项,将 idle 时间调整到 10 秒以下即可,无论是独享型还是共享型都是如此。


Memcached

Memcached 服务同样也要在你创建的应用中开启面板,初始化一下。容器使用的 memcache 有 auth 认证,需要使用支持 SASL 协议的客户端,推荐使用spymemcached客户端,首先在pom.xml文件中添加如下依赖。


<dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.0</version></dependency>


同样,我们在刚刚我们新建的 servlet 中添加如下的代码。


String username = System.getenv("ACCESSKEY");String password = System.getenv("SECRETKEY");String server = System.getenv("MEMCACHE_SERVERS");AuthDescriptor ad = new AuthDescriptor(new String[] { "PLAIN" },new PlainCallbackHandler(username, password));MemcachedClient mc = new MemcachedClient(new ConnectionFactoryBuilder().setProtocol(Protocol.BINARY).setAuthDescriptor(ad).build(),AddrUtil.getAddresses(server));OperationFuture<Boolean> of = mc.set("key", 0, "sinacloud");try {response.setCharacterEncoding("gbk");response.getWriter().println("设置结果是否成功:"+ of.get());response.getWriter().println("获取结果:"+mc.get("key"));} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}


上传服务器后效果如下:



这里只是简单的实现了 set 和 get 方法,其他的可以参看 spymemcached。


Redis


新浪云 Redis 服务,类似于 Memcache 服务,先在pom.xml里添加一个 redis 的客户端,如 jedis


<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.0.0</version></dependency>


然后还是在刚刚建立的 Servlet 里添加如下代码:


String redis_url = System.getenv("REDIS_URL");try {URI redisUri = new URI(redis_url);JedisPool pool = new JedisPool(new JedisPoolConfig(),redisUri.getHost(),redisUri.getPort(),Protocol.DEFAULT_TIMEOUT,redisUri.getUserInfo().split(":",2)[1]);Jedis jedis = pool.getResource();response.getWriter().println(jedis.set("key".getBytes(), "sinacloud".getBytes()));response.getWriter().println(jedis.get("key"));} catch (URISyntaxException e) {e.printStackTrace();}


最后上传到新浪云上,可以看到效果。如下图:



MongoDB


首先还是在pom.xml中添加一下依赖。


<dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.2.2</version></dependency>


同时也需要在面板里初始化服务。然后可以根据自己的需要在 mongodb 实例中创建库或者是集合,我自己建立了一个叫"test"的库,然后建立了一个叫"users"的集合。


还是在那个 servlet 中插入如下的代码。


MongoClientURI uri = new MongoClientURI("YOUR_MONGODB_URL");
MongoClient client = new MongoClient(uri);
MongoDatabase
db = client.getDatabase("test");
MongoCollection<Document> users = db.getCollection("users");
Document
user = new Document("key", "sinacloud");
users
.insertOne(user);response.getWriter().println(users.find(user).iterator().next().get("key"));


然后上传到新浪云,可以看到如下结果:



存储服务


这里还是在上面建立的那个 Servlet 演示操作。对于容器 Java,我们提供了一套 SDK 支持,相关存储的操作,SDK 已经放在了 maven 的中央仓库上,可以通过 maven 进行下载,在项目的pom.xml中添加如下依赖:


<dependency><groupId>com.sinacloud.java</groupId><artifactId>java-sdk</artifactId><version>1.2.1</version></dependency>


目前,SDK 里包含了 kvdb(已经在 1.2.2 版本中去除)、云存储、Storage,以后新的服务,会在不断的增加。


Storage


Storage 服务是新浪云开发的一套对象存储服务,首先也要在面板上开启服务,初始化,然后在 servlet 中添加如下的代码:


StorageClient sc = new StorageClient();
sc.createBucket("testbucket");
sc
.putObjectFile("testbucket", "test.txt", "test storage client upload text".getBytes(), null);


然后上传到新浪云上,然后访问一下 Servlet,之后可以在自己 Storage 面板里,可以看到文件。如下图:



云存储


参见云存储,有详细的 API。


分布式Session


多实例的情况下,准备了两种解决方案,一种是粘滞会话,另一种是第三方 Session 存储。粘滞会话可以在创建应用的时候开启。下面演示一下使用第三方 Redis 服务存储 Session为了方便演示,我先把我测试的容器实例扩展到多个,到了 3 个 JVM,如图:



然后我们创建一个 redis 服务,具体创建参见 Redis 文档,然后进入"应用"->"环境变量面板",点击添加环境变量,添加以下两个环境变量。添加如下的环境变量。

  • REDISURL="YOURREDIS_URL"

  • SESSION_MANAGER=REDIS


然后我们重启下我们的应用。


还是在我们上面创建的 Servlet 里演示:


HttpSession session = request.getSession();
session.setAttribute("key", "sinacloud");
response.getWriter().println(session.getAttribute("key"));


然后我们访问下我们的 Servlet,如下图:



最后我们在确认下是否将 Session 的数据存储到了 Redis,进入到 Redis 控制面板,点击管理,输入如下命令:


  • keys *


可以看到如下的效果:



可以看到,由 Tomcat 自主存的 Session 信息,都在我们的 Redis 里了,这样就可以实现多实例之间的 Session 共享了。如果使用过程中需要存储对象,要预先对对象进行序列化。


总结


以上简单的介绍了一下,新浪云容器环境 Java 相关的问题,主要是在新浪云相关的服务上,如果以后有新的服务或者问题,我会继续更新相关的使用方法和文档。当然使用中如果遇到上面问题,可以提交工单 求助或直接在本文留言评论。

具体相关的服务可以参看容器服务的文档中心。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_790822.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

极度危险而常见的网站安全漏洞

极度危险而常见的网站安全漏洞 2014-11-25 20:27 1946人阅读 评论(9) 收藏 举报 分类&#xff1a; Web开发&#xff08;105&#xff09; 最近处理了公司外网项目的两个安全漏洞&#xff0c;很常见&#xff0c;也很危险。一、反射型跨站脚本漏洞漏洞风险&#xff1a; 可以在嵌…

《亿级流量网站架构核心技术》目录一览

《亿级流量网站架构核心技术》目录一览 博客分类&#xff1a; 架构 架构在2011年年底的时候笔者就曾规划写一本Spring的书&#xff0c;但是因为是Spring入门类型的书&#xff0c;框架的内容更新太快&#xff0c;觉得还是写博客好一些&#xff0c;因此就把写完的书稿放到了博客&…

如何把网站变成黑白灰色?

如何把网站变成黑白灰色&#xff1f; (2013-04-21 20:21:32) 转载▼标签&#xff1a; 网站变黑白 it 分类&#xff1a;div css 地震带来的灾难&#xff0c;为了对逝者的哀悼&#xff0c;很多门户网站会把网站变成黑白色。 把这段代码写css文件里 html { filter:progid:DXImageT…

怎么用wordpress建中英文双语及多语言切换的网站

怎么用wordpress建中英文双语及多语言切换的网站 发布时间&#xff1a;2015/11/30 WordPress技术博客 基础教程 2954 0 有很多朋友都想建一个中英文双语及多语言的网站&#xff0c;尤其是外贸行业。这其实对wordpress来说&#xff0c;并不是难事。 建立多语言切换的网站有两种方…

Apache配置多个监听端口和不同的网站目录的简单方法

Apache配置多个监听端口和不同的网站目录的简单方法 网站&#xff08;48&#xff09; From : http://www.waaqi.com/archives/707.html 由于开发的多项目&#xff0c;每个项目又要独立&#xff0c;要用根目录地址。 所以这时候我们需要配置多个不同目录的Apache&#xff0c;如…

纯代码给WordPress网站添加独立下载页面功能

纯代码给WordPress网站添加独立下载页面功能 简单代码&#xff0c;给WordPress主题添加单页下载功能 前言 前几天有个朋友在扣扣上向我咨询下载单页的使用&#xff0c;我今天正好在学车&#xff0c;用手机打字在写下&#xff0c;也顺便给其他有需要的朋友们看看。 介绍 首先…

利用Github Page 搭建个人博客网站

利用Github Page 搭建个人博客网站 转载请注明出处&#xff1a; http://blog.csdn.net/tzs_1041218129/article/details/53214497 http://www.54tianzhisheng.cn/Blog/html/blog_github.html (阅读效果最好) 更多精彩文章请关注微信公众号&#xff1a;猿blog 前言 最近这几天&a…

如何搭建个人网站

如何搭建个人网站&#xff08;二&#xff09; 2017年1月28日by 搬砖工 /0 406在上一篇文章中&#xff0c;博主为大家介绍了有关租赁服务器和连接服务器的步骤。接下来就给大家介绍一下如何在我们租用的服务器上面搭建我们需要的应用服务器和发布产品。本篇文章以nginx、tomcat搭…

12306一直显示服务器忙,网购春运火车票首日 12306网站又现服务器忙

①青岛火车站售票大厅内&#xff0c;购票回家的旅客已明显增多。②来自广西的杨先生和同伴们准备拎着行李提前回家。据了解&#xff0c;他们在船厂工作&#xff0c;由于天冷活少&#xff0c;所以提前放假了。③"小候鸟"在妈妈的背后等候进站上车。 本版图/记者 孙传浩…

茌平计算机中考成绩查询,最新:个人成绩查询中考成绩登录系统网站入口

阅读本文前&#xff0c;请您先点击上面的“疏密有致”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都会有分享&#xff0c;都是免费订阅&#xff0c;请您放心关注。注&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言…

iconfont 图标宽高出问题_icon图标网站分享

分享几个优秀的图标网站&#xff0c;小伙伴们可以自行取用哈~本文通过四个类别进行网站分享。类别1&#xff1a;icon图标网站1、iconfont链接地址&#xff1a;https://www.iconfont.cn/阿里巴巴图标矢量库&#xff0c;今年新增了插画库的功能&#xff0c;是众多设计师钟爱的图标…

北大网站服务器关闭,北京大学网络服务

&nbsp1、如何在Windows2000环境下配置静态IP地址第一步&#xff1a;选择“控制面板”&#xff0c;选择“网络和拨号连接”第二步&#xff1a;鼠标右键选择“本地连接”(或者相应的网卡名称)&#xff0c;选择“属性”第三步&#xff1a;选择“TCP/IP协议”第四步&#xff1a…

nextcloud linux源码有没有java版本的_如何使用Nextcloud 搭建个人网站

Nextcloud是一套用于创建网络硬盘的客户端&#xff0d;服务器软件。其功能与Dropbox相近&#xff0c;但Nextcloud是自由及开放源代码软件&#xff0c;每个人都可以在私人服务器上安装并运行它。与Dropbox等专有服务相比&#xff0c;Nextcloud的开放架构让用户可以利用应用程序的…

网站做好后不能用手机浏览吗_企业品牌网站建设要注意哪些细节

互联网行业蓬勃发展&#xff0c;要做好互联网营销&#xff0c;那么企业网站的一定不能少的&#xff0c;现在网站的类型各种各样&#xff0c;比如企业展示类、商城类、商务类、分享类等等&#xff0c;网站的类型有很多&#xff0c;但是对于企业来说&#xff0c;主要还是展示类和…

pygame.image.load()找不到图片_强烈种草的5款资源网站!每一款都有找不尽的资源!...

你们知道的资源网站有哪些呢&#xff1f;百度&#xff01;百度&#xff01;百度&#xff01;其实除了百度还有很多资源网站我们需要去慢慢挖掘&#xff0c;只是你不知道而已。今天小编就来和你扒一扒有哪些资源网站值得我们收藏&#xff0c;快来看看吧&#xff01;1. 虫部落快搜…

搜索引擎收录查询工具_影响网站收录的因素有哪些?

点上方蓝字关注我们在seo优化网站中&#xff0c;收录是很重要的数据&#xff0c;通过分析收录数据&#xff0c;可以诊断出网站存在的问题&#xff0c;帮助seoer不断调整优化策略。什么是网站收录?网站收录是指搜索引擎通过自己的算法&#xff0c;通过蜘蛛抓取&#xff0c;将网…

用html做网站古诗春思,春思

七言律诗皇甫冉春思莺啼燕语报新年&#xff0c; 马邑龙堆路几千。家住层城邻汉苑&#xff0c; 心随明月到胡天。机中锦字论长恨&#xff0c; 楼上花枝笑独眠。为问天戎窦车骑&#xff0c; 何时返旆勒燕然。Seven-character-regular-verseHuangfu RanSPRING THOUGHTSFinch-notes…

实验Linux之利用源代码——httpd网站搭建服务(阿帕奇)的安装

源码包安装一&#xff0c;下载源码包二、安装gcc、gcc-c、make三、解压并安装四、make 和make install五、修改配置文件与启动六、启动apache&#xff1a;七、最后一步&#xff0c;查看是否安装成功1&#xff0c;源代码包的一般封包格式&#xff1a;包名.tar.gz或者是包名.tar.…

实验Linux之利用rpm,yum——httpd网站搭建服务(阿帕奇)的安装搭建

安装位置&#xff1a;利用rpm安装的软件会有自己的默认安装路径 1、先查看自己的linux的版本 uname -a 为第七代版本 &#xff0c;安装软件要安装centos7的 2、网站搭建服务的对应软件名为httpd&#xff0c;登录网站进行查找&#xff0c;选择x64_64版本 https://pkgs.org/ 3…

360浏览器一直显示安全连接到服务器,360浏览器提示“您与此网站之间建立的连接不安全完美解决方法...

如果您是该网站的访客&#xff0c;请注意不要在该网站上输入任何敏感信息&#xff0c;更不要在线进行任何购买等交易&#xff0c;因为正规的网上商城网站都会使用 https 加密连接来保护用户的信息安全。安装了SSL证书的网站&#xff0c;好处很多&#xff0c;例如可以获得更好的…