远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)
  • JavaSE

  • 开源框架

  • Linux

  • Struts2

    • Struts2-3概述与MVC模式深度剖析
    • Struts2-3环境准备以及构建第一个Struts2-3的hello-word项目
    • 使用MyEclipse2022-1搭建Maven版本的Struts2-3项目
    • Struts2的类型转换
    • Struts2-3的独有特性与StrutsPrepareAndExecute过滤器源码分析
      • action 后缀
      • 其他类型转换
      • Struts2 的基本执行流程
    • Struts2类型转换之单个对象深入研究
    • Struts2类型转换之批量类型转换
    • Struts2类型转换之全局类型转换
    • Struts2自定义方法最佳实践
    • Struts2输入校验剖析之编码方式校验
    • Struts2的Action中自定义方法的输入校验
  • Hibernate

  • Webservice

  • 分布式

  • 分布式框架

  • 后端开发
  • Struts2
terwer
2022-10-25
目录

Struts2-3的独有特性与StrutsPrepareAndExecute过滤器源码分析

# action 后缀

​action​ 会自动加上 .action​ ,例如

<form action="login">
</form>
1
2

和

<form action="login.action">
</form>
1
2

效果一样。

​

# 其他类型转换

LoginAction 新增两个属性

private Integer age;
private Date date;

public Integer getAge() {
	return age;
}

public void setAge(Integer age) {
	this.age = age;
}

public Date getDate() {
	return date;
}

public void setDate(Date date) {
	this.date = date;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

login.jsp

年龄:<input type="text" name="age" /><br />
日期:<input type="text" name="date" /><br />
1
2

result.jsp

年龄:${requestScope.age }<br />
日期:${requestScope.date }<br />
1
2

效果

​

# Struts2 的基本执行流程

  1. 用户浏览器输入入口页面地址。例如:http://localhost:8080/struts23/login.jsp

  2. 输入表单信息之后,点击提交,通过 form 的 action,进行对应跳转。

    <form action="login.action">
    
    1
  3. 我们这里是 login,那么,就会去 struts.xml 寻找 name="login" 的 action 节点

    <package name="struts2" extends="struts-default">
    	<action name="login" class="space.terwer.struts23.LoginAction">
    		<result name="success">/result.jsp</result>
    	</action>
    </package>
    
    1
    2
    3
    4
    5

    找到之后,实例化 class 配置的 Action 处理类。

    然后执行对应的 setXXX 方法进行属性赋值,接着执行 Action 里面的 execute 方法:

    public String execute() {
    	return "success";
    }
    
    1
    2
    3
  4. 执行完成之后,根据返回值去 struts.xml 找到对应的跳转视图,我们这里是 result.jsp,然后显示最终结果。

    ​

注意:Struts2 每次请求都会生成一个 Action 的对象。这与 Servlet 不同,Servlet 是每个请求共享一个对象,Struts2 的 Action 是每次请求都生成一个新对象。

Struts1 的处理方式与 Servlet 类似。

‍

编辑 (opens new window)
#执行#之后#对应#请求#struts#struts2#filter#过滤器#启动流程
上次更新: 2023/02/22, 13:47:25
Struts2的类型转换
Struts2类型转换之单个对象深入研究

← Struts2的类型转换 Struts2类型转换之单个对象深入研究→

最近更新
01
解决css部分border被圆角切掉之后圆角的边框消失问题
03-18
02
使用TypeScript开发一个自定义的Node-js前端开发脚手架
03-08
03
Github-Actions使用release-please实现自动发版
03-06
更多文章>
Theme by Vdoing | Copyright © 2011-2023 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式