创建Struts2项目并实现一个例子

news2025/7/9 9:02:13

文章目录

    • 一、创建Struts2项目
    • 二、struts2的一个例子

一、创建Struts2项目

本人所用idea应用程序。以下全部内容,都是以idea为例

创建项目前,你需要下载Struts2所需要的jar包,你可以直接去官网下载,也可以点击https://pan.baidu.com/s/1DlnXJMLrBFf44dZ_kv8rXA?pwd=ccb1去下载我的。

1、
在这里插入图片描述

2、
在这里插入图片描述

3、
在这里插入图片描述
把这些全部选中,(这些是最基本的jar包,你也可以上官网下载比较全的包,我这里只是下载的基本版。)

4、
项目名字,自己起就可以了,
项目位置,根据自己的情况,自己选择即可。

填完后,点击finish即可
在这里插入图片描述

5、在进行配置之前,你需要做一些准备工作,创建一个classes文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到你创建的classes文件。选中它。第10步和第11步都是选中这个文件夹

在这里插入图片描述

点击Apply后,发现classes文件夹变颜色后,说明操作成功。
在这里插入图片描述

6、打开web.xml你会发现idea已经帮我写好这些配置,我们就不需要自己写了。
我们只需要写struts.xml 即可
在这里插入图片描述
在这里插入图片描述

完成以上操作后,Struts2项目创建完毕。

二、struts2的一个例子

这里以实现2个数相加为例
项目整体结构
在这里插入图片描述

1、创建一个实现2个数相加的类,命名为 Add。

注意这个类,必须有默认构造函数,每个数据成员的set/get方法。

package com.model;

public class Add {
    private  double a;
    private double b;
    private double sum;

    public double getSum() {
        return a+b;
    }
    public Add() {
    }

    public double getA() {
        return a;
    }

    public void setA(double a) {
        this.a = a;
    }

    public double getB() {
        return b;
    }

    public void setB(double b) {
        this.b = b;
    }
}

2、创建Action类 ,实现业务前期处理
注意:这个类,必须有默认构造函数,每个数据成员的set/get方法。对于业务实现的方法,返回值可以随便取,但是要在struts.xml文件中与返回值一致。

package com.action;

import com.model.Add;

public class AddActon {
    private Add add;

    public String excute(){   
        String ans="";
        if(add.getSum()>=0){
            ans="+";
        }else
            ans="-";
        return ans;
    }

    public AddActon() {
    }

    public Add getAdd() {
        return add;
    }

    public void setAdd(Add add) {
        this.add = add;
    }
}

3、表单提交页面 submit.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  <form action="add.action" method="post">
      a: <input type="text" name="add.a"> <br>
      b: <input type="text" name="add.b"> <br>
      <input type="submit">

  </form>
</body>
</html>

4、结果为正数页面 success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${add.a}+${add.b}=${add.sum}
</body>
</html>

5、结果为负数页面 negative.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
   ${add.a}+${add.b}=${add.sum}
</body>
</html>

6、struts.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  <!--   package 的name= 名字可以随便命名,但还是建议,命名一个跟这个模块功能相关的名字。
  
            extends=“” 这个是继承,直接就是这样,别改
  action 的name最好命名为实现的功能,
          class 是调用的类,
          method是 所用调用类的方法。 
          
   result name要与调用方法的返回值相一致,通过不同的返回值,转发不同的页面。

-->
    <package name="AandB" extends="struts-default">
        <action name="add" class="com.action.AddActon" method="excute">
            <result name="+">/MyWeb/success.jsp</result>
            <result name="-">/MyWeb/negative.jsp</result>
        </action>

    </package>
</struts>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode - 1419 数青蛙

题目来源 1419. 数青蛙 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 "croak" &#xff09;的组合。由于同一时间可以有多只青蛙呱呱作响&#xff0c;所以 croakOfFrog…

基于蜻蜓优化算法的认知无线电网络的服务质量研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

葡萄糖-聚乙二醇-牛血清白蛋白,BSA-PEG-Glucose,牛血清白蛋白-PEG-葡萄糖

葡萄糖-聚乙二醇-牛血清白蛋白,BSA-PEG-Glucose,牛血清白蛋白-PEG-葡萄糖 牛血清白蛋白&#xff08;BSA&#xff09;&#xff0c;是牛血清中的一种球蛋白&#xff0c;包含607个氨基酸残基&#xff0c;分子量为66.446KDa&#xff0c;可以提供PEG接枝修饰葡萄糖&#xff0c;葡萄…

独家 | 人工智能的记忆与泛化(附链接)

作者&#xff1a;Manuel Brenner 翻译&#xff1a;陈之炎校对&#xff1a;赵茹萱本文约4500字&#xff0c;建议阅读8分钟本文为你介绍了人工智能 记忆与泛化相关知识。标签&#xff1a;人工智能&#xff0c;记忆&#xff0c;泛化“对不可见数据的泛化能力是机器学习的核心。”当…

测试用例设计方法之场景设计法

基本流&#xff1a;采用直黑线表示&#xff0c;是经过用例的最简单的路径&#xff08;无任何差错&#xff0c;程序从开始直接执行到结束&#xff09; 备选流&#xff1a;采用不同颜色表示&#xff0c;一个备选流可能从基本流开始&#xff0c;在某个特定条件下执行&#xff0c;…

声明变量let和const

1.let的声明 JavaScript中用var关键字来声明变量&#xff0c;而在ES6中&#xff0c;还可以使用新增的let的关键字来声明变量。与var不同的是let声明的变量只能在代码块中有效。 {let a5;var b6;console.log(a);console.log(b);} 执行结果&#xff1a; 能正常输出&#xff0c;…

178:vue+openlayers 加载多种形式Esri地图

第178个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中绘制自定义图形,利用Geojson的writeFeatures,来生成geojson格式的数据,然后使用file-saver来导出geojson。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetM…

【论文阅读】半监督时序动作检测 Semi-Supervised Action Detection

文章目录1. Learning Temporal Action Proposals With Fewer Labels (ICCV 2019)论文目的——拟解决问题贡献——创新实现流程详细方法2. Self-Supervised Learning for Semi-Supervised Temporal Action Proposal (CVPR 2021)论文目的——拟解决问题贡献——创新实现流程详细方…

微服务之间,最佳的调用方式是什么?

在微服务架构中&#xff0c;需要调用很多服务才能完成一项功能。服务之间如何互相调用就变成微服务架构中的一个关键问题。服务调用有两种方式&#xff0c;一种是RPC方式&#xff0c;另一种是事件驱动&#xff08;Event-driven&#xff09;方式&#xff0c;也就是发消息方式。消…

多模态实战视频生成文本:基于VGG与LSTM实现图像对应的描述文本生成任务

任务描述:本教程将帮助你利用深度学习的方法为照片等图像自动生成文字描述,图像描述是结合计算机视觉与自然语言处理的综合任务,输入一幅图像, 输出一段描述该图像的文字,这一任务要求模型可以识别图片中的物体、理解物体间的关系,并用一句自然语言表达出来。 运行环境:在…

体系结构30_同步性能问题

栅栏&#xff08;barrier&#xff09;同步 栅栏强制所有到达该栅栏的进程进行等待&#xff0c;直到全部的进程到达栅栏&#xff0c;然后释放全部的进程&#xff0c;从而形成同步。 栅栏的典型实现是要用两个旋转锁&#xff1a;一个用来记录到达栅栏的进程数&#xff0c;另一个用…

Java 对象拷贝原理剖析及最佳实践

1 前言 对象拷贝&#xff0c;是我们在开发过程中&#xff0c;绕不开的过程&#xff0c;既存在于 Po、Dto、Do、Vo 各个表现层数据的转换&#xff0c;也存在于系统交互如序列化、反序列化。 Java 对象拷贝分为深拷贝和浅拷贝&#xff0c;目前常用的属性拷贝工具&#xff0c;包…

【外卖项目实战开发二】

文章目录1、完善登录功能问题分析代码实现2、新增员工需求分析数据模型代码开发3、员工信息分页查询需求分析代码开发4、启用/禁用员工账号需求分析代码开发代码修复5、编辑员工信息需求分析代码开发1、完善登录功能 问题分析 前面我们已经完成了后台系统的员工登录功能开发&…

zabbix集群搭建分布式监控的操作步骤

作用&#xff1a; 分担server的集中式压力解决多机房之间的网络延迟问题环境准备&#xff1a; 服务器1&#xff1a;zabbix-server 服务器2&#xff1a;zabbix-proxy 服务器3&#xff1a;zabbix-agent 关系&#xff1a;zabbix-agent发送数据到代理&#xff0c;代理汇总数据发送…

Linux多核运行机制(SMP)

一、Linux内核兼容多处理器要求 有多个 CPU 处理器 的 系统中 , Linux 内核需要处理的问题 : 1、公平共享 : CPU 的负载 , 需要公平地共享 , 不能出现某个CPU空闲 , 造成资源浪费。 2、可设置进程 与 CPU 亲和性 : 可以为 某些类型的 进程 与 指定的 处理器设置亲和性 , 可以针…

QT:debug,打不开头文件以及qDebug和Q_CLASSINFO的使用

这个是因为链接器在给定路径上搜索不到对应的头文件&#xff0c;而大多数的Qt相关的头文件都集中在一个include文件夹里&#xff1a; 我电脑上的路径是&#xff1a;C:\Qt\Qt5.9.7\5.9.7\msvc2017_64\include 然后我们在项目设置里&#xff1a; 注意&#xff0c;这边要加上\*&…

【Java】Assert.assertEquals断言

Assert.assertEquals 1.概述 在开发中&#xff0c;我们需要测试时候&#xff0c;不可能把全部程序运行一次&#xff0c;在此我们就需要通过编写单元测试来对程序进行测试了。在 Assert 类里面有大量的静态方法&#xff0c;本篇的主角就是 Assert.assertEquals 这个静态方法。该…

day12_类中成员之方法

成员变量是用来存储对象的数据信息的&#xff0c;那么如何表示对象的行为功能呢&#xff1f;就要通过方法来实现 方法 概念&#xff1a; 方法也叫函数&#xff0c;是一个独立功能的定义&#xff0c;是一个类中最基本的功能单元。把一个功能封装为方法的目的是&#xff0c;可…

【知识网络分析】 一模网络(one node)

一模网络(one node) 1 本地文献读取并构建一模网络数据集2 网络数据集精简3 网络数据集中节点信息大小写转化4 获取一模网络中可使用的mode标签5 网络数据集清洗(以武汉大学信息管理学院为例)5.1 创建映射5.2 求解节点中count属性数值5.3 处理网络数据中的连线信息5.4 处理…

中文版:Spread .NET 16.0 -Winform-WPF-ASP.NET

Spread .NET 是一个功能、布局与 Excel 高度类似的 .NET表格控件&#xff0c;可全面满足 WinForm、ASP.NET、XAML 和 WinRT 等平台下表格数据处理、数据可视化开发需求。Spread .NET 支持 462 种 Excel 公式&#xff0c;提供可嵌入系统的类Excel设计器和全面开放的 API&#xf…