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中的元素

猜你喜欢

转载自www.cnblogs.com/yyfighting2019/p/11829443.html