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日

相关文章

  • Json优缺点及使用介绍

    Json优缺点及使用介绍 Json是什么 JSON(JavaScript Object Notation,即 Javascript 对象表示法)是一种轻量级的数据交换格式,它是以文本形式表示数据,适用于存储和传输数据。 JSON格式具有可读性高、占用空间小、易于处理等优点,因此被广泛用于Web应用程序和移动应用程序的数据交换。 JSON的格式基于JavaSc…

    Java 2023年5月26日
    00
  • Spring MVC基于注解的使用之JSON数据处理的方法

    下面是关于Spring MVC基于注解的使用之JSON数据处理的方法的详细攻略: 1. 前置知识 在学习JSON数据处理前,需要掌握一些Spring MVC的基础知识,包括: Spring框架的基本概念和原理 Spring MVC框架的基本原理 Spring MVC框架中的Controller、RequestMapping注解 2. JSON数据处理 2.1…

    Java 2023年5月26日
    00
  • Java Fluent Mybatis 聚合查询与apply方法详解流程篇

    Java Fluent Mybatis 是一个 Mybatis 的扩展项目,它提供了一组高级的 API ,可以让你更加简洁、方便地构建 MyBatis 动态 SQL 查询语句。 Fluent Mybatis 中关于聚合查询的 API 章节是 Fluent-SQL-Query 的一个子集,主要提供了以下三个聚合查询的方法: groupBy: 根据列进行分组 h…

    Java 2023年5月20日
    00
  • 线上FullGC问题排查实践——手把手教你排查线上问题

    作者:京东科技 韩国凯 一、问题发现与排查 1.1 找到问题原因 问题起因是我们收到了jdos的容器CPU告警,CPU使用率已经达到104% 观察该机器日志发现,此时有很多线程在执行跑批任务。正常来说,跑批任务是低CPU高内存型,所以此时考虑是FullGC引起的大量CPU占用(之前有类似情况,告知用户后重启应用后解决问题)。 通过泰山查看该机器内存使用情况:…

    Java 2023年5月5日
    00
  • Java遍历输出指定目录、树形结构所有文件包括子目录下的文件

    Java遍历输出指定目录、树形结构所有文件包括子目录下的文件 在Java中,我们可以使用递归来遍历指定目录下的所有文件及其子目录下的文件,并对它们进行操作,例如输出它们的名称、大小等信息。下面是具体的步骤: 创建一个方法,用于遍历指定目录及其子目录下所有文件。方法需要传入一个文件对象作为参数,此文件对象表示需要遍历的目录。方法会先输出当前目录及其子目录下的所…

    Java 2023年5月26日
    00
  • solaris 10下安装java+tomcat

    下面是“solaris 10下安装java+tomcat”的完整攻略: 安装Java 下载并解压Java安装包,建议使用JDK 8及以上版本。 bash $ cd /usr/local $ wget https://download.oracle.com/java/8u201-b09/42970487e3af4f5aa5bca3f542482c60/serv…

    Java 2023年5月24日
    00
  • Java面向对象基础知识之数组和链表

    Java面向对象基础知识之数组和链表 1. 数组和链表区别 数组和链表都是线性数据结构,但它们的存储方式和特点不同。 数组是一种连续的内存存储方式,可以快速访问任何一个元素。但在插入和删除元素时,需要移动大量元素,效率很低,因此不适合插入和删除操作频繁的情况。 链表是一种非连续的内存存储方式,每个元素存储了下一个元素的地址,因此可以快速插入和删除元素。但访问…

    Java 2023年5月26日
    00
  • springmvc集成shiro登录权限示例代码

    下面是关于SpringMVC集成Shiro登录权限的完整攻略,包含两个示例说明。 SpringMVC集成Shiro登录权限示例代码 Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密等功能。在SpringMVC中集成Shiro可以帮助我们更好地管理用户的登录和权限。在本文中,我们将介绍如何在SpringMVC中集成Shiro,并提供两个示例…

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