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

yizhihongxing

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日

相关文章

  • AndroidStudio4.1 自定义模板的使用方法

    AndroidStudio4.1 自定义模板的使用方法 简介 在开发 Android 应用过程中,我们经常需要创建大量的 Activity、Fragment、Adapter、ViewModel 等等。而每次新建这些文件都需要手动创建,费时费力,容易出错。Android Studio 就提供了模板功能,支持快速生成各种文件模板。在 Android Studio…

    Java 2023年6月1日
    00
  • Java中List.contains(Object object)方法使用

    Java中的List.contains(Object object)方法用于判断List容器中是否包含指定的对象。这个方法返回一个boolean类型,当包含指定对象时返回true,否则返回false。下面就是使用List.contains()方法的完整攻略: 方法签名 下面是List.contains(Object object)方法的定义签名(注意,该方法…

    Java 2023年5月26日
    00
  • SpringBoot返回统一的JSON标准格式实现步骤

    下面是“SpringBoot返回统一的JSON标准格式实现步骤”的完整攻略: 1. 为什么需要统一的JSON标准格式 在Web开发中,经常需要通过API接口返回JSON格式的数据,在返回JSON数据时大家的实现方式可能会有所不同,这就导致在调用不同接口时,返回的JSON格式可能会存在不同的字段、不同的格式等情况,这也会增加前端开发人员的工作难度。因此,为了简…

    Java 2023年5月26日
    00
  • 什么是线程安全的并发容器?

    以下是关于线程安全的并发容器的完整使用攻略: 什么是线程安全的并发容器? 线程安全并发容器是指在多线程环境下,多个线程可以同时访问容器中的元素,而不会出现数据不一致或程序崩溃等问题。在多线程编程中,线程安全的并发容器是非常重要的,因为多个线程同时访问容器,会出现线程争用的问题,导致数据不一致或程序崩溃。 如何实现线程安全的并发容器? 为了实现线程安全的并发容…

    Java 2023年5月12日
    00
  • AJAX SpringBoot 前后端数据交互的项目实现

    讲解”AJAX SpringBoot前后端数据交互的项目实现”的步骤及示例: 1. 准备工作 首先,需要搭建好Spring Boot的环境,并在其中添加对thymeleaf和web模块的支持。若需要使用ORM,还需要添加对JPA的支持。 在前端部分,需要准备好HTML、CSS和JS等组件。 2. 建立一个Spring Boot项目 使用Spring Init…

    Java 2023年5月20日
    00
  • JavaSpringBoot报错“UnsatisfiedDependencyException”的原因和处理方法

    原因 “UnsatisfiedDependencyException” 错误通常是以下原因引起的: 依赖项未找到:如果您的代码中存在依赖项未找到的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 多个 Bean 匹配:如果您的代码中存在多个 Bean 匹配的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 …

    Java 2023年5月4日
    00
  • java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

    Java自带命令行工具攻略 Java自带了多个命令行工具,可以对Java程序进行分析、调试和监控。其中,jmap、jhat和jinfo是非常重要的工具。本攻略将详细讲解它们的使用,包括实例代码和示例结果。 jmap jmap是Java Memory Map的缩写,是一个用于打印Java进程中内存使用情况的命令行工具。下面是jmap的常用选项: Usage: …

    Java 2023年5月19日
    00
  • Spring和SpringMVC扫描注解类冲突的解决方案

    在Spring和SpringMVC中,都有扫描注解类的功能。但是,如果在两个框架中同时使用了相同的注解类,就会出现冲突。本文将详细讲解Spring和SpringMVC扫描注解类冲突的解决方案,并提供两个示例说明。 解决方案一:使用不同的包名 我们可以在Spring和SpringMVC中使用不同的包名,来避免扫描相同的注解类。下面是一个示例: // Sprin…

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