<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kaisir</title>
	<atom:link href="http://www.kaisir.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kaisir.com</link>
	<description>We read the world wrong and say that it deceives us.</description>
	<lastBuildDate>Mon, 06 Feb 2012 07:04:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>解决UBUNTU 虚拟机迁移过程中找不到网卡的故障</title>
		<link>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-3.html</link>
		<comments>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-3.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 07:03:49 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[分享心得]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[eth]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Vmware]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2088</guid>
		<description><![CDATA[这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下： 重启网络报：eth0:ERROR while getting interface flags: No such device 之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。 原因： 因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。 解决： 用root权限操作： updatedb locate *persistent-net.ruleslocate *persistent-net.rules 然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件 编辑它，把旧的网卡删掉，然后把新的网卡改为eth0 $ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″ 改为$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″ 重启系统后就ok。]]></description>
			<content:encoded><![CDATA[<p>这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下：</p>
<p>重启网络报：eth0:ERROR while getting interface flags: No such device
<p>之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。
<p>原因：
<p>因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。</p>
<p><span id="more-2088"></span>
<p>解决：
<p>用root权限操作：
<p>updatedb
<p>locate *persistent-net.ruleslocate *persistent-net.rules
<p>然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件
<p>编辑它，把旧的网卡删掉，然后把新的网卡改为eth0
<p>$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″
<p>改为<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″
<p>重启系统后就ok。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-3.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>解决UBUNTU 虚拟机迁移过程中找不到网卡的故障</title>
		<link>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-2.html</link>
		<comments>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-2.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 06:56:06 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[分享心得]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[eth]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Vmware]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2086</guid>
		<description><![CDATA[这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下： 重启网络报：eth0:ERROR while getting interface flags: No such device 之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。 原因： 因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。 解决： 用root权限操作： updatedb locate *persistent-net.ruleslocate *persistent-net.rules 然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件 编辑它，把旧的网卡删掉，然后把新的网卡改为eth0 $ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″ 改为$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″ 重启系统后就ok。]]></description>
			<content:encoded><![CDATA[<p>这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下：</p>
<p>重启网络报：eth0:ERROR while getting interface flags: No such device
<p>之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。
<p>原因：
<p>因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。</p>
<p><span id="more-2086"></span>
<p>解决：
<p>用root权限操作：
<p>updatedb
<p>locate *persistent-net.ruleslocate *persistent-net.rules
<p>然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件
<p>编辑它，把旧的网卡删掉，然后把新的网卡改为eth0
<p>$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″
<p>改为<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″
<p>重启系统后就ok。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决UBUNTU 虚拟机迁移过程中找不到网卡的故障</title>
		<link>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang.html</link>
		<comments>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 06:48:06 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[分享心得]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[eth]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Vmware]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2084</guid>
		<description><![CDATA[这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下： 重启网络报：eth0:ERROR while getting interface flags: No such device 之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。 原因： 因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。 解决： 用root权限操作： updatedb locate *persistent-net.ruleslocate *persistent-net.rules 然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件 编辑它，把旧的网卡删掉，然后把新的网卡改为eth0 $ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″ 改为$ PCI device 14xx:16xx (tg3)ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″ 重启系统后就ok。]]></description>
			<content:encoded><![CDATA[<p>这几天一直在忙着ESX下面的虚拟机的迁移，大部分都很顺利，ESX的HA特性决定了他几乎可以在不停机的情况下直接迁移主机跟存储~但是有一台Ubuntu的主机迁移过来之后却认不到网卡，从百度搜索了一下，在“懒人小G的微博”找到了解决方案，现粘贴记录如下：</p>
<p>重启网络报：eth0:ERROR while getting interface flags: No such device
<p>之前重启系统后网络没问题，后来因为做了虚拟机拷贝之后重启系统就找不到网卡了。
<p>原因：
<p>因为直接拷贝虚拟机后，启动系统时会问是copy还是move，选move没事。假如不是选move就会因为网卡mac地址不一样导致系统找不到。</p>
<p><span id="more-2084"></span>
<p>解决：
<p>用root权限操作：
<p>updatedb
<p>locate *persistent-net.ruleslocate *persistent-net.rules
<p>然后看返回结果，一般是“/etc/udev/rules.d/下的70-persistent-net.rules文件
<p>编辑它，把旧的网卡删掉，然后把新的网卡改为eth0
<p>$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth1″
<p>改为<br />$ PCI device 14xx:16xx (tg3)<br />ACTION==”add”, SUBSYSTEM==”net”, DRIVERS==”?*”, SYSFS{address}==”00:11:xx:xx:xx:xx”, NAME=”eth0″
<p>重启系统后就ok。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/02/jie-jue-ubuntu-xu-ni-ji-qian-yi-guo-cheng-zhong-zhao-bu-dao-wang-qia-di-gu-zhang.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Struts2学习笔记之（二）&#8212;&#8212;验证及国际化</title>
		<link>http://www.kaisir.com/2012/01/struts2-study-notes-of-the-two-validation-and-internationalization.html</link>
		<comments>http://www.kaisir.com/2012/01/struts2-study-notes-of-the-two-validation-and-internationalization.html#comments</comments>
		<pubDate>Sat, 21 Jan 2012 14:43:30 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[技术宅男]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Struts]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2079</guid>
		<description><![CDATA[昨天通过一个简单的实例程序完成了Struts2的基本功能，但是昨天的那个程序那是相当的丑陋哇，前台部分代码量多不说，还都没加验证，输入用户名密码的地方留空点提交他也木有提示直接验证了，哎，作为一个程序员，怎么能忍受这样滴代码呢？而且现在软件国际化趋势明显，你的程序仅仅支持简体中文出门你都不好意思跟别的程序员打招呼，要是支持上英语、法语、韩语、日语、阿拉伯语、土耳其语……￥#&#38;……*你瞧，倍儿有面子吧！ 好啦，依然废话不多说，我们用代码说话。我们将昨天的登录页（index.jsp）使用Struts2中的标签进行改写，改写后的结果如下： login.jsp 1: &#60;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&#62; 2: &#60;%@ taglib prefix="s" uri="/struts-tags" %&#62; 3:&#160; 4: &#60;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&#62; 5: &#60;html&#62; 6: &#60;head&#62; 7: &#60;title&#62;My JSP 'login.jsp' starting page&#60;/title&#62; 8: &#60;/head&#62; 9: 10: &#60;body&#62; 11: &#60;s:form action="Login"&#62; 12: &#60;s:textfield name="username" label="用户名"&#62;&#60;/s:textfield&#62; 13: &#60;s:textfield name="password" label="密码"&#62;&#60;/s:textfield&#62; 14: &#60;s:submit label="提交"&#62;&#60;/s:submit&#62; 15: &#60;/s:form&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>昨天通过一个简单的实例程序完成了Struts2的基本功能，但是昨天的那个程序那是相当的丑陋哇，前台部分代码量多不说，还都没加验证，输入用户名密码的地方留空点提交他也木有提示直接验证了，哎，作为一个程序员，怎么能忍受这样滴代码呢？而且现在软件国际化趋势明显，你的程序仅仅支持简体中文出门你都不好意思跟别的程序员打招呼，要是支持上英语、法语、韩语、日语、阿拉伯语、土耳其语……￥#&amp;……*你瞧，倍儿有面子吧！</p>
<p>好啦，依然废话不多说，我们用代码说话。我们将昨天的登录页（index.jsp）使用Struts2中的标签进行改写，改写后的结果如下：</p>
<p>login.jsp</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="background-color: #ffff00">&lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="background-color: #ffff00">&lt;%@ taglib prefix="s" uri="/struts-tags"  %&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">HTML</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">"-//W3C//DTD HTML 4.01 Transitional//EN"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span>My JSP 'login.jsp' starting page<span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>   <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>   </pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>       <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:form</span> <span style="color: #ff0000">action</span><span style="color: #0000ff">="Login"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>           <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:textfield</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="username"</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="用户名"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:textfield</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>           <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:textfield</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="密码"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:textfield</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>           <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:submit</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="提交"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:submit</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>       <span style="color: #0000ff">&lt;/</span><span style="color: #800000">s:form</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>   <span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>大家可以看出，无非就是引入了一个taglib，并将表单啊，文本域啊按钮啊全部改写成了Struts2中的标签，怎么样，是不是简洁了不少？嘿嘿，这里只体现出了标签的一个优势，接下来，我们给昨天的登录页增加一个验证功能——若用户输入为空，则给出错误提示，禁止用户提交。在Struts2中，我们有两种方法来实现这种功能，1）实现validate()方法 2）编写验证脚本(*-validation.xml)。要注意的是，无论使用哪种验证方法，我们都必须让我们编写的Action基础ActionSupport父类对象。不然验证会出错的哟~~</p>
<p>在这里，我们着重说下方法2，毕竟这是我们在实际项目中会常常用到的方法，而且因为其验证字符串写于配置文件中，想要修改验证规则的时候，仅仅需要修改配置文件中的规则即可。</p>
<p>LoginAction-validation.xml</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;?</span><span style="color: #800000">xml</span> <span style="color: #ff0000">version</span><span style="color: #0000ff">="1.0"</span> <span style="color: #ff0000">encoding</span><span style="color: #0000ff">="UTF-8"</span>?<span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">validators</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">"-//OpenSymphony Group//XWork Validator 1.0.2//EN"</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #0000ff">"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">validators</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">field</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="username"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">field-validator</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">="requiredstring"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">message</span> <span style="color: #ff0000">key</span><span style="color: #0000ff">="user.required"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">field-validator</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">field</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">field</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">field-validator</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">="requiredstring"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">message</span> <span style="color: #ff0000">key</span><span style="color: #0000ff">="password.required"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">field-validator</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">field</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">validators</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>怎么样，这个xml结构是不是非常清晰易懂？使用&lt;filed&gt;段标识我们需要进行验证的字段，使用&lt;filed-validator&gt;中的type字段指定我们需要进行何种验证，而&lt;message&gt;部分则定义了出错时如何显示信息。这里要注意的是，当你使用了Struts2中的验证器之后，你需要给Action增加一个input的映射，此映射应该指向我们最初提交动作发生的页面，如实例中的Login这个Action，我们需要将input指向我们的login.jsp页面。修改后的struts.xml文件如下：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;?</span><span style="color: #800000">xml</span> <span style="color: #ff0000">version</span><span style="color: #0000ff">="1.0"</span> <span style="color: #ff0000">encoding</span><span style="color: #0000ff">="UTF-8"</span>?<span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">struts</span> <span style="color: #ff0000">PUBLIC</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     <span style="color: #0000ff">"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     <span style="color: #0000ff">"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">package</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="struts2"</span> <span style="color: #ff0000">extends</span><span style="color: #0000ff">="struts-default"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">action</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="Login"</span> <span style="color: #ff0000">class</span><span style="color: #0000ff">="com.kaisir.www.struts2demo.LoginAction"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">result</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="success"</span><span style="color: #0000ff">&gt;</span>/welcome.jsp<span style="color: #0000ff">&lt;/</span><span style="color: #800000">result</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">result</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="error"</span><span style="color: #0000ff">&gt;</span>/error.jsp<span style="color: #0000ff">&lt;/</span><span style="color: #800000">result</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">result</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="input"</span><span style="color: #0000ff">&gt;</span>/login.jsp<span style="color: #0000ff">&lt;/</span><span style="color: #800000">result</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">action</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">package</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>此时我们部署项目，并进行测试，会发现若不填用户名、密码，则系统会给出相应的提示。</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">小贴士：当初实现验证的时候我以为不继承ActionSupport即可，但是发现不行，系统会报如下错误：“严重: Validation error for password:password.required”所以当你出现类似的错误时，应先检查是否忘记继承ActionSupport类。</pre>
<p></div>
<p>说完了验证部分，我们来侃侃国际化部分，Struts2中对国际化的支持几乎是自动的，他会自动的检索你浏览器的首选语言，并按照首选语言来读取相应的语言文件。不说废话，上代码。</p>
<p>首先我们需要完成语言文件，在这里我以中文（zh_CN）及英文(en_US)作为实例语言，其语言文件如下：</p>
<p>messageResource_zh_CN.properties:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">loginPage=\u767B\u5F55\u9875\u9762</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">errorPage=\u9519\u8BEF\u9875\u9762</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">successPage=\u767B\u5F55\u6210\u529F</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">failTip=\u5BF9\u4E0D\u8D77\uFF0C\u4F60\u4E0D\u80FD\u767B\u5F55\uFF01</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">successTip=\u6B22\u8FCE,{0},\u4F60\u5DF2\u6210\u529F\u767B\u5F55\u3002</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">user.required=\u7528\u6237\u540D\u5FC5\u586B</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">password.required=\u5BC6\u7801\u5FC5\u987B\u586B\u5199</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">username=\u7528\u6237\u540D</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">password=\u5BC6\u7801</pre>
<p><!--CRLF--></div>
</div>
<p>在这里，要注意的是，我使用了myeclipse编写配置文件，故他自动的将中文转义了，若是手动编写，需要手工调用native2ascii.exe文件来完成转义工作。</p>
<p>messageResource_en_US.properties</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">loginPage=LoginPage</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">errorPage=ErrorPage</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">successPage=SuccessPage</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">failTip=Sorry,You can't login in!</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">successTip=Welcome,{0},you has logged in！</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">user.required=Require Username!</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">password.required=Require Password\!</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">username=Username</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">password=Password</pre>
<p><!--CRLF--></div>
</div>
<p>光有语言文件还不够，我们还需要创建一个struts.properties文件来告诉Struts2我们有语言文件可用。</p>
<p>struts.properties</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">struts.custom.i18n.resources=messageResource</pre>
<p><!--CRLF--></div>
</div>
<p>最后剩下的就是改写我们的jsp文件，让他调用语言文件了，主要使用&lt;s:text name=””&gt;这个标签~</p>
<p>login.jsp</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="background-color: #ffff00">&lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="background-color: #ffff00">&lt;%@ taglib prefix="s" uri="/struts-tags"  %&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&nbsp;</pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">HTML</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">"-//W3C//DTD HTML 4.01 Transitional//EN"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">s:text</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="loginPage"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  </pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:form</span> <span style="color: #ff0000">action</span><span style="color: #0000ff">="Login"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:textfield</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="username"</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="%{getText('username')}"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:textfield</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:textfield</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="%{getText('password')}"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:textfield</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">s:submit</span> <span style="color: #ff0000">label</span><span style="color: #0000ff">="提交"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">s:submit</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">s:form</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>要注意的是，在这里Struts2中不允许标签的嵌套，所以想要在textfield标签中嵌套国际化支持的标签是不行了，但是我们可以变通一下，毕竟国际化的字符串就像全局的资源，故可以使用”%{getText(‘name’)}”这样的形式来调用国际化文件 ：）</p>
<p>Ok，部署到Web容器中，看看怎么样？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/01/struts2-study-notes-of-the-two-validation-and-internationalization.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Struts2 学习笔记之（一）&#8212;&#8212;Hello Struts2</title>
		<link>http://www.kaisir.com/2012/01/struts2-study-notes-of-a-hello-struts2.html</link>
		<comments>http://www.kaisir.com/2012/01/struts2-study-notes-of-a-hello-struts2.html#comments</comments>
		<pubDate>Fri, 20 Jan 2012 14:38:11 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[技术宅男]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Struts]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2073</guid>
		<description><![CDATA[之前自学了Struts1，感觉用起来很方便，而对于Struts2的学习更多的是“赶鸭子上架”型学习，被项目逼着仓促的学了些，现在终于等到放假，打算写一系列日志用以总结归纳，同时留作学习笔记。本次自学我使用的参考书籍为《Struts2权威指南》及《struts-2-in-action》，有兴趣的童鞋可以下载下来详细阅读。 Ok，废话不多说，我们开始。 Struts2虽然跟Struts1就差一个数字，但是这之间是没什么联系的哈，如果想不通的可以参照王凯&#38;王八，同样都是两个字，但是相差了一个字，这意思可就相差十万八千里咯~！Struts2更接近WebWork，是从WebWork扩展而来的。虽然这三个构架差别蛮大，但是他们都实现了共同的一个东西——MVC模型，具体的说应该是MVC2模型哈，详细的内容及区别大家可以参照我给出的参考书籍：） 想要配置Struts2非常简单， 这里我使用一个用户登录的例子来做演示。首先呢，我们需要一个让用户输入用户名密码的页面（index.jsp），以及一个登录成功的转入页(welcome.jsp)外加一个登录失败的提示页(error.jsp)。 index.jsp 1: &#60;%@page language="java" contentType="text/html; charset=UTF-8"%&#62; 2: &#60;html&#62; 3: &#60;head&#62; 4: &#60;title&#62;User Login&#60;/title&#62; 5: &#60;/head&#62; 6: &#60;body&#62; 7: &#60;form action="Login.action" method="post"&#62; 8: &#60;table&#62; 9: &#60;tr&#62; 10: &#60;td&#62;用户登录&#60;/td&#62; 11: &#60;/tr&#62; 12: &#60;tr&#62; 13: &#60;td&#62;用户名：&#60;/td&#62; 14: &#60;td&#62;&#60;input name="username" type="text"/&#62;&#60;/td&#62; 15: &#60;/tr&#62; 16: &#60;tr&#62; 17: &#60;td&#62;密码：&#60;/td&#62; 18: &#60;td&#62;&#60;input name="password" type=password /&#62;&#60;/td&#62; 19: &#60;/tr&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>之前自学了Struts1，感觉用起来很方便，而对于Struts2的学习更多的是“赶鸭子上架”型学习，被项目逼着仓促的学了些，现在终于等到放假，打算写一系列日志用以总结归纳，同时留作学习笔记。本次自学我使用的参考书籍为《Struts2权威指南》及《struts-2-in-action》，有兴趣的童鞋可以下载下来详细阅读。</p>
<p>Ok，废话不多说，我们开始。</p>
<p>Struts2虽然跟Struts1就差一个数字，但是这之间是没什么联系的哈，如果想不通的可以参照王凯&amp;王八，同样都是两个字，但是相差了一个字，这意思可就相差十万八千里咯~！Struts2更接近WebWork，是从WebWork扩展而来的。虽然这三个构架差别蛮大，但是他们都实现了共同的一个东西——MVC模型，具体的说应该是MVC2模型哈，详细的内容及区别大家可以参照我给出的参考书籍：）</p>
<p>想要配置Struts2非常简单， 这里我使用一个用户登录的例子来做演示。首先呢，我们需要一个让用户输入用户名密码的页面（index.jsp），以及一个登录成功的转入页(welcome.jsp)外加一个登录失败的提示页(error.jsp)。</p>
<p>index.jsp</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr;  font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> <span style="background-color: #ffff00;">&lt;%@page language="java" contentType="text/html; charset=UTF-8"%&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span>     <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span>User Login<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form</span> <span style="color: #ff0000;">action</span><span style="color: #0000ff;">="Login.action"</span> <span style="color: #ff0000;">method</span><span style="color: #0000ff;">="post"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span>     <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span>         <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>用户登录<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span>         <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span>         <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum13" style="color: #606060;"> 13:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>用户名：<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum14" style="color: #606060;"> 14:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">input</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="username"</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum15" style="color: #606060;"> 15:</span>         <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum16" style="color: #606060;"> 16:</span>         <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum17" style="color: #606060;"> 17:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>密码：<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum18" style="color: #606060;"> 18:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">input</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span> <span style="color: #ff0000;">type</span>=<span style="color: #ff0000;">password</span> <span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum19" style="color: #606060;"> 19:</span>         <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum20" style="color: #606060;"> 20:</span>         <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum21" style="color: #606060;"> 21:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">input</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span> <span style="color: #ff0000;">value</span><span style="color: #0000ff;">="登录"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum22" style="color: #606060;"> 22:</span>         <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum23" style="color: #606060;"> 23:</span>     <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum24" style="color: #606060;"> 24:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum25" style="color: #606060;"> 25:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum26" style="color: #606060;"> 26:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>做好了基础的页面之后，我们需要写一个action用以处理用户的请求，这个action就是一个非常普通的POJO对象，他甚至不需要继承任何父类，也不需要实现任何接口，这为我们的测试以及重用，提供了非常大的便利。</p>
<p>LoginAction.Java</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr;  font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> <span style="color: #0000ff;">package</span> com.kaisir.www.struts2demo;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> LoginAction {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span>     <span style="color: #0000ff;">private</span> String username;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span>     <span style="color: #0000ff;">private</span> String password;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span>     <span style="color: #0000ff;">public</span> String getUsername() {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span>         <span style="color: #0000ff;">return</span> username;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span>     }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setUsername(String username) {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span>         <span style="color: #0000ff;">this</span>.username = username;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span>     }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span>     <span style="color: #0000ff;">public</span> String getPassword() {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum13" style="color: #606060;"> 13:</span>         <span style="color: #0000ff;">return</span> password;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum14" style="color: #606060;"> 14:</span>     }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum15" style="color: #606060;"> 15:</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setPassword(String password) {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum16" style="color: #606060;"> 16:</span>         <span style="color: #0000ff;">this</span>.password = password;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum17" style="color: #606060;"> 17:</span>     }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum18" style="color: #606060;"> 18:</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum19" style="color: #606060;"> 19:</span>     <span style="color: #0000ff;">public</span> String execute() <span style="color: #0000ff;">throws</span> Exception{</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum20" style="color: #606060;"> 20:</span>         <span style="color: #0000ff;">if</span> (username.equals(<span style="color: #006080;">"Kaisir"</span>)&amp;&amp;password.equals(<span style="color: #006080;">"123456"</span>)) {</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum21" style="color: #606060;"> 21:</span>             <span style="color: #0000ff;">return</span> <span style="color: #006080;">"success"</span>;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum22" style="color: #606060;"> 22:</span>         }<span style="color: #0000ff;">else</span>{</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum23" style="color: #606060;"> 23:</span>             <span style="color: #0000ff;">return</span> <span style="color: #006080;">"error"</span>;</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum24" style="color: #606060;"> 24:</span>         }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum25" style="color: #606060;"> 25:</span>     }</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum26" style="color: #606060;"> 26:</span> }</pre>
</div>
</div>
<p>可以看出，我们的Action中有两个字段，分别对应我们index.jsp中的两个文本框username及password。提交页面之后，系统会自动的获取我们这两个字段的值，并使用set方法填入到对应的变量之中。这样，我们在JavaBean中便获得了用户表单中输入的内容。</p>
<p>完成了Action之后，我们需要编写一个struts.xml文件，让系统知道我们当前都有哪些Action可用，以及根据Action的执行结果可以跳转到哪些View中进行结果的显示。</p>
<p>struts.xml</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr;  font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> <span style="color: #0000ff;">&lt;?</span><span style="color: #800000;">xml</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">="UTF-8"</span>?<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span> <span style="color: #0000ff;">&lt;!</span><span style="color: #800000;">DOCTYPE</span> <span style="color: #ff0000;">struts</span> <span style="color: #ff0000;">PUBLIC</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span>     <span style="color: #0000ff;">"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span>     <span style="color: #0000ff;">"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span>     <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">package</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="struts2"</span> <span style="color: #ff0000;">extends</span><span style="color: #0000ff;">="struts-default"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span>         <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">action</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="Login"</span> <span style="color: #ff0000;">class</span><span style="color: #0000ff;">="com.kaisir.www.struts2demo.LoginAction"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">result</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="success"</span><span style="color: #0000ff;">&gt;</span>/welcome.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">result</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span>             <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">result</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="error"</span><span style="color: #0000ff;">&gt;</span>/error.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">result</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span>         <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">action</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span>     <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">package</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>在这个struts.xml文件中，我定义了一个action名为Login，他产生了两个输出跳转，一个跳转到了welcome.jsp，一个跳转到了error.jsp</p>
<p>最后，我们需要修改web.xml，以过滤器的形式加载Struts2。</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> <span style="color: #0000ff;">&lt;?</span><span style="color: #800000;">xml</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">="UTF-8"</span>?<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">web-app</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="3.0"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span>     <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://java.sun.com/xml/ns/javaee"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span>     <span style="color: #ff0000;">xmlns:xsi</span><span style="color: #0000ff;">="http://www.w3.org/2001/XMLSchema-instance"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span>     <span style="color: #ff0000;">xsi:schemaLocation</span><span style="color: #0000ff;">="http://java.sun.com/xml/ns/javaee </span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span>     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span>   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">display-name</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">display-name</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span>   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span>     <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">&gt;</span>index.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span>   <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span>   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span>       <span style="color: #008000;">&lt;!-- 定义核心Filter的名字 --&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum13" style="color: #606060;"> 13:</span>       <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span>Struts2<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum14" style="color: #606060;"> 14:</span>       <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum15" style="color: #606060;"> 15:</span>   <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum16" style="color: #606060;"> 16:</span>   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum17" style="color: #606060;"> 17:</span>       <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span>Struts2<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum18" style="color: #606060;"> 18:</span>       <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span>/*<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum19" style="color: #606060;"> 19:</span>   <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum20" style="color: #606060;"> 20:</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">web-app</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>要注意的是，在2.xx后期的版本中，这个过滤器的类已经变成了“org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter”如果还按照以前的过滤器来，当你部署到tomcat中时会出现莫名其妙的500错误。</p>
<p>当然，拷贝必要的类库也是必要的~我从Struts2自带的例子中提取了一份类库列表，应该是最简的列表了，即要实现最基本的Struts2必须引入下列jar包。</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr;  font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> lib目录下必须存在的包</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span> asm-3.3.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span> asm-commons-3.3.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span> asm-tree-3.3.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span> commons-fileupload-1.2.2.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span> commons-io-2.0.1.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span> commons-lang-2.5.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span> freemarker-2.3.18.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span> javassist-3.11.0.GA.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span> ognl-3.0.3.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span> struts2-core-2.3.1.jar</pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span> xwork-core-2.3.1.jar</pre>
</div>
</div>
<p>好了，至此，将项目部署到你的tomcat，输入用户名Kaisir,密码123456，看看有没有成功跳转到Welcome页面吧 ：）大家有任何问题欢迎与我交流，Webmaster#Kaisir.Com ，借用一句广告语“大家好，才是真的好！”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/01/struts2-study-notes-of-a-hello-struts2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>记一个很奇怪的火狐验证码问题（未解决）</title>
		<link>http://www.kaisir.com/2012/01/remember-a-very-strange-problems-firefox-verification-code-not-resolved.html</link>
		<comments>http://www.kaisir.com/2012/01/remember-a-very-strange-problems-firefox-verification-code-not-resolved.html#comments</comments>
		<pubDate>Sun, 15 Jan 2012 14:49:25 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[技术宅男]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[验证码]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2069</guid>
		<description><![CDATA[今天闲来无事打算封装一个Java的验证码类，实现基本功能很容易，可是测试的时候却发现了一个奇怪的问题，而且暂时还未找到答案。要想说清楚这个问题，首先给大家看一张图片，请大家注意图中标注1,2,3处的验证码。 问题描述： 我在java中写了一个servlet实现构造一个验证码，servlet负责返回java生成的一张图片（其实是jpeg的流），使用IE直接浏览这个生成地址正常，但是使用火狐浏览时却发现显示出来的验证码跟实际的验证码是不同的。后来我使用了firebug对访问情况进行跟踪，得到了上面的结果： 1处是用户看到的验证码；2处是当前实际的验证码；3处是系统生成的验证码。 这就好像火狐在请求完图像之后，又重新请求了一遍一样，但是使用FireBug却仅仅抓到了第二次请求。而且更奇怪的是，我将这个地址嵌入到&#60;img&#62;标签中，却又变得正常了，看到的跟实际请求的验证码又是相同的了。实在搞不清楚这是怎么回事了…… 后续打算： 打算使用WireShark抓包试试看，看看是不是发起了两次请求。这个问题暂时无解，欢迎大家广泛讨论。]]></description>
			<content:encoded><![CDATA[<p>今天闲来无事打算封装一个Java的验证码类，实现基本功能很容易，可是测试的时候却发现了一个奇怪的问题，而且暂时还未找到答案。要想说清楚这个问题，首先给大家看一张图片，请大家注意图中标注1,2,3处的验证码。</p>
<p><a href="http://photos.kaisir.com/2012/01/checkcode.png" rel="lightbox[2069]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="checkcode" border="0" alt="checkcode" src="http://photos.kaisir.com/2012/01/checkcode_thumb.png" width="694" height="658"></a> </p>
<p>问题描述：</p>
<p>我在java中写了一个servlet实现构造一个验证码，servlet负责返回java生成的一张图片（其实是jpeg的流），使用IE直接浏览这个生成地址正常，但是使用火狐浏览时却发现显示出来的验证码跟实际的验证码是不同的。后来我使用了firebug对访问情况进行跟踪，得到了上面的结果：</p>
<p>1处是用户看到的验证码；2处是当前实际的验证码；3处是系统生成的验证码。</p>
<p>这就好像火狐在请求完图像之后，又重新请求了一遍一样，但是使用FireBug却仅仅抓到了第二次请求。而且更奇怪的是，我将这个地址嵌入到&lt;img&gt;标签中，却又变得正常了，看到的跟实际请求的验证码又是相同的了。实在搞不清楚这是怎么回事了……</p>
<p>后续打算：</p>
<p>打算使用WireShark抓包试试看，看看是不是发起了两次请求。这个问题暂时无解，欢迎大家广泛讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/01/remember-a-very-strange-problems-firefox-verification-code-not-resolved.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>赞一下罗技鼠标的售后</title>
		<link>http://www.kaisir.com/2012/01/praise-logitech-mouse-sale.html</link>
		<comments>http://www.kaisir.com/2012/01/praise-logitech-mouse-sale.html#comments</comments>
		<pubDate>Wed, 04 Jan 2012 10:45:00 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[胡思乱想]]></category>
		<category><![CDATA[M305]]></category>
		<category><![CDATA[客服]]></category>
		<category><![CDATA[罗技]]></category>
		<category><![CDATA[青岛]]></category>
		<category><![CDATA[鼠标]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2065</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160; 去年入的罗技M305鼠标右键一点反应都没有了，本来打算回家的时候再淘一个无线鼠，可是一个偶然查到罗技青岛客服服务态度很不错，又顺便查了下M305竟然是三年保，那好吧，带着坏的小M雄赳赳气昂昂的去了辽宁路上的罗技客服，客服非常小，就俩客服人员，去了给他一说我鼠标右键不管用了，其中一个客服拿过去一看却是右键不管用了，就让我填表，之后又给我拿了一个新的M305，还告知我之前那个颜色没有了，给我个灰的行不行，反正能用就行啊，嘿嘿，之后客服不停的电脑上输入什么，打了几个标签，贴到我原来的鼠标上，之后给了我新的鼠标，仔细看了下，新的M305已经全线支持U联了，嘿嘿~~此外一看维修单据上的截保日期，2013-12-16，哈哈哈，看来这鼠标我还能折腾很久哈… &#160;&#160;&#160;&#160;&#160; 虽然我非常看重商品的性价比，所以格外喜欢水货，不过你瞧，行货虽然贵点，但是这个客服确实还蛮给力的哈！罗技，赞一个！]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos.kaisir.com/2012/01/DSC_0016.jpg" rel="lightbox[2065]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0016" border="0" alt="DSC_0016" src="http://photos.kaisir.com/2012/01/DSC_0016_thumb.jpg" width="1055" height="784"></a> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 去年入的罗技M305鼠标右键一点反应都没有了，本来打算回家的时候再淘一个无线鼠，可是一个偶然查到罗技青岛客服服务态度很不错，又顺便查了下M305竟然是三年保，那好吧，带着坏的小M雄赳赳气昂昂的去了辽宁路上的罗技客服，客服非常小，就俩客服人员，去了给他一说我鼠标右键不管用了，其中一个客服拿过去一看却是右键不管用了，就让我填表，之后又给我拿了一个新的M305，还告知我之前那个颜色没有了，给我个灰的行不行，反正能用就行啊，嘿嘿，之后客服不停的电脑上输入什么，打了几个标签，贴到我原来的鼠标上，之后给了我新的鼠标，仔细看了下，新的M305已经全线支持U联了，嘿嘿~~此外一看维修单据上的截保日期，2013-12-16，哈哈哈，看来这鼠标我还能折腾很久哈…</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然我非常看重商品的性价比，所以格外喜欢水货，不过你瞧，行货虽然贵点，但是这个客服确实还蛮给力的哈！罗技，赞一个！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2012/01/praise-logitech-mouse-sale.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再见，2011！</title>
		<link>http://www.kaisir.com/2011/12/good-bye-2011.html</link>
		<comments>http://www.kaisir.com/2011/12/good-bye-2011.html#comments</comments>
		<pubDate>Sat, 31 Dec 2011 15:06:21 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[胡思乱想]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/?p=2059</guid>
		<description><![CDATA[记得高中作文常常使用“光阴似箭，日月如梭”，现在想想说的一点也不夸张，转眼2011年又在我眼皮子底下悄然溜走了。如果非要用一个词来对这一年做一个总结的话，那一定是——成长。 开始明白所谓的“成长”不单单是年龄上的简单加一，更多的是自己思考问题的方式也在发生着悄然的变化。考虑问题越来越细致，处理问题越来越理智，做事情也开始慢慢学会依照计划。有很多曾经不知如何处理的难题在自己面前也变得淡然。有时候我都开始觉得自己冷静的过了头，不过想想也没有什么值得紧张的：该发生的事情早晚会发生，纵使你使劲浑身解数也难以改变结果；而不会发生的事情纵然也不会发生，即使你努力去改变事情发展的方向，倒最后它可能只是绕了个弯然后又回去了。与其做了决定再后悔，不如冷静观望，再做决定。 很开心今年没做什么令我感到后悔的决定，我开始觉得我能掌握自己的前进方向，而不像之前那样毫无头绪的任其自由发展。说起方向，或许之前也有，不过还没有成型，而现在却逐渐清晰起来，我很清楚的知道自己想要什么。这几天我还在想我们做的每一个选择是不是都会改变我们人生的轨迹，让我们朝着不同的方向各自前行，如果我当初做了其他的选择，我还会是现在的样子么？ 说到了选择不得不说说我最近做的一个选择，与工作相关的选择：我决定离开东软而去南京的一家小公司，很多人都不理解我为什么这么做，理由很简单，对于我的第一份工作，我想要一份我喜欢的工作，我不在乎公司的规模，甚至不在于待遇，关键是我喜欢。去东软虽然能留在济南，但是所涉及的行业是我不熟悉的医疗，而开发语言也是我已经跳出多年的.Net，此外在济南办事处我所从事的职位是现场实施。我很清楚我不会喜欢出差的工作，那种从现场根据用户需求而做二次开发显然不是我的强项。经过深刻考虑，我决定去南京的那家公司，从事通讯相关行业，开发语言为我喜欢的Java，此外从事的职位是Java研发。哈哈，瞧，我要的就是这么简单，感兴趣的行业，喜欢的开发语言，自认为有前景的职位，仅此而已。 说到喜欢，最近我又多了一个新的爱好——摄影。哈哈，总觉得每天都呆在电脑前面，还是需要点爱好能让我出去走走。至少让我全是代码的脑袋里多了一点点色彩 ：） 时间总是不停的流逝，我们没有办法回头去改变什么，但是未来却在我们手中，很多时候不能回头，它会磨掉你向前的锐气，可有些时候，我们也要回头看看走过的路，总结下经验，不至于重蹈覆辙。 再见2011！ 你好2012！]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos.kaisir.com/2011/12/DSC_0066.jpg" rel="lightbox[2059]"><img style="display: inline; border: 0px;" title="DSC_0066" src="http://photos.kaisir.com/2011/12/DSC_0066_thumb.jpg" alt="DSC_0066" width="1055" height="784" border="0" /></a></p>
<p>记得高中作文常常使用“光阴似箭，日月如梭”，现在想想说的一点也不夸张，转眼2011年又在我眼皮子底下悄然溜走了。如果非要用一个词来对这一年做一个总结的话，那一定是——成长。</p>
<p>开始明白所谓的“成长”不单单是年龄上的简单加一，更多的是自己思考问题的方式也在发生着悄然的变化。考虑问题越来越细致，处理问题越来越理智，做事情也开始慢慢学会依照计划。有很多曾经不知如何处理的难题在自己面前也变得淡然。有时候我都开始觉得自己冷静的过了头，不过想想也没有什么值得紧张的：该发生的事情早晚会发生，纵使你使劲浑身解数也难以改变结果；而不会发生的事情纵然也不会发生，即使你努力去改变事情发展的方向，倒最后它可能只是绕了个弯然后又回去了。与其做了决定再后悔，不如冷静观望，再做决定。</p>
<p>很开心今年没做什么令我感到后悔的决定，我开始觉得我能掌握自己的前进方向，而不像之前那样毫无头绪的任其自由发展。说起方向，或许之前也有，不过还没有成型，而现在却逐渐清晰起来，我很清楚的知道自己想要什么。这几天我还在想我们做的每一个选择是不是都会改变我们人生的轨迹，让我们朝着不同的方向各自前行，如果我当初做了其他的选择，我还会是现在的样子么？</p>
<p>说到了选择不得不说说我最近做的一个选择，与工作相关的选择：我决定离开东软而去南京的一家小公司，很多人都不理解我为什么这么做，理由很简单，对于我的第一份工作，我想要一份我喜欢的工作，我不在乎公司的规模，甚至不在于待遇，关键是我喜欢。去东软虽然能留在济南，但是所涉及的行业是我不熟悉的医疗，而开发语言也是我已经跳出多年的.Net，此外在济南办事处我所从事的职位是现场实施。我很清楚我不会喜欢出差的工作，那种从现场根据用户需求而做二次开发显然不是我的强项。经过深刻考虑，我决定去南京的那家公司，从事通讯相关行业，开发语言为我喜欢的Java，此外从事的职位是Java研发。哈哈，瞧，我要的就是这么简单，感兴趣的行业，喜欢的开发语言，自认为有前景的职位，仅此而已。</p>
<p><a href="http://photos.kaisir.com/2011/12/DSC_0105.jpg" rel="lightbox[2059]"><img style="display: inline; border: 0px;" title="DSC_0105" src="http://photos.kaisir.com/2011/12/DSC_0105_thumb.jpg" alt="DSC_0105" width="1055" height="784" border="0" /></a></p>
<p>说到喜欢，最近我又多了一个新的爱好——摄影。哈哈，总觉得每天都呆在电脑前面，还是需要点爱好能让我出去走走。至少让我全是代码的脑袋里多了一点点色彩 ：）</p>
<p>时间总是不停的流逝，我们没有办法回头去改变什么，但是未来却在我们手中，很多时候不能回头，它会磨掉你向前的锐气，可有些时候，我们也要回头看看走过的路，总结下经验，不至于重蹈覆辙。</p>
<p>再见2011！</p>
<p>你好2012！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2011/12/good-bye-2011.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>WT19i不解锁不丢DRM不丢TrackID刷入Recovery!</title>
		<link>http://www.kaisir.com/2011/11/wt19i-not-unlock-drm-does-not-lose-lose-trackid-brush-into-the-recovery.html</link>
		<comments>http://www.kaisir.com/2011/11/wt19i-not-unlock-drm-does-not-lose-lose-trackid-brush-into-the-recovery.html#comments</comments>
		<pubDate>Sun, 20 Nov 2011 14:08:44 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[技术宅男]]></category>
		<category><![CDATA[DRM]]></category>
		<category><![CDATA[Recovery]]></category>
		<category><![CDATA[TrackID]]></category>
		<category><![CDATA[不丢DRM]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/2011/11/wt19i-not-unlock-drm-does-not-lose-lose-trackid-brush-into-the-recovery.html</guid>
		<description><![CDATA[这几天一直在纠结要不要刷Recovery，刷入这个东西吧，以后刷机啊做镜像啊都很方便，可是呢常规刷入Recovery需要解锁，而解锁就会抹掉系统内自带的DRM信息，从而造成TrackID无法使用。说实话这一段时间试用下来，Kaisir觉得这个TrackID还是蛮好用的，尤其是在收听收音机的时候，遇到一首你不知道是什么的歌曲，轻触一下右下角的图标，嘿，系统就能自动的录制一小段音频然后联网查询就能告诉你你听的是啥歌，识别的成功率可以说是接近100%的，所以说很不想失去这个功能。 功夫不负有心人啊，今天终于让我从XDA论坛找到一个小程序，可以在WT19i上不解锁刷入Recovery，还可以给WT19i安装Java运行环境，还可以开启索爱特有的MB音效（这个我没成功），开启Bravia Engine（我也没看出变化:( ）但是这个不解锁刷Recovery就足够我兴奋的啦！ 软件默认的说明语言为越南话，但是软件很简单，应该一看就会用了，当然，在这里我还是要简单说一下使用方法： 1）手机中的ROM必须是原厂ROM，且必须ROOT 2）要求手机中安装有BusyBox （不知道如何安装的可以参看我之前写的日志 传送门:在Sony Ericsson WT19i 上安装BusyBox） 3）在手机设置菜单&#8211;应用程序中将“未知来源”打上勾，同时在“开发”项中将“USB调试”打上勾。 4）手机通过USB连接电脑，电脑端运行“SE_Extreme_Tweak_Installer.exe”（要求系统中必须安装.Net framework 3.5） 5）之后选择需要进行的操作，然后点击“Install” 6）Done! 点此下载SE_Extreme_Tweak_Installer.zip]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos.kaisir.com/2011/11/seet.jpg" rel="lightbox[2043]"><img style="display: inline; border-width: 0px;" title="seet" src="http://photos.kaisir.com/2011/11/seet_thumb.jpg" alt="seet" width="1001" height="772" border="0" /></a></p>
<p>这几天一直在纠结要不要刷Recovery，刷入这个东西吧，以后刷机啊做镜像啊都很方便，可是呢常规刷入Recovery需要解锁，而解锁就会抹掉系统内自带的DRM信息，从而造成TrackID无法使用。说实话这一段时间试用下来，Kaisir觉得这个TrackID还是蛮好用的，尤其是在收听收音机的时候，遇到一首你不知道是什么的歌曲，轻触一下右下角的图标，嘿，系统就能自动的录制一小段音频然后联网查询就能告诉你你听的是啥歌，识别的成功率可以说是接近100%的，所以说很不想失去这个功能。</p>
<p>功夫不负有心人啊，今天终于让我从<a href="http://forum.xda-developers.com/showthread.php?t=1346190" target="_blank">XDA论坛</a>找到一个小程序，可以在WT19i上不解锁刷入Recovery，还可以给WT19i安装Java运行环境，还可以开启索爱特有的MB音效（这个我没成功），开启Bravia Engine（我也没看出变化:( ）但是这个不解锁刷Recovery就足够我兴奋的啦！</p>
<p>软件默认的说明语言为越南话，但是软件很简单，应该一看就会用了，当然，在这里我还是要简单说一下使用方法：</p>
<p>1）手机中的ROM必须是原厂ROM，且必须ROOT<br />
2）要求手机中安装有BusyBox （不知道如何安装的可以参看我之前写的日志 <a href="http://www.kaisir.com/2011/11/installed-on-the-sony-ericsson-wt19i-busybox.html" target="_blank">传送门:在Sony Ericsson WT19i 上安装BusyBox</a>）<br />
3）在手机设置菜单&#8211;应用程序中将“未知来源”打上勾，同时在“开发”项中将“USB调试”打上勾。<br />
4）手机通过USB连接电脑，电脑端运行“SE_Extreme_Tweak_Installer.exe”（要求系统中必须安装.Net framework 3.5）<br />
5）之后选择需要进行的操作，然后点击“Install”<br />
6）Done!</p>
<div id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:ee43985c-3236-4d99-802e-e28d50c44af9" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div>点此下载<a href="http://photos.kaisir.com/2011/11/SE_Extreme_Tweak_Installer.zip" target="_blank">SE_Extreme_Tweak_Installer.zip</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2011/11/wt19i-not-unlock-drm-does-not-lose-lose-trackid-brush-into-the-recovery.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>向MySql数据库导入数据的方法</title>
		<link>http://www.kaisir.com/2011/11/import-data-to-mysql-database-approach.html</link>
		<comments>http://www.kaisir.com/2011/11/import-data-to-mysql-database-approach.html#comments</comments>
		<pubDate>Thu, 10 Nov 2011 11:32:41 +0000</pubDate>
		<dc:creator>Kaisir</dc:creator>
				<category><![CDATA[技术宅男]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[导入]]></category>

		<guid isPermaLink="false">http://www.kaisir.com/2011/11/import-data-to-mysql-database-approach.html</guid>
		<description><![CDATA[之前w童鞋编写了一套计算机等级考试成绩查询系统部署在了服务器上，可是貌似系统做的很简单，JavaBean+MySql构成了整套查询的主体，同时也没有提供数据导入功能，这不今天又过来一批通过二级的人员名单，是使用Excel表格的形式发过来的，没办法只能直接操作数据库进行导入了。 由于系统不是我开发的，而且没有开发文档，此外数据库的链接字符串也都是写死在程序中了，故我只好在服务器上直接使用MySql Commond Line来进行操作，Win+R 运行，Cmd 回车之后我们输入： mysql –u root –p 回车之后提示输入密码，密码验证之后，我们得到了MySql的命令提示符，接下来如何确定用的哪个数据库呢？好在这台服务器跑的业务很单一，使用以下命令就能得到所有数据库列表了： show databases; 从列表中查阅可知，只有哪个cjcx看起来最像 ：） 于是我们执行： use cjcx; Ok，系统提示我们数据库切换成功，那他有哪些表呢？我们接着执行： show tables; 返回的结果让我大跌眼镜，只有一个表，且表名为“a”（大家不要学此童鞋，数据库及表的命名一定要规范，尽量见名知意，且尽量使用英文避免中午的歧义）好吧，知道了表名还没有用，我们还需要知道表的定义，接着执行： describe a; 好的，回显的提示让我们知道了表的数据，虽然都是汉语拼音缩写，但是差不多能猜出意思，把我手里拿到的Excel按照这个字段的排列进行排序，之后选择“另存为——文本文件（制表符分隔）”好的，这样我们就得到了一个以“\t”分隔的文本文件，每行为一条记录，接下来我们需要把这个文件导入，执行： load data local infile &#8216;文件路径&#8217; into table 表名; 一会系统会给出导入信息，如果此时导入的条数与你Excel中去掉表头的数据条数一致，那么恭喜你，数据导入成功 ：）]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos.kaisir.com/2011/11/09310623620.jpg" rel="lightbox[2035]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="0931062362-0" border="0" alt="0931062362-0" src="http://photos.kaisir.com/2011/11/09310623620_thumb.jpg" width="804" height="604"></a> </p>
<p>之前w童鞋编写了一套计算机等级考试成绩查询系统部署在了服务器上，可是貌似系统做的很简单，JavaBean+MySql构成了整套查询的主体，同时也没有提供数据导入功能，这不今天又过来一批通过二级的人员名单，是使用Excel表格的形式发过来的，没办法只能直接操作数据库进行导入了。</p>
<p>由于系统不是我开发的，而且没有开发文档，此外数据库的链接字符串也都是写死在程序中了，故我只好在服务器上直接使用MySql Commond Line来进行操作，Win+R 运行，Cmd 回车之后我们输入：</p>
<p>mysql –u root –p </p>
<p>回车之后提示输入密码，密码验证之后，我们得到了MySql的命令提示符，接下来如何确定用的哪个数据库呢？好在这台服务器跑的业务很单一，使用以下命令就能得到所有数据库列表了：</p>
<p>show databases;</p>
<p>从列表中查阅可知，只有哪个cjcx看起来最像 ：） 于是我们执行：</p>
<p>use cjcx;</p>
<p>Ok，系统提示我们数据库切换成功，那他有哪些表呢？我们接着执行：</p>
<p>show tables;</p>
<p>返回的结果让我大跌眼镜，只有一个表，且表名为“a”（大家不要学此童鞋，数据库及表的命名一定要规范，尽量见名知意，且尽量使用英文避免中午的歧义）好吧，知道了表名还没有用，我们还需要知道表的定义，接着执行：</p>
<p>describe a;</p>
<p>好的，回显的提示让我们知道了表的数据，虽然都是汉语拼音缩写，但是差不多能猜出意思，把我手里拿到的Excel按照这个字段的排列进行排序，之后选择“另存为——文本文件（制表符分隔）”好的，这样我们就得到了一个以“\t”分隔的文本文件，每行为一条记录，接下来我们需要把这个文件导入，执行：</p>
<p>load data local infile &#8216;文件路径&#8217; into table 表名;</p>
<p>一会系统会给出导入信息，如果此时导入的条数与你Excel中去掉表头的数据条数一致，那么恭喜你，数据导入成功 ：）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kaisir.com/2011/11/import-data-to-mysql-database-approach.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

