自学struts2第一天

本文详细解析了Struts2框架的核心组件、配置方法及MVC实现原理,对比了Struts2与SpringMVC的区别。同时,介绍了如何在Struts2中实现参数传递,包括基本属性注入和域模型注入。文章还分享了Struts2中向Action传参的两种常见方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.核心组件:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,要将它在web.xml里进行配置

2.struts.xml配置方法:

根元素<struts></struts>,

第二级元素<package></package>,该元素有name,namespace,extends属性。

name代表package元素的唯一性,namespace代表访问该页面的url路径组成部分之一,extends属性貌似一般都使用struts-default

第三级元素<action></action>,该元素有name,class,method属性。

name代表访问该页面的url组成部分之一,class代表action类的包路径,method代表访问该url会调用的方法名,不写method代表一般默认为写成method="execute"

第四级元素<result></result>,该元素有name属性,代表action中方法的返回值,result标签中的文本代表转发某个页面的路径。

3.action配置方法:

新建一个action类,不用继承任何类,在类里创建一个方法,方法访问修饰符为public,返回值为String类型。

action类里的方法执行起来一般都是转发到某个页面,如果是附带某些基本或者引用类型的数据展示到jsp上,那就需要用到el表达式了。用法还是和以前写spring的

时候一样,即${基本类型名称},${引用类型名称.引用类型属性},引用类型属性命名要符合javabean命名规范,第一个字母小写,后面每个单词首字母大写。

还有就是要注意展示到jsp页面的数据都需要为action的成员属性,都要加上get,set方法。

有时候还会遇到需要表单传数据到页面上的问题,表单的input name属性必须符合javabean命名规范,即<input type="text" name="user.userName"/>

每次一个请求过来,action对象都会被创建一次。发现这个的原因是我写了action类的构造方法,里面有syso输出文字。


Struts2如何实现MVC,与Spring MVC有什么不同?

Struts2采用filter充当前端控制器来处理请求,filter会根据struts.xml的配置,将请求分发给不同的业务控制器Action,再由Action处理具体的业务逻辑。Action处理完业务之后,filter会根据其返回的字符串,从struts.xml中找到对应的result,最终由result将请求转发给页面。

这个实现的思路与Spring MVC基本一致。其差异如下:

  1. Spring采用Servlet充当前端控制器,分发请求。
  2. Spring采用RequestMapping配置请求与业务控制器的关系。
  3. Spring采用Controller充当业务控制器。
  4. Spring采用ViewResolver将请求转发给页面。

在Struts2中页面如何向Action传参

Struts2中常用的传参方式有2种,分别是基本属性注入和域模型注入。

其中,基本属性注入是将表单中的数据,分别传给Action中声明的基本属性,要求这些属性有set方法,并且名称与表单中框体的name值一致。

域模型注入是将表单中的数据,传给Action中的一个实体对象,要求这个对象具有set方法,并且表单中框体的name中的表达式要有如下格式“对象.属性”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值