原文地址:http://www.blogjava.net/hawk8359/archive/2008/01/11/174319.html (作者J2ee-zero)
Struts2.0属于Web框架,MVC 2模型,其实和以前的Struts1.x没有什么关系,新手可以不用去学。
因为Struts2.0是Webwork2.2演变而来。
第一步:创建Web工程
要使用Struts2.0先要去下载包
http://people.apache.org/builds/struts/2.0.10/struts-2.0.10-lib.zip
打开struts-2.0.10-lib.zip\struts-2.0.10\lib
把里面commons-logging-1.0.4.jar;freemarker-2.3.8.jar;ognl-2.6.11.jar;struts2-core-2.0.11.jar;xwork-2.0.4.jar五个包解压出来,拷贝到你的Web工程的WebContent/WEB-INF/lib下
第二步:配置web.xml文件
<
filter
>
<
filter-name
>
struts
</
filter-name
>
<
filter-class
>
org.apache.struts2.dispatcher.FilterDispatcher
</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
struts
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
以上配置添加到<web-app></web-app>里
但是我们有时会用到中文,所以我们要重写FilterDispatcher(过滤器)
在src目录下创建com.filter包,在包中建立NewFilter类,继承FilterDispatcher ,代码如下:
package
filter;
import
org.apache.struts2.dispatcher.FilterDispatcher;
import
java.io.IOException;
import
javax.servlet.FilterChain;
import
javax.servlet.FilterConfig;
import
javax.servlet.ServletException;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
public
class
NewFilter
extends
FilterDispatcher
{
private static String encoding = "GB2312";
public void init(FilterConfig filterConfig) throws ServletException {
super.init(filterConfig);
String encodingParam = filterConfig.getInitParameter("encoding");
if (encodingParam != null && encodingParam.trim().length() != 0) {
encoding = encodingParam;
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
super.doFilter(request, response, chain);
}
}
但是这样改写后发现没效果,其实是web.xml里的配置没有调用而已,所以web.xml的配置要改成:
<
filter
>
<
filter-name
>
struts2
</
filter-name
>
<
filter-class
>
com.filter.NewFilter
</
filter-class
>
<
init-param
>
<
param-name
>
encoding
</
param-name
>
<
param-value
>
GB2312
</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
struts2
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
不难发现,NewFilter.java里的 private static String encoding = "GB2312";
和web.xml里的<param-name>encoding</param-name><param-value>GB2312</param-value>
其实String encodingParam = filterConfig.getInitParameter("encoding");
就是从web.xml中读出参数名为encoding的值,然后赋给子类中的encoding成员
所以,以后需要改变编码方式只需在web.xml中改 <param-value>的值
第三步:配置struts.xml
在src里新建一个struts.xml文件
<!
DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
<
struts
>
<
include
file
="struts-default.xml"
/>
<
package
name
="com"
extends
="struts-default"
>
<
action
name
="hello"
class
="com.HelloWorld"
>
<
result
>
Hello.jsp
</
result
>
</
action
>
</
package
>
</
struts
>
添加到struts.xml里
在src下新建struts.properties添加如下配置:
struts.locale=zh_CN
struts.i18n.encoding=GB2312
这样struts就能识别中文了
第四步:新建JavaBean
在src.com下新建HelloWorld.java,代码如下:
package
com;
import
com.opensymphony.xwork2.ActionSupport;
public
class
HelloWorld
extends
ActionSupport
{
private static final long serialVersionUID = 1L;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute() {
System.out.println("Executing action, your message is " + message);
return SUCCESS;
}
}
第五步:新建jsp页面
在WebContent下新建HelloWorld.jsp,代码如下:
<%
@ page contentType="text/html; charset=GB2312"
%>
<%
@ taglib prefix="s" uri="/struts-tags"
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
title
>
HelloWorld
</
title
>
<
s:head
/>
</
head
>
<
body
>
<
s:actionerror
/>
<
s:form
action
="hello"
>
<
s:textfield
label
="Name"
name
="message"
tooltip
="Enter your Name here"
/>
<
s:submit
/>
</
s:form
>
</
body
>
</
html
>
在WebContent下新建Hello.jsp,代码如下:
<%
@ page contentType="text/html; charset=GB2312"
%>
<%
@ taglib prefix="s" uri="/struts-tags"
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
title
>
HelloWorld
</
title
>
<
s:head
/>
</
head
>
<
body
>
<
h1
><
s:property
value
="message"
/></
h1
>
</
body
>
</
html
>
以上工作完成可以把web工程打包,发布到tomcat或其他web服务器
在地址栏输入:http://localhost:8080/你的web工程名称/HelloWorld.jsp
在输入框输入信息点击submit提交,会在Hello.jsp上显示出你刚才输入的信息
总结:
上面的例子简单地演示了,Web 应用程序的基本操作。第一,配置并不复杂;第二,action提交方式的改变,直接在struts.xml里配置,而不再像1.x里使用
request.forwardmapping(
""
);
来提交;第三,struts2的标签库用起来更简单。