1. 程式人生 > >Struts2 入門案例——基於Struts2 任意兩資料的代數和

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 中執行,執行介面如圖: