一、导入相应的jar包:
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
freemarker-2.3.16.jar
javassist-3.11.0.GA.jar
ognl-3.0.1.jar
struts2-core-2.2.3.jar
xwork-core-2.2.3.jar
二、在web.xml配置核心控制器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、编写业务逻辑和业务控制器
public class Action implements com.opensymphony.xwork2.Action {
private double num1;
private double num2;
private double result;
//getter setter
public String execute() throws Exception {
CalBiz calBiz=new CalBiz();
result=calBiz.add(num1, num2);
return "success";
}
}
四、在src下编写struts.xml文件
配置文件有提示:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
配置文件带有提示步骤:
window-->preferences-->xml(文本框里面输入)-->xml catalog-->add
<package name="struts_1" extends="struts-default">
<action name="add" class="com.sut.action.AddAction">
<result name="success">/success.jsp</result>
</action>
<action name="plus" class="com.sut.action.PlusAction">
<result name="success">/success.jsp</result>
</action>
<action name="mul" class="com.sut.action.MulAction">
<result name="success">/success.jsp</result>
</action>
<action name="div" class="com.sut.action.DivAction">
<result name="success">/success.jsp</result>
</action>
</package>
五、编写jsp文件
index.jsp
<html>
<head>
<script type="text/javascript">
function execute(id){
var num1=document.getElementById("num1").value;
var num2=document.getElementById("num2").value;
if(num1=='' || num2==''){
alert("文本框一、二不能为空");
return false;
}
if(id=='+'){
document.my.action='add.action';
}else if(id=='-'){
document.my.action='plus.action';
}else if(id=='*'){
document.my.action='mul.action';
}else{
document.my.action='div.action';
}
document.my.submit();
}
</script>
</head>
<body>
<h3>简单计算器</h3>
<form action="" method="post" name="my">
数字一:<input type="text" name="num1" id="num1"/><br/>
数字二:<input type="text" name="num2" id="num2"/><br/>
<input type="button" onclick="execute(this.value)" value="+"/>
<input type="button" onclick="execute(this.value)" value="-"/>
<input type="button" onclick="execute(this.value)" value="*"/>
<input type="button" onclick="execute(this.value)" value="/"/>
</form>
</body>
</html>
六、相关知识:
命名空间(namespace):区分不同模块
<package name="struts_1" namespace="part1" extends="struts-default">
<action name="add" class="com.sut.action.AddAction">
<result name="success">/success.jsp</result>
</action>
</package>
<package name="struts_2" namespace="part1/part2" extends="struts-default">
<action name="add" class="com.sut.action.AddAction">
<result name="success">/success.jsp</result>
</action>
</package>
<package name="struts_3" namespace="part1/part2/part3" extends="struts-default">
<action name="add" class="com.sut.action.AddAction">
<result name="success">/success.jsp</result>
</action>
</package>
地址栏访问:http://localhost:8080/Struts2_Demo3/part1/add.action 访问struts_1中的action
http://localhost:8080/Struts2_Demo3/part1/part2/add.action 访问struts_2中的action
http://localhost:8080/Struts2_Demo3/part1/part3/add.action 访问struts_3中的action
七、Struts2 请求后缀:
<struts>
<constant name="struts.action.extension" value="do,action,php"/> //在struts.xml 配置文件中可以更改 (value的值一般只能写三个)
</struts>
八、Action标签中的属性method 指定调用的方法
<action name="add" class="com.sut.action.CalAction" method="add"> //指定调用CalAction中的add() 方法
<result name="success">/success.jsp</result>
</action>