首先我是个小白,如果写的不正确的希望大家指正.我的ide是intelliJ IDEA 2015;JAVA版本 1.70_79;tomcat 7.0.61
1、最新版本的struts2.5取消了xwork*.jar也就是在lib中你会发现该文件不再存在,原因是被合并入struts核心文件中,下面是说明(2.5的部分特性):
- XWork source was merged into Struts Core source, it means that there
be no more xwork artifact nor dedicated jar
- OGNL was upgraded to version 3.0.11 and it breaks access to
properties as it follows Java Bean Specification, see WW-4207 and
WW-3909
- Spring dependency for tests and spring plugin was upgraded to
version 4.1.6, see WW-4510.
- Struts2 internal logging api was marked as deprecated and was
replaced with new Log4j2 api as logging layer, see WW-4504.
- Struts2 is now build with JDK7, see WW-4503.
- New plugin to support bean validation is now part of the
distribution, see WW-4505.
- Deprecated plugins are now removed from the distribution and are not
longer supported anymore.
- - Dojo Plugin
- - Codebehind Plugin
- - JSF Plugin
- - Struts1 Plugin
2、首先最新的struts2.5.1下载下来的lib太多了。 如果把说有的都放入反而直接报错,应用都启动不了。下面我列出我使用的jar包:
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
commons-lang3-2.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
javassist-3.20.0-GA.jar
log4j-api-2.5.jar
log4j-core-2.5.jar
log4j-jcl-2.5.jar
ognl-3.1.8.jar
struts2-core-2.5.1.jar
3、上述文放入lib然后在设置Artifacts是需要把上述lib都同时打包发布到out war包中,否则编译总会提示找不着struts类
4、添加filter到web.xml中,其中filter class和以前版本的不同之处在于取消了ng包,直接如下:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>5、在WEB-INF/classes 下创建struts.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <!-- START SNIPPET: xworkSample --> <struts> <constant name="struts.i18n.encoding" value="utf-8"></constant> <package name="default" extends="struts-default"> <action name="login" class="com.wxt.app.action.LoginAction" method="execute"> <result name="success">/welcome.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>6、创建 com.wxt.app.action.LoginAction类,其中类中指实现了userName 和passWork两个属性,并实现getter setter,另增加了默认调用方法execute,代码如下:
package com.wxt.app.action; import com.opensymphony.xwork2.ActionSupport; /** * Created by wuxiutong on 16/6/27. */ public class LoginAction extends ActionSupport { private String userName; private String passWord; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public String execute() throws Exception{ if (getUserName().equals("1")&&getPassWord().equals("1")) { return "success"; } else return "error"; } }6、创建login.jsp,welcome.jsp以及error.jsp后两者是响应文件,前者是信息输入页面,登录成功后跳转至welcom.jsp否则跳转至error.jsp。响应配置依赖于struts.xml的action节点下result的设置,只需将execute执行返回结果字符创和result的name相同即可。
login.jsp的内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户登录</title> </head> <body> <form action="login"> <input type="text" name="userName"><br/> <input type="text" name="passWord"><br/> <input type="submit" name="submit" value="登录"><br/> </form> </body> </html>其中的action值‘login’对应到struts配置的action的name,表明提交后执行那个action。welcome.jsp和error.jsp body中则只写了“登录成功”和“登录失败”。
现在启动应用即可实现一个简单的struts2.5.1的登录案列。输入用户名:1 和密码:1即可跳转至welcome登录成功,否则跳转至error登录失败。