Struts1简介和入门_动力节点Java学院整理

Struts1简介和入门攻略

什么是Struts1

Struts1是一个基于MVC设计模式的开源Web应用框架,可以快速构建基于Java EE的Web应用程序。它的主要组成部分包括Action、Form、Configuration、RequestProcessor等。

Struts1的优点

  • 开源免费,社区支持活跃
  • 遵循MVC设计模式,易于维护和扩展
  • 可以快速开发Web应用,提高工作效率

Struts1的缺点

  • 架构过于复杂,上手难度较高
  • 不支持Ajax和RESTful等现代Web应用的开发方式

Struts1的入门步骤

  1. 下载和安装Struts1
  2. 官方网站:http://struts.apache.org/
  3. 下载最新稳定版压缩包,解压后即可使用
  4. 配置Struts1
  5. 在Web应用的WEB-INF目录下创建struts-config.xml文件
  6. 编写配置文件中所需要的组件:Action、Form、Handler、Forward等
  7. 编写Action和Form
  8. Action负责处理请求和响应,可以将用户的请求转发给相应的JSP页面或者其他的Action
  9. Form封装了用户提交的数据,可以在Action中直接操作
  10. 建立视图
  11. 在Web应用中建立对应的视图,展示所需信息
  12. 编写JSP页面
  13. 编写视图对应的JSP页面,接收Action返回的信息并展示

示例1

Action类

package com.example;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;

public class HelloWorldAction extends org.apache.struts.action.Action {
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) throws Exception {
        String greeting = "Hello, world!";
        request.setAttribute("message", greeting);
        return mapping.findForward("success");
  }
}

Form类

package com.example;

import org.apache.struts.action.ActionForm;

public class HelloWorldForm extends ActionForm {
  private String name;

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }
}

配置文件struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
   <form-beans>
      <form-bean name="helloWorldForm"
        type="com.example.HelloWorldForm"/>
   </form-beans>
   <action-mappings>
      <action path="/helloWorldAction"
        type="com.example.HelloWorldAction"
        name="helloWorldForm">
         <forward name="success" path="/success.jsp"/>
      </action>
   </action-mappings>
</struts-config>

对应的JSP页面success.jsp

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello, world!</title>
  </head>
  <body>
    <h1><%= request.getAttribute("message") %></h1>
  </body>
</html>

示例2

Action类

package com.example;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class CalculatorAction extends org.apache.struts.action.Action {
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) throws Exception {
        CalculatorForm calculatorForm = (CalculatorForm)form;
        int result = 0;
        if (calculatorForm.getOperation().equals("+")) {
            result = calculatorForm.getNumber1() + calculatorForm.getNumber2();
        } else if (calculatorForm.getOperation().equals("-")) {
            result = calculatorForm.getNumber1() - calculatorForm.getNumber2();
        } else if (calculatorForm.getOperation().equals("*")) {
            result = calculatorForm.getNumber1() * calculatorForm.getNumber2();
        } else if (calculatorForm.getOperation().equals("/")) {
            result = calculatorForm.getNumber1() / calculatorForm.getNumber2();
        } else {
            request.setAttribute("message", "Unsupported operation: " + calculatorForm.getOperation());
            return mapping.findForward("error");
        }
        request.setAttribute("result", result);
        return mapping.findForward("success");
   }
}

Form类

package com.example;

import org.apache.struts.action.ActionForm;

public class CalculatorForm extends ActionForm {
    private int number1;
    private int number2;
    private String operation;

    public void setNumber1(int number1) {
        this.number1 = number1;
    }

    public int getNumber1() {
        return this.number1;
    }

    public void setNumber2(int number2) {
        this.number2 = number2;
    }

    public int getNumber2() {
        return this.number2;
    }

    public void setOperation(String operation) {
        this.operation = operation;
    }

    public String getOperation() {
        return this.operation;
    }
}

配置文件struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
   <form-beans>
      <form-bean name="calculatorForm"
        type="com.example.CalculatorForm"/>
   </form-beans>
   <action-mappings>
      <action path="/calculatorAction"
        type="com.example.CalculatorAction"
        name="calculatorForm"
        parameter="operation">
         <forward name="success" path="/success.jsp"/>
         <forward name="error" path="/error.jsp"/>
      </action>
   </action-mappings>
</struts-config>

对应的JSP页面calculator.jsp

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Calculator</title>
  </head>
  <body>
    <form method="post" action="calculatorAction.do">
      <input type="text" name="number1" /><br />
      <select name="operation">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
      </select><br />
      <input type="text" name="number2" /><br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

对应的JSP页面success.jsp

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Calculator</title>
  </head>
  <body>
    <h1>Result: <%= request.getAttribute("result") %></h1>
  </body>
</html>

对应的JSP页面error.jsp

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Error</title>
  </head>
  <body>
    <h1><%= request.getAttribute("message") %></h1>
  </body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts1简介和入门_动力节点Java学院整理 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java接口中尽量避免使用数组

    Java接口是一种定义方法签名的语法机制,虽然接口中也可以定义属性,但是定义属性的意义不是很大,因为接口中定义的属性默认都是常量,并且在接口实现类中无法修改。在接口中定义方法时,实现类中必须实现接口中定义的所有方法。在这种情况下,如果接口中使用数组,将会带来一系列问题。接下来,将为大家讲解“Java接口中尽量避免使用数组”的完整攻略。 为什么Java接口中尽…

    Java 2023年5月26日
    00
  • Javascript与flash交互通信基础教程

    “Javascript与Flash交互通信基础教程”指的是在一个HTML页面中,使用Javascript与Flash技术实现相互通信,从而达到一些动态效果或交互功能的目的。具体的实现方式可以通过swfobject.js插件实现,以下是详细的攻略: 步骤一:创建Flash文件 首先需要使用Flash软件创建Flash文件,并且为Flash文件命名。在编写Fla…

    Java 2023年6月15日
    00
  • java实现联机五子棋

    Java实现联机五子棋完整攻略 引言 联机五子棋是一种经典的、非常受欢迎的棋类游戏。在实现联机五子棋游戏过程中,需要采用 Java编程语言 进行设计和开发。本文将为您提供一份完整的攻略,指导您如何使用 Java实现联机五子棋游戏。 前置技能 在开始实现联机五子棋游戏前,我们需要掌握以下技能: 掌握 Java编程语言 ; 对 Java I/O相关API的使用必…

    Java 2023年5月19日
    00
  • springboot通用分支处理超级管理员权限逻辑

    首先需要明确一下,什么是Spring Boot通用分支处理超级管理员权限逻辑。这个逻辑主要是针对系统中的管理员(超级管理员)来对普通用户、普通管理员进行分支处理的一种方法,通常会在控制器层面进行相关的处理。 以下是完整攻略: 1. 创建超级管理员权限注解 在项目中创建一个自定义注解,用来标识哪些控制器方法需要超级管理员权限才能执行。示例代码如下: @Rete…

    Java 2023年5月20日
    00
  • java实现删除某条信息并刷新当前页操作

    首先,需要明确操作的背景和需求。 背景是我们有一个Java的Web应用,需要实现删除某条信息并刷新当前列表页的操作。具体来说,删除操作需要从数据库或者其他持久化存储中删除指定的数据,然后刷新当前页的展示。 实现这个需求可以分为以下几个步骤: 获取用户要删除的数据的唯一标识符 在Web应用中,通常会通过表单提交等方式,向服务器发送删除请求。删除请求中需要包含被…

    Java 2023年6月16日
    00
  • uniapp开发打包多端应用完整方法指南

    我来为你详细讲解“uniapp开发打包多端应用完整方法指南”的完整攻略。 uniapp开发打包多端应用完整方法指南 1. uniapp简介 uniapp是一个基于Vue.js框架的开发多端应用的解决方案。它支持编写一份代码可以同时运行在H5、小程序、App各个端。同时,uniapp提供了许多针对不同端的API和优化策略,使得开发跨端应用变得更加简单高效。 2…

    Java 2023年5月23日
    00
  • SpringBoot中如何统一接口返回与全局异常处理详解

    下面我将从以下三个方面来详细讲解Spring Boot如何统一接口返回以及全局异常处理: 统一接口返回 全局异常处理 示例说明 1. 统一接口返回 在Spring Boot中,我们可以通过统一定义返回结果的数据类型,并在结果中包含状态码、消息提示和返回数据来实现统一接口返回。下面是一个示例实现: @Data public class Result<T&…

    Java 2023年5月25日
    00
  • java 读写 ini 配置文件的示例代码

    要读写ini配置文件,我们可以使用Java的Properties类。Properties类提供了一种简单的机制来将“key-value”对存储到配置文件中,并从中检索。 以下是读取配置文件的示例代码: import java.io.FileInputStream; import java.util.Properties; public class ReadI…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部