本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.详细介绍原理

  1)关于Struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7     <!--
 8         package: 包. Struts2 使用package 来组织模块
 9         name属性:必须. 用于其他的包引用当前包。一般为当前模块的名字
10         extends:当前包继承哪个包,继承的,即可以继承其中的所有的配置。通常情况下,继承 struts-default
11         namespace:可选,如果没有给出,则 以 "/" 为默认值。若namespace有一个非默认值,则要想调用这个包里面的action,则必须把这个属性所定义的命名空间添加到先关的URI 字符串里。在servletPath 前面添加。
12          例如: http://localhost:8080/contextpath/namespace/servletPath
13
14
15      -->
16     <package name="helloword" extends="struts-default">
17
18         <!-- 配置一个action: 一个struts2 的请求就是一个action
19
20             name:对应一个Struts2 的请求的名字(或者对应一个servletPath,但是去除 / 和 扩展名),不含扩展名
21             class:的默认值为:com.opensymphony.xwork2.ActionSupport
22             method:的默认值为:execute
23
24          -->
25         <action name="product-input"
26                 class="com.opensymphony.xwork2.ActionSupport"
27                 method="execute">
28         <!--
29
30             result:结果。即,要访问的路径。表示action 方法执行后可能返回的一个结果。一个action节点可能有多个result 子节点。多个子节点使用name属性来区分,
31             name:标示一个一个result,和action 方法的返回值对应。默认值为 success
32             type:表示结果的类型,默认为dispatcher(转发到 结果)
33         -->
34             <result name="success" type="dispatcher">/struts2/input.jsp</result>
35         </action>
36
37
38         <action name="product-save" class="com.jason.struts.helloword.Product" method="save">
39             <result name="details">/struts2/details.jsp</result>
40
41         </action>
42
43     </package>
44
45 </struts>

   

  ① package

  

② action

③ result

2.代码

代码结构

index.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10
11
12     <a href="product-input.action">Product Input</a>
13 </body>
14 </html>

input.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>input page</title>
 8 </head>
 9 <body>
10
11     <form action="product-save.action" method="post">
12         ProductName:<input type="text" name="productName"/>
13         <br><br>
14
15         ProductDesc:<input type="text" name="productDesc"/>
16         <br><br>
17
18         ProductPrice:<input type="text"  name="productPrice"/>
19         <br><br>
20
21         <input type="submit"  value="submit" />
22     </form>
23 </body>
24 </html>

detail.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>detail page</title>
 8 </head>
 9 <body>
10
11         ProductId:${productId }
12         <br><br>
13         ProductName:${productName }
14         <br><br>
15         ProductDesc:${productDesc }
16         <br><br>
17         ProductPrice:${productPrice }
18         <br><br>
19
20
21 </body>
22 </html>

Product.java

 1 package com.jason.struts.helloword;
 2
 3 public class Product {
 4
 5     private Integer productId;
 6     private String productName;
 7     private String productDesc;
 8
 9     private double productPrice;
10
11
12
13     public String save(){
14
15         System.out.println(this);
16         return "details";
17     }
18     @Override
19     public String toString() {
20         return "Product [productId=" + productId + ", productName="
21                 + productName + ", productDesc=" + productDesc
22                 + ", productPrice=" + productPrice + "]";
23     }
24
25     public Integer getProductId() {
26         return productId;
27     }
28
29     public void setProductId(Integer productId) {
30         this.productId = productId;
31     }
32
33     public String getProductName() {
34         return productName;
35     }
36
37     public void setProductName(String productName) {
38         this.productName = productName;
39     }
40
41     public String getProductDesc() {
42         return productDesc;
43     }
44
45     public void setProductDesc(String productDesc) {
46         this.productDesc = productDesc;
47     }
48
49     public double getProductPrice() {
50         return productPrice;
51     }
52
53     public void setProductPrice(double productPrice) {
54         this.productPrice = productPrice;
55     }
56
57
58
59 }

struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7     <!--
 8         package: 包. Struts2 使用package 来组织模块
 9         name属性:必须. 用于其他的包引用当前包。一般为当前模块的名字
10         extends:当前包继承哪个包,继承的,即可以继承其中的所有的配置。通常情况下,继承 struts-default
11
12      -->
13     <package name="helloword" extends="struts-default">
14
15         <!-- 配置一个action: 一个struts2 的请求就是一个action
16
17             name:对应一个Struts2 的请求的名字(或者对应一个servletPath,但是去除 / 和 扩展名),不含扩展名
18             result:结果。即,要访问的路径
19          -->
20         <action name="product-input" >
21             <result>/struts2/input.jsp</result>
22         </action>
23
24
25         <action name="product-save" class="com.jason.struts.helloword.Product" method="save">
26             <result name="details">/struts2/details.jsp</result>
27
28         </action>
29
30
31
32     </package>
33
34
35
36 </struts>

1.由 product-input.action 转到/struts2/input.jsp, 在struts.xml 中配置一个acton

  

1         <!-- 配置一个action: 一个struts2 的请求就是一个action
2
3             name:对应一个Struts2 的请求的名字(或者对应一个servletPath,但是去除 / 和 扩展名),不含扩展名
4             result:结果。即,要访问的路径
5          -->
6         <action name="product-input" >
7             <result>/struts2/input.jsp</result>
8         </action>
9         

2.由input.jsp 页面的action: product-save.action 到 /struts2/details.jsp 页面。在Product 中定义一个save方法,且返回值为 details

1 <action name="product-save" class="com.jason.struts.helloword.Product" method="save">
2             <result name="details">/struts2/details.jsp</result>
3
4 </action>

转载于:https://www.cnblogs.com/jasonHome/p/5729665.html

[原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...相关推荐

  1. java socket编写服务器_Java网络学习笔记1:用(Server)Socket编写简单的客户/服务器程序...

    首先需清楚Socket类提供了getInputStream()方法和getOutputStream()方法,分别返回输入流InputStream对象和输出流OutputStream对象.程序只需向数据 ...

  2. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  3. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  4. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)

    开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...

  5. motan学习笔记 五 opentracing学习入门

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  6. Makefile学习笔记 - 我的CPP之路 - C++博客

    Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记 先列出一个很简单的Makefile例子: --------- hd.cpp #incl ...

  7. 深度学习入门之PyTorch学习笔记:深度学习介绍

    深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...

  8. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

  9. 学习笔记:强化学习与最优控制(Chapter 2)

    Approximation in Value Space 学习笔记:强化学习与最优控制(Chapter 2) Approximation in Value Space 1. 综述 2. 基于Value ...

  10. 学习笔记-零基础学习人工智能(0)

    学习笔记-零基础学习人工智能(0) 背景 规划 背景 作为物理专业的大龄青年,由于兴趣爱好想学习下人工智能.主要感兴趣的方向是对抗样本生成.自己也做了一些了解,但是发现千头万绪,不懂的东西太多.为了梳 ...

最新文章

  1. 老板要我开发一个简单的工作流引擎
  2. Electron中实现拖拽文件进div中通过File对象获取文件的路径和内容
  3. SwipeRefreshlayout+RecyclerView+binding实现上拉和下拉刷新
  4. c语言网页版在线编译器_C语言编译器IDEapp下载-C语言编译器IDE官方版下载v1.5.1 安卓版...
  5. mysql查询缓存到redis_php查询mysql并缓存到redis
  6. POJ 1797 Heavy Transportation
  7. Redis的几种拓展方案,你都清楚吗?
  8. java ascii码从小到大排序_待签名参数按照字段名的ascii码从小到大排序 怎么理解...
  9. ​百度网盘下线SVIP免第三方广告特权;小米回应手机异常发热;Windows 11新应用商店将于6月24日亮相|极客头条...
  10. php 随机坐标点,php实现 计算坐标点在某区域
  11. AD域权限分配_ADManager Plus对AD域管理有哪些帮助作用?
  12. 大三-软件工程复习-自我理解后制作
  13. 简述在计算机中如何添加或删除输入法,Windows 7系统怎么添加或删除输入法?方法介绍...
  14. mysql中查看虚拟环境_进程、虚拟环境、mysql
  15. 2014省赛----神奇算式(填空)
  16. 网络编辑如何经营网络社区?
  17. 《Java JDK8学习笔记》读书笔记(3)
  18. 第二十三篇-ubuntu18.04怎么下载播放器以及如何设置默认播放器
  19. 有香有臭个性十足“奶酪之国”种类高达345种
  20. centos安装qmail_深入研究QMail

热门文章

  1. boost库的lock_ops类的变化
  2. LeetCode 5356. 矩阵中的幸运数
  3. Web前端笔记(5)
  4. 单纯形法求解函数极值问题 matlab代码
  5. Linux下的虚拟机拷贝与快照生成
  6. java 迷宫最短路径_用Java实现迷宫最短路径算法
  7. 测试面试题集-生活物品测试:杯子、伞、钢笔、桌子
  8. kaggle实战笔记_1.数据处理
  9. SAP License:在产品结算参数设置
  10. SAP License:关于未分摊差异的几种处理办法