Struts1小項目實踐---idea中使用maven,完成使用struts1完成簡易計算機


任務

使用struts1完成兩個數的加減乘除,計算成功,則跳入計算成功頁面返回算術表達式,計算失敗則返回計算失敗

要點

1.使用idea搭建Struts環境

2.開發流程梳理

3.struts元素介紹(ActionServlet、Action、ActionForword、ActionForm)

4.配置文件介紹(web.xml、Struts_config.xml)

5.ActionForm類與Action類的開發

6.jsp頁面元素的補充了解

 

1.使用idea搭建Struts環境

使用idea構建mavenwebapp項目

 

 

 導入必備架包

 

 

 這樣環境就搭建完了

2.開發流程梳理

1.涉及三個頁面,輸入頁面、成功頁面、失敗頁面

2.配置文件配置:

web.xml配置servlet

Struts_config配置actionForm、action、actionForward

3.action、actionForm、轉向頁面開發

計算器包含三個字段,param1、param2(兩個數字)、flag(一個運算符)==》放入ActionForm中

取輸入值、計算數值、轉向頁面 ==》放入Action中

inut.jsp、success.jsp、error.jsp開發

 

3.struts元素介紹(ActionServlet、Action、ActionForword、ActionForm)

ActionServlet:繼承Servlet類,根據頁面元素一些標識,向對應的Action做轉發,交由Action處理httpRequest和httpResponse

Action:在strut1中,處理頁面的輸入元素,一般而言調用Model層的service處理完后,將結果放入request中,通過ActionForword進行轉向頁面

ActionForword:用於轉向頁面,可在struts_config中配置

ActionForm:用戶獲取頁面輸入信息,將其做類型的轉換,例如頁面是String===>int

 

4.配置文件介紹(web.xml、Struts_config.xml)

web.xml與struts相關的配置

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

一些常用標簽總結:

servlet:相關servlet的配置
  servlet-name:該servlet的名字也是唯一標識
  servlet-class:servlet使用的類,由於struts中有自己框架中的ActionServlet,使用jar包路徑
  load-on-startup:啟動servlet的優先級,如果存在多個servlet的時候,設計優先級,對於非負數據而言,數值越小,越先加載
servlet-mapping:servlet的映射關系

  servlet-name:對哪個servlet進行配置

  url-pattern:尾綴為哪個值的請求,會被servlet處理


struts_config相關的配置
<struts-config>
    <form-beans>
        <form-bean name="calculatorActionForm" type="ActionForm.calculatorActionForm"/>
    </form-beans>

    <action-mappings>
        <action path="/util/cal"
                type="Action.CalculatorAction"
                name="calculatorActionForm"
                validate="false"
                attribute="calculatorActionForm"
                scope="request">
            <forward name="success" path="/operate_error.jsp"/>
            <forward name="error" path="/operate_success.jsp"/>
        </action>
    </action-mappings>
</struts-config>

struts-config:struts的總配置

  form-Beans:用於配置ActionForm的全限定類名,支持多個form-Bean配置

  action-mapping:用於配置Action的全限定類名

    action:關於Action的配置

      path:頁面url截取規則,識別哪個url由哪個action處理

      vaildate:默認是false,進行vaildate校驗,配置為true則跳過vaildate校驗

      attribute:別名,action可用該名字取調用,配置則不能再用name標簽的名字調用

      scope:包裝成什么,默認是session,一般配置成request

    forward:關於轉向信息的配置

5.ActionForm類與Action類的開發

   ActionForm:用於收集表單數據,類似於一個domain類

public class calculatorActionForm extends ActionForm {
    private double param1;
    private double param2;
    private String operator;

    public double getParam1() {
        return param1;
    }

    public void setParam1(double param1) {
        this.param1 = param1;
    }

    public double getParam2() {
        return param2;
    }

    public void setParam2(double param2) {
        this.param2 = param2;
    }

    public String getOperator() {
        return operator;
    }

    public void setOperator(String operator) {
        this.operator = operator;
    }
}

注意事項:

  1.這些私有變量就是如果jsp上要調用時所需要的變量名

  2.必須要繼承ActionForm類

  3.必須要有get、set方法

  

  Action類:作為中間的橋梁,用於將前台數據交給model層處理,將model的處理結果返回給request中,處理轉向

public class CalculatorAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        calculatorActionForm cActionForm =  (calculatorActionForm)form;
        double a = cActionForm.getParam1();
        double b = cActionForm.getParam2();
        String operator = cActionForm.getOperator();
        double rightRst = 0.0;
        try{
            if("+".equals(operator)){
                rightRst = a + b;
            }else if("-".equals(operator)){
                rightRst = a - b;
            }else if("*".equals(operator)){
                rightRst = a * b;
            }else if("/".equals(operator)){
                rightRst = a / b;
            }
            request.setAttribute("result",rightRst);
            mapping.findForward("success");
        }catch (Exception e){
            e.printStackTrace();
        }
        return mapping.findForward("error");
    }
}

  1.需要重寫execute的方法,將自己的邏輯寫入其中

  2.一般均通過ActionForm類,獲取前台的數據

  3.通過findForward處理轉向信息,轉向信息時通過配置文件中的name值來獲取的

 

6.jsp頁面元素的補充了解

input.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>簡易計算機</title>
</head>
<body>
<form action="util/cal.action" method="post">
    <input type="text" name="param1">
    <select name="operator">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" name="param2">
    <input type="submit" value="計算">
</form>
</body>
</html>

 

success.jsp

<%@ page contentType="text/html;charset=GB18030" language="java" %>
<%@ page isELIgnored="false"%>
<html>
<meta http-equiv="content-type" content="text/html"; charset="GB18030">
<head>
    <title>Title</title>
</head>
<body>
${calculatorActionForm.param1 }
${calculatorActionForm.operator }
${calculatorActionForm.param2 }
=
${result }
</body>
</html>

 

error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${calculatorActionForm.param1}
    ${calculatorActionForm.operator}
    ${calculatorActionForm.param2}
    失敗
</body>
</html>

 

重要html元素:
  form:表單信息,可以用於提交數據

    action:用於進行后台處理的識別,util/cal.action,紅色為struts_config中配置的url截取規則,綠色為web.xml中配置的servlet進入規則

    input:輸入框,type為text,為文本輸入框,type為submit,為提交框

    select:下拉框,option,用於配置下拉的值

  ${}:ER表達式獲取request中的元素


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM