1.新建Web Project
2.导入Struts2库文件
3.选择2.1的struts,拦截后缀选择所有
4.编写主要的JSP页面,index.jsp(因为是直接在index上写内容,就不用在web.xml中更改欢迎页面了)
1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 <title>Struts2计算器</title> 7 </head> 8 9 <body> 10 <form action="add.action"> 11 <input type="text" name="op1"/><br/> 12 <input type="text" name="op2"/> 13 <input type="submit" value="+"> 14 </form> 15 <br/><br/> 16 <form action="sub.action"> 17 <input type="text" name="op1"/><br/> 18 <input type="text" name="op2"/> 19 <input type="submit" value="-"> 20 </form> 21 <br/><br/> 22 <form action="mul.action"> 23 <input type="text" name="op1"/><br/> 24 <input type="text" name="op2"/> 25 <input type="submit" value="*"> 26 </form> 27 <br/><br/> 28 <form action="div.action"> 29 <input type="text" name="op1"/><br/> 30 <input type="text" name="op2"/> 31 <input type="submit" value="/"> 32 </form> 33 <br/><br/> 34 </body> 35 </html>
5.编写CalculatorAction.java
1 package com.meng.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class CalculatorAction extends ActionSupport { 6 7 private int op1; 8 private int op2; 9 private int result; 10 public int getOp1() { 11 return op1; 12 } 13 public void setOp1(int op1) { 14 this.op1 = op1; 15 } 16 public int getOp2() { 17 return op2; 18 } 19 public void setOp2(int op2) { 20 this.op2 = op2; 21 } 22 public int getResult() { 23 return result; 24 } 25 public void setResult(int result) { 26 this.result = result; 27 } 28 public String add() 29 { 30 result=op1+op2; 31 return SUCCESS; 32 } 33 public String sub() 34 { 35 result=op1-op2; 36 return SUCCESS; 37 } 38 public String mul() 39 { 40 result=op1*op2; 41 return SUCCESS; 42 } 43 public String div() 44 { 45 result=op1/op2; 46 return SUCCESS; 47 } 48 public String execute() 49 { 50 return SUCCESS; 51 } 52 }
6.编写struts.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 3 <struts> 4 <package name="p1" extends="struts-default"> 5 <action name="add" class="com.meng.action.CalculatorAction" method="add"> 6 <result name="success">/result.jsp</result> 7 </action> 8 <action name="sub" class="com.meng.action.CalculatorAction" method="sub"> 9 <result name="success">/result.jsp</result> 10 </action> 11 <action name="mul" class="com.meng.action.CalculatorAction" method="mul"> 12 <result name="success">/result.jsp</result> 13 </action> 14 <action name="div" class="com.meng.action.CalculatorAction" method="div"> 15 <result name="success">/result.jsp</result> 16 </action> 17 </package> 18 </struts>
7.编写result.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 <title>结果页</title> 7 </head> 8 9 <body> 10 <center> 11 <h2>结果为 ${result}</h2> 12 </center> 13 </body> 14 </html>
需要注意的地方:
最后的result能直接取出的前提是action中要有它的get和set方法。
写在后面的话:
这个计算器只实现了最基本的功能,已知的还会有被除数为0的bug,页面显示效果也十分简陋。
不知为何选择拦截后缀的时候只能选择拦截所有,也就是/*,如果选择/action的话不能起作用。
本来想在JSP页面中就指定在action中所用的方法,那样的话struts.xml文件可以少写一些,但是没成功,就用回这种方式了。
一开始不知道MyEclipse可以这样添加Struts2框架,所以使用的方法是:
1.建立Web Project
2.把几个必须要的包放入lib文件夹中使之成为Reference Library
3.写好各个所需要用到的JSP页面
4.复制一个已经写好过滤器的web.xml文件(因为过滤器部分的代码容易写错)
5.编写继承了ActionSupport类的Action(如果是直接使用接收数据的第一种方式action属性的话要写上各自属性的get和set方法,另外写入execute方法作为主要的执行方法,返回SUCCESS等其它常量,具体返回的字符串要与struts.xml中result的name相对应)
6.编写struts.xml(如果希望运行的不是execute方法,要记得在action中添加method属性指定方法名。其实result的name就是执行action后的返回值,不同的返回值指向不同的页面)
仅供入门者参考。出现错误的地方还望大家指出。
感觉还想写好多东西,一时想不起了。想起再修改。