Struts2 入門案例——基於Struts2 任意兩資料的代數和
基於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 中執行,執行介面如圖: