基于Struts2 任意两数据的代数和
【问题】设计一个简单的 Web 程序,其功能是让用户输入两个整数,并提交给 Action,在 Action 中计算两个数的代数和,如果代数和为非负数,则跳转到 ch11_1_Positive.jsp 页面,否则跳转到 ch11_1_Negative.jsp 页面。
【设计步骤】
(1)建立 Web 工程并在web.xml 中配置核心控制器。
(2)设计和编写视图组件(使用JSP编写页面)。
(3)编写视图组件对应的业务控制器组件 Action。
(4)配置业务控制器 Action,即修改 struts.xml配置文件,配置Action。
(5)部署程序。
【系统的实现】
(1)在MyEclipse中创建Web工程 ch11_1_StrutsAdd,并导入Struts2 必需的 jar包。(基本搭建环境的包我已经上传资源中心)
(2)修改web.xml 配置文件,在web.xml中添加如下的配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<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>
</web-app>
注意:struts 2.5的版本中 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>没有 .ng,不然运行不了!
(3)编写JSP页面
①提交数据页面 ch11_1_Input.jsp ,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>提交两数据页面</title></head>
<body>
<form action="add" method="post">
请输入两个整数:<br><br>
加数:<input name="x"/><br><br>
被加数:<input name="y"/><br><br>
<input type="submit" value="求和">
</form>
</body>
</html>
②代数和为非负数时要跳转到页面 ch11_1_Positive.jsp,代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>显示页面————代数和为非负整数</title></head>
<body>
代数和为非负整数:<s:property value="sum"/>
</body>
</html>
③代数和为负数时要跳转到页面 ch11_1_Negative.jsp,代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>显示页面————代数和为负整数</title></head>
<body>
代数和为负整数:<s:property value="sum"/>
</body>
</html>
(4)设计控制类(Action类):Ch11_1_Action.java。
package Action;
public class Ch11_1_Action {
private int x;
private int y;
private int sum;
public int getX(){
return x;
}
public void setX(int x){
this.x = x;
}
public int getY(){
return y;
}
public void setY(int y){
this.y = y;
}
public int getSum(){ //利用该方法,将属性 sum 的值,传给要跳转到的视图中
return sum;
}
public String execute(){
sum=x+y;
if(sum>=0)return "+";
else return "-";
}
}
(5)修改 struts.xml 配置文件,配置Action 代码如下:
<?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">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="add" class="Action.Ch11_1_Action">
<result name="+">/ch11_1_Positive.jsp</result>
<result name="-">/ch11_1_Negative.jsp</result>
</action>
</package>
</struts>
(6)部署该程序到 Tomcat 中运行,运行界面如图: