Struts2框架实现计算器功能

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>结果为&nbsp;${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后的返回值,不同的返回值指向不同的页面)

 

仅供入门者参考。出现错误的地方还望大家指出。

感觉还想写好多东西,一时想不起了。想起再修改。

 

 

 

 

 

 

 

 

 

posted @ 2013-05-19 11:37  聆道  阅读(2552)  评论(0编辑  收藏  举报
页脚代码