Skip to content

4. مثال ۰۳ – کلیدهای ناوبری

4.1. پروژه NetBeans

  • در [1]:
    • [web.xml]: فایل پیکربندی برنامه وب
    • [struts.xml]: فایل پیکربندی Struts
    • [Action1.java]: اکشن واحد برنامه
    • [Page1.JSP, Page2.JSP]: دو نمای برنامه
  • در [2]: نمایش [Page1.JSP]
  • در [3]: نمایش [Page2.JSP]

4.2. فایل [struts.xml]

به شرح زیر است:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <package name="default" namespace="/" extends="struts-default">
    <default-action-ref name="index" />
    <action name="index">
      <result type="redirectAction">
        <param name="actionName">Action1</param>
        <param name="namespace">/actions</param>
      </result>
    </action>
  </package>
  <package name="actions" namespace="/actions" extends="struts-default">
    <action name="Action1" class="actions.Action1">
      <result name="page1">/vues/Page1.JSP</result>
      <result name="page2">/vues/Page2.JSP</result>
    </action>
  </package>
</struts>
  • خطوط 17–19: متد execute در [Action1] دو کلید ناوبری را بازمی‌گرداند:
    • page1، که نمای /views/Page1.JSP را نمایش خواهد داد
    • page2، که نمای /views/Page2.JSP را نمایش خواهد داد

4.3. اقدام [Action1]

این مشابه موردی است که در مثال قبلی آمده است:


package actions;

import com.opensymphony.xwork2.ActionSupport;

public class Action1 extends ActionSupport{
  
  //مدل عملیاتی
  private String param1="valeur1";
  private String param2="valeur2";
  
  @Override
  public String execute(){
    //انتخاب تصادفی بین دو نما
    int i=(int)(Math.random()*2);
    if(i==0){
      return "page1";
    }else{
      return "page2";
    }
  }
  
  //گیرنده و تنظیم‌کننده‌ها
...
}
  • خطوط ۱۲–۱۴: متد execute به صورت تصادفی کلیدهای مورد انتظار page1 و page2 را بازمی‌گرداند.

4.4. دیدها JSP

Page1.JSP


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Page1</title>
  </head>
  <body>
    <h1>Page1</h1>
    param1=<s:property value="param1"/><br/>
  </body>
</html>

در خط ۱۱، صفحه مقدار فیلد param1 را از [Action1] نمایش می‌دهد.

Page2.JSP


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Page2</title>
  </head>
  <body>
    <h1>Page2</h1>
    param2=<s:property value="param2"/><br/>
  </body>
</html>

خط ۱۱: صفحه مقدار فیلد param2 را از [Action1] نمایش می‌دهد.

4.5. آزمایش‌ها

وقتی یکی از صفحات در مرورگر باز شد، باید آن را رفرش کنید (F5) تا عمل [Action1] را به طور مکرر اجرا کند تا صفحه دیگر ظاهر شود. همچنین می‌توانید پارامترها را ارسال کنید: