SSH整合系列1--配置Struts2.1.8.1,并测试第一个action
系统平台:
Struts:2.1.8.1
Spring:3.0.3
Hibernate:3.5.2
tomcat:6.0.26
MyEclipse:7.5
Ⅰ.配置Struts2.1.8.1:
1.下载最新的Struts2.1.8.1
2.建立web工程wdpweb
3.引入必须包
4.在web.xml中配置FilterDispatcher过滤器
5.配置struts.xml
1.下载最新的Struts2.1.8.1
Struts作为Apache的一个项目,当然是去Apache的官网下载。这里提到一本书,是官网推荐的《Stating Struts2》,并有中文版下载《深入浅出Struts2》,可以在Struts2首页面的Documentation栏目进行下载(下载前需要注册),对于学习和使用Struts2非常有帮助。
2.建立web工程wdpweb
3.引入必须包
将Struts2.1.8.1中lib文件夹下的六个jar包:
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
ongl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
拷贝到web工程中的/WEB-INF/lib目录中。
说明:在以前,一般只需要后五个jar包,但是在2.1.8.1版本中,如果没有commons-fileupload-1.2.1.jar,tomcat启动会报如下错误:
2010-3-10 16:28:31 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error严重: Dispatcher initialization failedUnable to load configuration. - bean - jar:file:/D:/apache-tomcat-5.5.27/apache-tomcat-5.5.27/webapps/wdpweb/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178……Caused by: Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest - bean - jar:file:/D:/apache-tomcat-5.5.27/apache-tomcat-5.5.27/webapps/wdpweb/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178……Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext……Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext……2010-3-10 16:28:31 org.apache.catalina.core.StandardContext filterStart严重: Exception starting filter Struts2Unable to load configuration. - bean - jar:file:/D:/apache-tomcat-5.5.27/apache-tomcat-5.5.27/webapps/wdpweb/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178……Caused by: Unable to load configuration. - bean - jar:file:/D:/apache-tomcat-5.5.27/apache-tomcat-5.5.27/webapps/wdpweb/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178……Caused by: Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest - bean - jar:file:/D:/apache-tomcat-5.5.27/apache-tomcat-5.5.27/webapps/wdpweb/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:47:178……Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext……Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext……2010-3-10 16:28:31 org.apache.catalina.core.StandardContext start严重: Error filterStart2010-3-10 16:28:31 org.apache.catalina.core.StandardContext start严重: Context [/wdpweb] startup failed due to previous errors
<filter><!-- filter-name可以自定义,但是要保证与下面filter-mapping中的filter-name一致 --><!-- 这样才保证了filter和filter-mapping的一一对应 --><filter-name>Struts2</filter-name><!-- 这个核心拦截器FilterDispatcher可以在struts2-core包中轻松找到 --><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>Struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- FilterDispatcher -->
<!-- DTD:文档类型定义(Document Type Definition) --><!-- XML的文档类型定义。提供了XML文件中各个元素所使用结构信息 --><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<!-- name:package的唯一标示,自定义;extends:指明本package所继承的包,一般继承struts-default.xml;namespace:命名空间提供了从URL到Package的映射 --><package name="Struts2" extends="struts-default" namespace="/"><!-- action --></package>
<!-- hello action --><action name="helloworld" name="code"><%@ taglib prefix="s" uri="/struts-tags"%>
<body> Hello World! This is the first JSP page!<br> <br/> <s:property value="message"/> </body>
package com.hust.wdp.helloworld;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport {/** * */private static final long serialVersionUID = 5351576682976847552L;private String message = "Hello World! Struts2 is taking function!";@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubthis.setMessage(message);return SUCCESS;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}