《Head First Servlets & JSP》-葡京在线开户6-会话管理-listener etc. demo

工程协会

葡京在线开户 1

至今让我们初始一天的建站之旅。

上下文参数示例

演示程序显示了哪些从上下文读取参数,并在上下文监听器中生成属性对象和在内外文中设置属性。

  • 确立二个简约的JavaBean对象作为质量:Dog.java

package com.example.entities;/** * Created by LTN on 2016/11/2. */public class Dog {    private String breed;    public Dog(String breed) {        this.breed = breed;    }    public String getBreed() {        return breed;    }}
  • 树立多少个servlet上下文监听器DogServletContextListener.java

package com.example.listener;import com.example.entities.Dog;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;/** * Created by LTN on 2016/11/2. */public class DogServletContextListener implements javax.servlet.ServletContextListener {    public void contextInitialized(ServletContextEvent event) {        ServletContext sc = event.getServletContext();        String dogBreed = sc.getInitParameter("breed");        Dog d = new Dog(dogBreed);        sc.setAttribute("dog", d);    }    public void contextDestroyed(ServletContextEvent event) {        //do nothing.    }}
  • 成立Servlet举行测试ContextListenerTester.java

package com.example.servlet;import com.example.entities.Dog;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;/** * Created by LTN on 2016/11/2. */public class ContextListenerTester extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        out.println("test context attributes set by listener<br>");        out.println("<br>");        Dog dog = (Dog) getServletContext().getAttribute("dog");        out.println("Dog's breed is: " + dog.getBreed());    }}
  • 在DD(web.xml)中布局上下文参数、监听器和servlet映射关系

<web-app>  <display-name>Archetype Created Web Application</display-name>  <context-param>    <param-name>breed</param-name>    <param-value>Great Dane</param-value>  </context-param>  <servlet>    <servlet-name>ListenerTester</servlet-name>    <servlet-class>com.example.servlet.ContextListenerTester</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>ListenerTester</servlet-name>    <url-pattern>/ListenTest.do</url-pattern>  </servlet-mapping>  <listener>    <listener-class>com.example.listener.DogServletContextListener</listener-class>  </listener></web-app>

test context attributes set by listenerDog's breed is: Great Dane

本文是《火速创造网站》连串的第叁篇,假如你还没有看过从前的剧情,建议您点击以下目录中的章节先阅读别的内容再回去本文。

Session属性监听器

选择Session属性监听器对Session中属性举办监听,当Session属性爆发大增、删除或变更时,会被该监听器捕捉。

  • 创建三个Session属性监听类DogSessionAttributeListener.java

package com.example.listener;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;/** * Created by LTN on 2016/11/2. */public class DogSessionAttributeListener implements HttpSessionAttributeListener {    public void attributeAdded(HttpSessionBindingEvent event) {        String name = event.getName();        Object value = event.getValue();        System.out.println("Attribute added: " + name + ": " + value);    }    public void attributeRemoved(HttpSessionBindingEvent event) {        String name = event.getName();        Object value = event.getValue();        System.out.println("Attribute removed: " + name + ": " + value);    }    public void attributeReplaced(HttpSessionBindingEvent event) {        String name = event.getName();        Object value = event.getValue();        System.out.println("Attribute replaced: " + name + ": " + value);    }}
  • 树立3个Servlet测试类AttributeListenerTester.java

package com.example.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;/** * Created by LTN on 2016/11/2. */public class AttributeListenerTester extends HttpServlet {    private static int labelCounter = 0;    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {        HttpSession session = request.getSession();        session.setAttribute("label", "label" + labelCounter++);    }}
  • 在DD中配置servlet和listener

<servlet>  <servlet-name>AttributeListenTester</servlet-name>  <servlet-class>com.example.servlet.AttributeListenerTester</servlet-class></servlet><servlet-mapping>  <servlet-name>AttributeListenTester</servlet-name>  <url-pattern>/AttributeListenerTest.do</url-pattern></servlet-mapping><listener>  <listener-class>com.example.listener.DogSessionAttributeListener</listener-class></listener>

Attribute added: label: label0

然后一而再一回刷新,后台依次打字与印刷:

Attribute replaced: label: label0Attribute replaced: label: label1Attribute replaced: label: label2

在意,event.getName()和event.getValue()都以赢得该事件在此之前的session属性的值。

访问本体系目录,请点击:http://devopshub.cn/tag/wordpress-on-azure/

计算全局活动的对话

选择HttpSessionListener进行全局活动会话的总括,类似总结在线人数成效。

  • 树立全局活动会话监听器

package com.example.listener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;/** * Created by LTN on 2016/11/2. */public class GlobalCounterListener implements HttpSessionListener {    static private int activeSessions;    public static int getActiveSessions() {        return activeSessions;    }    public void sessionCreated(HttpSessionEvent event) {        activeSessions++;    }    public void sessionDestroyed(HttpSessionEvent event) {        activeSessions--;    }}
  • 建立servlet测试类GlobalCounterTester.java

package com.example.servlet;import com.example.listener.GlobalCounterListener;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;import java.io.PrintWriter;/** * Created by LTN on 2016/11/2. */public class GlobalCounterTester extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {        PrintWriter out = response.getWriter();        HttpSession session = request.getSession();        session.setAttribute("name","counter");        String name=(String)session.getAttribute("name");        int activeSessions= GlobalCounterListener.getActiveSessions();        out.println("name: "+name);        out.println("activeSessions: "+activeSessions);    }}
  • 在DD中配置servlet和listener

<servlet>  <servlet-name>SessionCounterTester</servlet-name>  <servlet-class>com.example.servlet.GlobalCounterTester</servlet-class></servlet><servlet-mapping>  <servlet-name>SessionCounterTester</servlet-name>  <url-pattern>/CounterTest.do</url-pattern></servlet-mapping><listener>  <listener-class>com.example.listener.GlobalCounterListener</listener-class></listener>

name: counteractiveSessions: 1

换一个浏览器,输入地点,会展现activeSessions数值递增。

留意,同3个浏览器开新标签不能够使得session个数扩充;关闭当前浏览器再跟着运转,也不能够。

1. 网站管理平台WordPress和云总结平台Azure简介 (6秒钟摄像)
2.1 在Azure上成立网站及网站运营机制
(13分钟录制)

2.2 域名绑定操作和Azure负载均衡机制
(12分钟录制)

2.3 WordPress 开端化和网站管理功效(11分钟摄像)
3.1 WordPress 数据导入
(12分钟摄像)

3.2 WordPress 多站点匡助和Azure在线代码编辑器
(14分钟摄像)

3.3 WordPress 多语言匡助 Multisite Language Switcher
(16分钟录像)

3.4 WordPress 大旨安装和安顿,美化你的网站
(1五分钟录像)

4.1 为什么造软件分化于造小车,为何是软件就势必会有Bug -
创设开发运转一体化(DevOps)(11分钟录像)

4.2 完毕篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术
(13分钟录制)

特性绑定监听器

当属性对象被投入session或从session删除使,对象自小编能够知道。

  • 建立Session
    binding监听器Dog.java,该类继承了HttpSessionBindingListener,并贯彻valueBound和valueUnbound方法。

package com.example.entities;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionBindingListener;/** * Created by LTN on 2016/11/2. */public class Dog implements HttpSessionBindingListener {    private String breed;    public Dog(String breed) {        this.breed = breed;    }    public String getBreed() {        return breed;    }    public void valueBound(HttpSessionBindingEvent event) {        System.out.println("I am a dog, i know i am in a conversation now.");    }    public void valueUnbound(HttpSessionBindingEvent event) {        System.out.println("I am a dog, i know i am leaving a conversation now.");    }}
  • 建立servlet测试类EntityBindingTester.java

package com.example.servlet;import com.example.entities.Dog;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;/** * Created by LTN on 2016/11/2. */public class EntityBindingTester extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException {        Dog dog = (Dog) getServletContext().getAttribute("dog");        HttpSession session = request.getSession();        session.setAttribute("dog-binding",dog);        session.invalidate();    }}
  • 在DD中配置servlet,注意,属性Dog不用/能在DD中配置

<servlet>  <servlet-name>ObjectBindingTester</servlet-name>  <servlet-class>com.example.servlet.EntityBindingTester</servlet-class></servlet><servlet-mapping>  <servlet-name>ObjectBindingTester</servlet-name>  <url-pattern>/ObjectBindingTest.do</url-pattern></servlet-mapping>

I am a dog, i know i am in a conversation now.Attribute added: dog-binding: com.example.entities.Dog@6dbba86eI am a dog, i know i am leaving a conversation now.Attribute removed: dog-binding: com.example.entities.Dog@6dbba86e

请协作摄像阅读本文

附属类小部件列表

 

网站域名注册

各类网站都急需有自身的域名,域名是绝无仅有标识站点的称号。给站点起1个简单记念并且和情节有关的域名是您建站的首先步。能够透过以下那么些域名服务可以自助达成注册的行事,一般的话5-10分钟就足以成功一个网站的域名注册操作。

微软Azure云总结国际版和国内版

对于中华人民共和国的用户来说,获取微软Azure云总结账号有八个途径,分别是:Azure国际版和Azure国内版。

  • 国际版:二〇一〇年6月2十三十日,当时微软的首席架构师
    Ray
    Ozzie在微软技术大会上发布,并在二零零六年十一月正规开班在大地经济贸易营业的云总括平台。Azure在天下有二1一个数据大旨(服务区),覆盖了北美,南美,亚洲,澳大瓦尔帕莱索(Australia)和大洋洲等首要区域。在澳大伯尔尼联邦(Commonwealth of Australia),Azure国际版有3个数据大旨,分别位居:香港(Hong Kong)(南亚),新加坡(东南亚),扶桑(东瀛东边和西边)。具体的数据基本分布能够参见:http://azure.microsoft.com/en-us/regions/
    葡京在线开户 2
  • 国内版:由于中国政党的方针限制,微软不只怕间接在中华夏族民共和国境内运行数据基本服务。因此,在二〇一五年与世纪互联合营,由微软提供全套技艺和人口,由世纪互联提供运维和实体,成立Azure中夏族民共和国。是第几个在神州境内正式商用的全球化云总计提供商。当前,Azure在中夏族民共和国境内提供一个数据主导,分别位于:香岛和新加坡。介于国内的运行商互相隔绝的情况,Azure也提供了BGP连接,确认保障用户可以因而任何网络便捷的造访Azure的数目宗旨服务。

也是因为政策的限量,Azure在境内的数额核心与国外的多少基本是不提供第1手的多寡链路的,同时也选拔2套独自的账号类别,2种例外的定价策略,因而大家在甄选服务的时候需求综合考虑本人的受众以及Azure国内外服务的异样来设想。

从技术上看,Azure国际版的法力是翻新的百般火速的。国内版由Yu Gang刚开首运维,在职能上与国际版如故有自然的差距。比如:大家在《赶快创造网站》中所使用的WordPress自动布置成效当前在Azure国内版中就还尚未提供。那里的因由不外乎境内版刚刚伊始运行之外,也和诸多的非技术因素。比如:像WordPress的那个活动安顿必要重视ClearDB所提供的mysql服务,而clearDB是第贰方的云服务,由此很难间接引入到中华来行使。可是,固然有这几个限制,近日境内Azure的换代速度也在通宵达旦,基本上在国际版新服务提供后90天内可以一并到位国内的配备。表明国内的Azure团队依旧在相连的老到和立异的。

Azure云总括账号获得

因为以上的因由,有2种差别的措施赢得Azure账号。

  • 国际版账号,能够通过以下网址获取。国际版试用账号提供$210比索的利用额度,你可以选择这么些额度购买任何的服务,有效期3个月。http://azure.microsoft.com/zh-cn/pricing/free-trial/

    只要您有MSDN也许BizSpark(初创集团)账号,那么将同时获取一定的免费应用额度;而且MSDN和Biz斯Parker账号的Azure额度是每种月更新的,也正是说,具备msdn或Biz斯Parker账号的用户能够在向来免费应用Azure的服务。

    假诺你是学生也许老师,也得以报名一定额度的免费Azure用量。

    登记方式:你必要在线完结登记,并提供贰个非中夏族民共和国民代表大会陆的手提式有线话机号码用于账号激活。那点恐怕大家认为比较辛苦,但实则您一点一滴能够找个Hong Kong照旧其余地点的对象,用他们手机号码激活。只须求让她们把激活码发送给你就好了。激活进度必要您提供信用卡号码(国内的信用卡是ok的),可是要是您不高于用量,是不会生出开支的。

  • Azure国内版账号,能够通过以下网址获取。国内版当前提供1元人民币试用,注册进程能够在线完毕,1元的支出可以因此支付宝成功。激活账号后你将拿到¥1500人民币的用量,能够用来购买别的的服务,有效期为一个月。http://www.windowsazure.cn/pricing/1rmb-trial/

Azure用量总结器

Azure提供了简约易用的用量/价格总计器,可以很有益于的计量本身的额度能够动用多少财富。

葡京在线开户 3

在微软Azure云计算平台上创设网站服务

录像中所演示的网站制造进度如下:
注:此演示进度接纳Azure国际版达成。

  1. 登陆Azure控制台 https://manage.windowsazure.com
  2. 点击左侧的 网站 图标进入 网站作用 页面
    葡京在线开户 4
  3. 点击页面左下角的 新建 按钮,并在弹出的功效菜单中选拔 计算 |
    网站 | 从库中

    葡京在线开户 5
  4. 在弹出的 查找Microsoft Azure应用 页面中,点击左侧的 博客
    过滤项,并在中游列表中找到WordPress 的选项,并单击选定。
    葡京在线开户 6注:大家必要小心左侧所出示的WordPress版本,Azure会不断的将以此本子更新为新型的WordPress稳定版。在作文本文时利用的是4.1本子,由此后续在设置各类插件的时候均选拔与4.1本子包容的内容。
  5. 单击右下角的 葡京在线开户,下一步 图标,在 计划使用 页面中,填写站点的着力新闻,包罗:

    • U大切诺基L:那是叁个以 azurewebsites.net
      结尾的域名,你必要钦命此域名的第贰有的。这几个域名是Azure用来区分差异应用的内部域名,与本文先河时作者要求大家注册的域名区别,这一个域名是由Azure来分辨和管制的。当大家的网站创造好后,我们将把我们友好的登记的域名绑定到那几个Azure的中间域名上。
    • 数据库:这是WordPress用来存放网站数量的数据库,Azure能够活动创设MySQL数据库并自行配置WordPress连接到这些数据库上。
    • Web Scale Group (Web Hosting Plan
      宿主任会布署):宿主任会布署是Azure中用来对网站财富拓展分组管理的作用,你能够把一组有关的网站放置于同2个宿主布置中,那样在进展横向扩充的时候就能够而且对那个网站开展操作,简化你的壮大操作。相关资料请参见:http://azure.microsoft.com/blog/2014/04/04/introducing-web-hosting-plans-for-azure-web-sites/
    • 区域:那里将列出Azure在海内外的具有数据主导,你能够接纳将团结的站点放置在里头任何2个数量主导。采纳数据主导时要尽大概接纳与本身的靶子用户相比近的职位,保险访问的速度和平稳。全部区域列表能够在此间查到:http://azure.microsoft.com/zh-cn/regions/
    • 订阅:订阅是Azure中用来管理账号相关能源的点子,每种Azure账号能够有多个订阅,每种订阅中得以管理四个能源。你也得以将一个订阅分配给其余用户使用。
    • 陈设设置:那是与WordPress相关的部分布置项,其情节会写入到wp-config.php那个布局文件中。在那里配置的都以局地密钥,用来对WordPress数据库中的敏感新闻举行加密的。这个密钥早先时期能够经过修改wp-config.php文件随时修改,在那里能够配备也足以留空。

    葡京在线开户 7

  6. 点击 下一步 后,在 新建MySQL数据
    页面中,配置好数据库名称和区域
    葡京在线开户 8
    数据库的区域要尽或者与网站的区域联合,以管教网站和数据库的连年速度。此外,同二个区域内的数据传输不会吸收开支,而跨数据主导的数目流量是收费的。

  7. 点击 落成按钮,等待Azure完毕布局。进度中得以由此点击页面右下角的快慢图标看到进程。
    可以由此控制台看到近年来的窗台,如:正在开创
    葡京在线开户 9
    点击右下角的速度图标,看到详细的速度
    葡京在线开户 10
  8. 当网站的情状展现为 正在运作 后,就意味着网站成立已经成功,大家就足以行使大家的网站了。
    将鼠标放置在网站名称上,能够看出二个向右的箭头
    葡京在线开户 11点击此箭头就能够进来当前网站的控制台,控制台上分区域展现和脚下网站相关的有着新闻。对网站的有着操作都得以透过这里形成
    葡京在线开户 12
  9. 完结以上操作后,能够点击左边的 站点url,打开以下WordPress安装页面。
    请留心:不要点击下一步。因为WordPress会采纳当前页面包车型地铁url来起始化数据库,大家不期望WordPress使用.azurewebsites.net那样的域名来展开起始化(当然,要是您只是实行测试,那就无所谓了)。在2.第22中学,大家将会形成域名的绑定,届时大家会回到那几个页面完结WordPress的安装操作。
    葡京在线开户 13

Azure网站机制介绍

Azure 网站服务是一种
Platform-as-a-Service(PaaS http://en.wikipedia.org/wiki/Platform_as_a_service )服务,是构建在操作系统和应用服务器之上的一种选择级别的服务。使用PaaS服务的裨益是你不要关怀底层的应用服务器和操作系统(对Azure而言正是Windows
Server和IIS服务),只必要维护本身的应用程序(网站)即可,那样如操作系统升级,补丁和立异等难题就都交予云服务平台来成功。同时,Azure还对网站提供三个很关键的功力:冗余,复杂均衡和自动化陈设。

  • 冗余:不畏备份,不过那是一种在线的备份,也正是说在同一时间,你的网站有四个互为共同的备份存在。在其他时候,假设正在被应用的正片出现了难点,Azure会自动将呼吁改换成可用的备份上边。而且,Azure还提供跨数据基本的地理冗余,比如:你的网站放置在法国首都市的多寡主题,那么你能够选取在东方之珠的数量主导成立冗余,那样一旦北京的数目宗旨完全被破坏了,你的数额还是是安全的。这几个冗余操作和还原在Azure中都以活动实现的,用户只须要选定相应的配置即可。

     

    葡京在线开户 14
    冗余

  • 负载均衡:就是多节点轮换举行服务,那至关心爱抚即便为着缓解品质难题。假若二个节点的习性不只怕知足须要,你能够透过简单的布署达成多少个节点的创设,Azure会自动的将请求分配给全数的节点,同时形成你的行使在不一致节点间的一块。负载均衡的体制和卫生院里面包车型大巴分诊台很类似,因为患儿很多,医院一般都会为同三个科室(服务)配置三个分诊台(负载均衡器NLB),由她实现病者到诊室的分配,保证医务人士(服务器能源)的充裕利用和病者等候时间(响应时间)的支配。同时,假若哪个医务人士必要上厕所(离线)也许休病假(当机),分诊台也足以动态的姣好病人的分配。

     

    葡京在线开户 15
    负载均衡

  • 自动化安排:在上述网站创立进程能够看来,Azure会自动完结IIS配置,WordPress文件上传和mysql的铺排,同时修改wp-config.php这一个布局文件,保障新布署的站点能够自行的接连到对应的数据库上。而在观念的WordPress安排中,以上这二个操作都以急需人工完毕的。自动化布署也能够与不断集成系统举行合并,在《快捷创造网站》体系的结尾,笔者会给大家介绍如何行使Visual
    Studio Online中的git代码库与Azure网站实行合并,完结自动化的配备。

末尾值得一提的是,Azure网站不仅仅支持微软的费用语言和环境,同时也为开源环境提供了很好的支撑,当前所支撑的环境至关心爱惜要不外乎:

在当年七月的MVP ComCamp二〇一六Keynote上自家也演示了什么陈设一个Node.JS应用到Azure网站上,感兴趣的同桌能够看看那篇博客(有录像演示):

http://anb.io/blog/opensource-freetools-crossplatform-mvp-comcamp2015-keynote/

指望本文能够协理您对Azure云计算有一定的初叶摸底,并且能够获取到免费的试用账号。要是你早已实现了本文的操作,请《神速创造网站》连串一连的始末。

请关怀微信公众号,每一周推送内容,有技巧也有失足,一起做个有心理的程序猿。
葡京在线开户 16