<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fishmc的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fishmc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fishmc]]></copyright><item><title><![CDATA[zookeeper的一致性协议]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412559</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412559</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:39:40 +0800</pubDate><description><![CDATA[Zookeeper使用了一种称为Zab（Zookeeper Atomic Broadcast）的协议作为其一致性复制的核心，据其作者说这是一种新发算法，其特点是充分考虑了Yahoo的具体情况：高吞吐量、低延迟、健壮、简单，但不过分要求其扩展性。下面将展示一些该协议的核心内容：

另，本文仅讨论Zookeeper使用的一致性协议而非讨论其源码实现

Zookeeper的实现是有Client、]]></description><category></category></item><item><title><![CDATA[JSP 国际化]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412425</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412425</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:24:45 +0800</pubDate><description><![CDATA[在开始前，需要解释几个重要的概念：

国际化（i18n）：表明一个页面根据访问者的语言或国家来呈现不同的翻译版本。本地化（l10n）：向网站添加资源，以使它适应不同的地区和文化。比如网站的印度语版本。区域：这是一个特定的区域或文化，通常认为是一个语言标志和国家标志通过下划线连接起来。比如"en_US"代表美国英语地区。

如果想要建立一个全球化的网站，就需要关心一系列项目。本章将会详细告诉]]></description><category></category></item><item><title><![CDATA[JSP 自定义标签]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412413</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412413</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:24:45 +0800</pubDate><description><![CDATA[自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet，标签转化为对被 称为tag handler的对象的操作，即当servlet执行时Web container调用那些操作。

JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。

你可以继承Si]]></description><category></category></item><item><title><![CDATA[JSP JavaBean]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412409</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412409</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:24:18 +0800</pubDate><description><![CDATA[JavaBean是特殊的Java类，使用J ava语言书写，并且遵守JavaBeans API规范。

接下来给出的是JavaBean与其它Java类相比而言独一无二的特征：

提供一个默认的无参构造函数。需要被序列化并且实现了Serializable接口。可能有一系列可读写属性。可能有一系列的"getter"或"setter"方法。


JavaBeans属性

一个JavaB]]></description><category></category></item><item><title><![CDATA[JSP 调试]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412421</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412421</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:24:07 +0800</pubDate><description><![CDATA[要测试/调试一个JSP或servlet程序总是那么的难。JSP和Servlets程序趋向于牵涉到大量客户端/服务器之间的交互，这很有可能会产生错误，并且很难重现出错的环境。

接下来将会给出一些小技巧和小建议，来帮助您调试程序。


使用System.out.println()

System.out.println()可以很方便地标记一段代码是否被执行。当然，我们也可以打印出各种各]]></description><category></category></item><item><title><![CDATA[JSP 异常处理]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412417</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412417</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:23:35 +0800</pubDate><description><![CDATA[当编写JSP程序的时候，程序员可能会遗漏一些BUG，这些BUG可能会出现在程序的任何地方。JSP代码中通常有以下几类异常:

检查型异常:检查型异常就是一个典型的用户错误或者一个程序员无法预见的错误。举例来说，如果一个文件将要被打开，但是无法找到这个文件，则一个异常被抛出。这些异常不能再编译期被简单地忽略。运行时异常:一个运行时异常可能已经被程序员避免，这种异常在编译期将会被忽略。错误:这里没]]></description><category></category></item><item><title><![CDATA[JSP 表达式语言]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412415</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412415</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:23:08 +0800</pubDate><description><![CDATA[JSP表达式语言（EL）使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数，浮点数，字符串，常量true、false，还有null。


一个简单的语法

典型的，当您需要在JSP标签中指定一个属性值时，只需要简单地使用字符串即可：



JSP EL允许您指定一个表达式来表示属性值]]></description><category></category></item><item><title><![CDATA[JSP XML 数据处理]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412399</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412399</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:23:00 +0800</pubDate><description><![CDATA[当通过HTTP发送XML数据时，就有必要使用JSP来处理传入和流出的XML文档了，比如RSS文档。作为一个XML文档，它仅仅只是一堆文本而已，使用JSP创建XML文档并不比创建一个HTML文档难。


使用JSP发送XML

使用JSP发送XML内容就和发送HTML内容一样。唯一的不同就是您需要把页面的context属性设置为text/xml。要设置context属性，使用命令，就像这样]]></description><category></category></item><item><title><![CDATA[JSP 连接数据库]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412395</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412395</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:20:16 +0800</pubDate><description><![CDATA[本章节假设您已经对JDBC有一定的了解。在开始学习JSP数据库访问前，请确保JDBC环境已经正确配置。

首先，让我们按照下面的步骤来创建一个简单的表并插入几条简单的记录：


创建表

在数据库中创建一个Employees表，步骤如下：

步骤1：
打开CMD，然后进入数据库安装目录：
C:\>
C:\>cd Program Files\MySQL\bin
C:\Progr]]></description><category></category></item><item><title><![CDATA[JSP 标准标签库（JSTL）]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412381</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412381</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:19:06 +0800</pubDate><description><![CDATA[JSP标准标签库（JSTL）是一个JSP标签集合，它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务，比如迭代，条件判断，XML文档操作，国际化标签，SQL标签。 除了这些，它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能，可以将其分为5个类别。

核心标签格式化标签SQL 标签XML 标签JSTL 函数


JSTL 库安装]]></description><category></category></item><item><title><![CDATA[JSP 自动刷新]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412345</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412345</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:18:34 +0800</pubDate><description><![CDATA[想象一下，如果要直播比赛的比分，或股票市场的实时状态，或当前的外汇配给，该怎么实现呢？显然，要实现这种实时功能，您就不得不规律性地刷新页面。

JSP提供了一种机制来使这种工作变得简单，它能够定时地自动刷新页面。

刷新一个页面最简单的方式就是使用response对象的setIntHeader()方法。这个方法的签名如下：
public void setIntHeader(String ]]></description><category></category></item><item><title><![CDATA[JSP 发送邮件]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412361</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412361</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:17:04 +0800</pubDate><description><![CDATA[虽然使用JSP实现邮件发送功能很简单，但是需要有JavaMail API，并且需要安装JavaBean Activation Framework。

在这里下载最新版本的 JavaMail。在这里下载最新版本的 JavaBeans Activation Framework(JAF)。

下载并解压这些文件，在根目录下，您将会看到一系列jar包。将mail.jar包和activation.j]]></description><category></category></item><item><title><![CDATA[JSP 页面重定向]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412325</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412325</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:16:47 +0800</pubDate><description><![CDATA[当需要将文档移动到一个新的位置时，就需要使用JSP重定向了。

最简单的重定向方式就是使用response对象的sendRedirect()方法。这个方法的签名如下：
public void response.sendRedirect(String location)
throws IOException 


这个方法将状态码和新的页面位置作为响应发回给浏览器。您也可以使用setSta]]></description><category></category></item><item><title><![CDATA[JSP 日期处理]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412321</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412321</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:16:09 +0800</pubDate><description><![CDATA[使用JSP最重要的优势之一，就是可以使用所有Java  API。本章将会详细地讲述Java中的Date类，它在java.util包下，封装了当前日期和时间。

Date类有两个构造函数。第一个构造函数使用当前日期和时间来初始化对象。
Date( )


第二个构造函数接受一个参数，这个参数表示从1970年1月1日凌晨至所要表示时间的毫秒数。
Date(long millisec)

]]></description><category></category></item><item><title><![CDATA[JSP 文件上传]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412313</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412313</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:15:26 +0800</pubDate><description><![CDATA[JSP可以通过HTML的form表单上传文件到服务器。 文件类型可以是文本文件、二进制文件、图像文件等其他任何文档。


创建文件上传表单

接下来我们使用HTML标签来创建文件上传表单，以下为要注意的点：

form表单 method 属性必须设置为 POST 方法 ，不能使用 GET 方法。form表单 enctype 属性需要设置为 multipart/form-data。fo]]></description><category></category></item><item><title><![CDATA[JSP 点击量统计]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412333</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412333</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:15:20 +0800</pubDate><description><![CDATA[有时候我们需要知道某个页面被访问的次数，这时我们就需要在页面上添加页面统计器，页面访问的统计一般在用户第一次载入时累加该页面的访问数上。

要实现一个计数器，您可以利用应用程序隐式对象和相关方法getAttribute()和setAttribute()来实现。

这个对象表示JSP页面的整个生命周期中。当JSP页面初始化时创建此对象，当JSP页面调用jspDestroy()时删除该对象。]]></description><category></category></item><item><title><![CDATA[JSP Session]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412307</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412307</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:14:49 +0800</pubDate><description><![CDATA[HTTP是无状态协议，这意味着每次客户端检索网页时，都要单独打开一个服务器连接，因此服务器不会记录下先前客户端请求的任何信息。

有三种方法来维持客户端与服务器的会话：


Cookies

网络服务器可以指定一个唯一的session ID作为cookie来代表每个客户端，用来识别这个客户端接下来的请求。

这可能不是一种有效的方式，因为很多时候浏览器并不一定支持cookie，所]]></description><category></category></item><item><title><![CDATA[JSP 过滤器]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412297</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412297</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:13:18 +0800</pubDate><description><![CDATA[Servlet和JSP中的过滤器都是Java类，它们存在的目的如下：

在请求访问后端资源时拦截它管理从服务器返回给客户端的响应

下面列出了多种常用的过滤器类型：

认证过滤器数据压缩过滤器加密过滤器触发资源访问事件的过滤器图像转换过滤器登录和验证过滤器MIME类型链过滤器令牌过滤器转换XML内容的XSL/T过滤器

过滤器将会被插入进web.xml文件中，然后映射servlet]]></description><category></category></item><item><title><![CDATA[JSP Cookies 处理]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412299</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412299</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:11:57 +0800</pubDate><description><![CDATA[Cookies是存储在客户机的文本文件，它们保存了大量轨迹信息。在servlet技术基础上，JSP显然能够提供对HTTP cookies的支持。

通常有三个步骤来识别回头客：

服务器脚本发送一系列cookies至浏览器。比如名字，年龄，ID号码等等。浏览器在本地机中存储这些信息，以备不时之需。当下一次浏览器发送任何请求至服务器时，它会同时将这些cookies信息发送给服务器，然后服务器]]></description><category></category></item><item><title><![CDATA[JSP HTTP 状态码]]></title><link>https://blog.youkuaiyun.com/fishmc/article/details/38412287</link><guid>https://blog.youkuaiyun.com/fishmc/article/details/38412287</guid><author>fishmc</author><pubDate>Thu, 07 Aug 2014 08:11:54 +0800</pubDate><description><![CDATA[HTTP请求与HTTP响应的格式相近，都有着如下结构：

以状态行+CRLF（回车换行）开始零行或多行头模块+CRLF一个空行，比如CRLF可选的消息体比如文件，查询数据，查询输出

举例来说，一个服务器响应头看起来就像下面这样：
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank ]]></description><category></category></item></channel></rss>