﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-illusionist-随笔分类-struts</title><link>http://www.blogjava.net/softwin/category/19404.html</link><description>快毕业了 :(  好好学习...天天向上
</description><language>zh-cn</language><lastBuildDate>Tue, 10 Apr 2007 00:46:51 GMT</lastBuildDate><pubDate>Tue, 10 Apr 2007 00:46:51 GMT</pubDate><ttl>60</ttl><item><title>Struts2入门教程－Hello World</title><link>http://www.blogjava.net/softwin/archive/2007/04/09/109494.html</link><dc:creator>伽蓝</dc:creator><author>伽蓝</author><pubDate>Mon, 09 Apr 2007 13:14:00 GMT</pubDate><guid>http://www.blogjava.net/softwin/archive/2007/04/09/109494.html</guid><wfw:comment>http://www.blogjava.net/softwin/comments/109494.html</wfw:comment><comments>http://www.blogjava.net/softwin/archive/2007/04/09/109494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softwin/comments/commentRss/109494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softwin/services/trackbacks/109494.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 当你向一个框架提交HTML表单的时候，输入的数据并不是被发送到一个服务端页面，而是传送到一个你自己提供的称为Action的java类，产生的结果会选择一个资源来绘制响应。该资源通常为一个服务端的页面，但也可以是一个pdf的文档，也可以是一个Excel电子数据表格，或者是Java applet窗口。<br>&nbsp;&nbsp;&nbsp; 假设你希望创建一个简单的&#8220;Hello World&#8221;例子来显示欢迎消息。下载struts2的空web应用（即struts2-blank-2.0.6.war），你需要做以下三件事：<br>1.创建一个服务页面来展示消息<br>2.创建一个Action类来创建消息<br>3.创建一个连接Action类和页面的映射<br>&nbsp;&nbsp;&nbsp; 让我们来看看这个Action，服务页面和映射的例子。如果你喜欢也可以使用IDE来编辑代码。<br><br>代码如下：<br>首先，定义一个服务页面显示数据<br>&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;<br>&lt;html&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;head&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;Hello World!&lt;/title&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/head&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h2&gt;&lt;s:property value="message" /&gt;&lt;/h2&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br>&lt;/html&gt;<br>其次，我们需要一个Action类来创建消息<br>package tutorial;<br>import com.opensymphony.xwork2.ActionSupport;<br>public class HelloWorld extends ActionSupport {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static final String MESSAGE = "Struts is up and running...";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private String message;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String execute() throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setMessage(MESSAGE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return SUCCESS;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setMessage(String message) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.message = message;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getMessage() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return message;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br>最后我们需要一个映射来绑定所有。<br>编辑struts.xml文件来添加HelloWorld映射<br>&lt;!DOCTYPE struts PUBLIC <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "<a href="http://struts.apache.org/dtds/struts-2.0.dtd">http://struts.apache.org/dtds/struts-2.0.dtd</a>"&gt;<br>&lt;struts&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;package name="tutorial" extends="struts-default"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action name="HelloWorld" class="tutorial.HelloWorld"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;result&gt;/HelloWorld.jsp&lt;/result&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/action&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/package&gt;<br>&lt;/struts&gt;<br>然后部署该应用程序，打开<a href="http://localhost:8080/tutorial/HelloWorld.action">http://localhost:8080/tutorial/HelloWorld.action</a>观察出现了什么，你会看见一个标题为Hello World！的页面并有一个&#8220;Struts is up and running&#8221;的消息。<br><br>代码是如何工作的：<br>1.容器接收到HelloWorld.action的请求。根据web.xml的设置，容器会寻找所有被发送到org.apache.struts2.dispatcher.FilterDispatcher的请求，包括所有的*.action的请求。FilterDispatcher是框架的入口点。<br>2.框架寻找一个映射名为HelloWorld的Action类。它找到与HelloWorld类相关的映射，并调用Action的execute方法。<br>3.execute方法设置了消息并返回SUCCESS。如果返回的是SUCCESS，框架会检查Action类映射的哪个页面将被装载。框架会告诉容器绘制HelloWorld.jsp作为请求的响应。<br>4.当HelloWorld.jsp被调用，&lt;s:property value="message" /&gt;标签调用HelloWorld的Action类的getter方法getMessage，并将message的值合并到响应中去。<br>5.一个纯粹的响应被发送回浏览器。<br><br>测试Actions类，代码如下<br>package tutorizl<br>import junit.framework.TestCase;<br>import com.opensymphony.xwork2.Action;<br>import com.opensymphony.xwork2.ActionSupport;<br><br>public class HelloWorldTest extends TestCase {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void testHelloWorld() throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorld hello_world = new HelloWorld();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String results = hello_world.execute();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assertTrue("Expected a success results!", ActionSupport.SUCCESS.equals(results));<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertTrue("Expected the default message!",HelloWorld.MESSAGE.equals(hello_world.getMessage()));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>需要记住的是:框架使用Action类来处理HTML表单和其他请求，Action类返回一个诸如SUCCESS,ERROR,或INPUT名称。根据来自struts.xml的映射，一个返回的名称会选择相应的页面，另外的Action，或其他web资源（图象，PDF）。<br>当一个服务端页面被绘制，大多情况下会包括由Action类提供的动态数据。框架会提供一系列的HTML标签创建页面来使得显示动态数据更加简单。</p>
<p><br>&nbsp;<br></p>
<img src ="http://www.blogjava.net/softwin/aggbug/109494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softwin/" target="_blank">伽蓝</a> 2007-04-09 21:14 <a href="http://www.blogjava.net/softwin/archive/2007/04/09/109494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再写一遍struts解决中文乱码问题</title><link>http://www.blogjava.net/softwin/archive/2006/09/24/71558.html</link><dc:creator>伽蓝</dc:creator><author>伽蓝</author><pubDate>Sun, 24 Sep 2006 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/softwin/archive/2006/09/24/71558.html</guid><wfw:comment>http://www.blogjava.net/softwin/comments/71558.html</wfw:comment><comments>http://www.blogjava.net/softwin/archive/2006/09/24/71558.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/softwin/comments/commentRss/71558.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softwin/services/trackbacks/71558.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Arial">在学习struts中,遇到了中文乱码问题,网上搜索了一些资料,解决了问题</font>
		</p>
		<p>
				<font face="Arial">使用get方法时:需要修改 $TOMCAT/conf/server.xml部署文件,在connectior属性中添加URIEncoding="GBK"即可</font>
		</p>
		<p>
				<font face="Arial">使用post方法时,有2种方法可选</font>
		</p>
		<p>
				<font face="Arial">1) 覆写ActionServlet的process方法,添加request.setEncoding("GBK");</font>
		</p>
		<p>
				<font face="Arial">2) 添加一个过滤器SetCharacterEncodingFilter类,此类可以在$TOMCAT\webapps\servlets-examples\WEB-INF\classes\filters找到,不过方便起见,自己加了点东西,源码如下:</font>
		</p>
		<p>
				<font face="Arial">public class SetCharacterEncodingFilter implements Filter {<br /> private FilterConfig filterConfig;</font>
		</p>
		<p>
				<font face="Arial"> public void destroy()<br /> {<br />  // TODO Auto-generated method stub<br />  <br /> }</font>
		</p>
		<p>
				<font face="Arial"> public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException<br /> {<br />  // TODO Auto-generated method stub<br />  try{<br />   request.setCharacterEncoding("GB2312");<br />   HttpServletResponse res = (HttpServletResponse)response;<br />   res.setHeader("Pragma", "No-cache");<br />   res.setHeader("Cache-Control", "no-cache");<br />   res.setHeader("Pragram", "no-cache");<br />   filterChain.doFilter(request, response);<br />  }catch(ServletException e)<br />  {<br />   filterConfig.getServletContext().log(e.getMessage());<br />  }catch(IOException e)<br />  {<br />   filterConfig.getServletContext().log(e.getMessage());<br />  }<br /> }</font>
		</p>
		<p>
				<font face="Arial"> public void init(FilterConfig filterConfig) throws ServletException<br /> {<br />  // TODO Auto-generated method stub<br />  this.filterConfig = filterConfig;<br /> }</font>
		</p>
		<p>
				<font face="Arial">}</font>
		</p>
		<p>
				<font face="Arial">在web.xml中部署这个过滤器</font>
		</p>
		<p>
				<font face="Arial">&lt;filter&gt;<br />    &lt;filter-name&gt;servfilter&lt;/filter-name&gt;<br />    &lt;filter-class&gt;com.yourcompany.struts.SetCharacterEncodingFilter&lt;/filter-class&gt;<br />  &lt;/filter&gt;<br />  &lt;filter-mapping&gt; <br />    &lt;filter-name&gt;servfilter&lt;/filter-name&gt;<br />    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />  &lt;/filter-mapping&gt;</font>
		</p>
		<p>
				<font face="Arial">
				</font> </p>
		<p>
				<font face="Arial">关于国际化问题,我曾经请教过老师,不过老师好像不是这个方向的</font>
		</p>
		<p>
				<font face="Arial">后来才发现是一个很愚蠢的问题,要求是ApplicationResources_zh_CN.properties或ApplicationResources_zh.properties 而我却用了ApplicationResources_cn.properties</font>
		</p>
		<p>
				<font face="Arial">切记CN是大写的</font>
		</p>
		<p>
				<font face="Arial">native2ascii -encoding gb2312 application_temp.properties  application_CN.properties</font>
		</p>
		<p>
				<font face="Arial">native2ascii可以在$JAVA_HOME/bin下找到</font>
		</p>
<img src ="http://www.blogjava.net/softwin/aggbug/71558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softwin/" target="_blank">伽蓝</a> 2006-09-24 13:30 <a href="http://www.blogjava.net/softwin/archive/2006/09/24/71558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>