Struts2-3的独有特性与StrutsPrepareAndExecute过滤器源码分析
# action 后缀
action
会自动加上 .action
,例如
<form action="login">
</form>
1
2
2
和
<form action="login.action">
</form>
1
2
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
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
2
result.jsp
年龄:${requestScope.age }<br />
日期:${requestScope.date }<br />
1
2
2
效果
# Struts2 的基本执行流程
用户浏览器输入入口页面地址。例如:http://localhost:8080/struts23/login.jsp
输入表单信息之后,点击提交,通过 form 的 action,进行对应跳转。
<form action="login.action">
1我们这里是 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执行完成之后,根据返回值去 struts.xml 找到对应的跳转视图,我们这里是 result.jsp,然后显示最终结果。
注意:Struts2 每次请求都会生成一个 Action 的对象。这与 Servlet 不同,Servlet 是每个请求共享一个对象,Struts2 的 Action 是每次请求都生成一个新对象。
Struts1 的处理方式与 Servlet 类似。
编辑 (opens new window)
上次更新: 2023/02/22, 13:47:25
- 01
- 解决css部分border被圆角切掉之后圆角的边框消失问题03-18
- 02
- 使用TypeScript开发一个自定义的Node-js前端开发脚手架03-08
- 03
- Github-Actions使用release-please实现自动发版03-06