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日

相关文章

  • spring的@Transactional注解用法解读

    下面是关于“spring的@Transactional注解用法解读”的完整攻略。 什么是@Transactional注解? @Transactional是Spring框架中用于实现事务管理的注解。在一个被该注解标注的方法或类上使用该注解,可以使得这个方法或类变为一个事务处理的方法或类,在这个方法或类的执行过程中,会同步进行数据源的事务管理。 @Transac…

    Java 2023年5月20日
    00
  • 详解Spring Boot实现日志记录 SLF4J

    详解Spring Boot实现日志记录 SLF4J 什么是SLF4J SLF4J是Simple Logging Facade for Java的缩写,它是一个Java基础框架,为各种不同的Java日志库提供了一个简洁的接口。 Spring Boot中如何使用SLF4J 在Spring Boot中,我们可以使用以下步骤引入SLF4J: 在pom.xml文件中添…

    Java 2023年5月19日
    00
  • 判断Session的过期时间 采用JavaScript实时显示剩余多少秒

    判断Session的过期时间,一般可以采用服务器端的方法或客户端的方法,本文主要介绍采用JavaScript实时显示剩余多少秒的客户端实现方法。 准备工作 在实现过程中,需要获取Session的过期时间和当前时间,所以需要在服务器端将Session的过期时间存入到前端,可以将过期时间存入到一个隐藏域中。 代码示例: <input type="…

    Java 2023年6月15日
    00
  • 利用AOP实现系统告警的方法详解

    下面我会详细讲解“利用AOP实现系统告警的方法详解”的完整攻略: 一、AOP概述 AOP(Aspect Oriented Programming)又称面向切面编程,是一种编程思想和技术。它的主要作用是将一些系统范围内的横切关注点(如:日志记录、安全控制、事务处理等),按照一定的规则,通过编程的方式,插入到系统的各个阶段中,从而实现系统关注点的分离。 二、实现…

    Java 2023年5月27日
    00
  • Springboot项目中内嵌sqlite数据库的配置流程

    首先,我们需要在pom.xml中引入sqlite-jdbc依赖。在dependencies标签中添加如下代码: <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version&gt…

    Java 2023年5月20日
    00
  • Java操作MongoDB数据库的示例代码

    以下是“Java操作MongoDB数据库的示例代码”的完整攻略: 安装MongoDB和Java驱动 首先需要安装MongoDB和Java驱动程序。可以在MongoDB官网下载最新版MongoDB,然后安装到本地计算机上。接下来,需要下载MongoDB的Java驱动jar文件,在项目中引入。 连接MongoDB数据库 连接MongoDB数据库需要使用Mongo…

    Java 2023年5月20日
    00
  • 微信小程序支付功能完整流程记录(前端)

    微信小程序支付功能完整流程记录(前端) 一、准备工作 在开始前,你需要具备以下工具和信息: 微信公众平台的AppID、AppSecret和商户号(若未注册,需要前往微信公众平台进行注册) 微信支付开发文档 二、接入微信支付 1. 获取用户授权 由于小程序的支付需要获取用户的授权,因此我们需先引入小程序官方提供的授权组件。 <view> <b…

    Java 2023年5月23日
    00
  • Spring使用注解方式处理事务

    当我们在使用Spring框架时,事务管理是一个非常重要的概念。Spring提供了多种方式来处理事务,其中注解方式是一种常用的方式,因为它可以大大简化我们的配置和开发过程。 下面,我会详细讲解如何使用注解方式处理事务,并且提供两个示例。 1. 配置数据源和事务管理器 首先,我们需要配置数据源和事务管理器,这里以MySQL数据库为例。在Spring中配置数据源和…

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