为了账号安全,请及时绑定邮箱和手机立即绑定

Struts2入门

我来解释(逗逼)一下,方法3中struts框架的数据处理流程
1.和方法2不同点:把User换成List其它流程一样
2.关键在于理解逻辑视图分离的思想,框架先提取视图中的表单数据,用action的属性name在xml中找到匹配的Action类,并实例化这个类的一个对象,用set方法把表单数据注入这个对象,执行xml中method指定的方法,用返回值匹配result返回对应视图
3.以上流程可以看出,视图不需要考虑怎么把数据传给逻辑,逻辑也不考虑怎么得到数据怎么把结果视图返回给用户,一切由MVC框架完成,逻辑视图控制器相互独立,这就是解耦,可以参考spring中“依赖注入”的概念,本质是一样的
我来解释(逗逼)一下,方法2中struts框架的数据处理流程
1.和方法1不同点:表单数据被注入了User对象,再把user注入LoginAction
2.从Login.jsp视图中得到表单数据后,用action="name1.action"的name1匹配xml中的<action>的name
3.匹配成功的是LoginAction,框架会实例化它的一个对象,由于这个对象有一个User属性,再实例化一个User对象,然后用set方法把表单数据注入user再用set方法把user注入LoginAction
4.执行login方法得到返回值,用返回值找到<result>中对应的jsp视图返回给用户
我来解释(逗逼)一下,方法1中struts框架的数据处理流程
1.用户在login.jsp提交表单数据后,提取<form>的属性action="name1.action"
2.用name1去匹配struts.xml中<action>的属性name,案例中是LoginAction
3.执行匹配成功的action对应的class对应的method,得到返回值
4.用返回值去匹配<result>的属性name返回对应jsp,name被省略了返回默认success.jsp
关键是步骤3中,Struts框架会先实例化class的一个对象,然后用set方法把表单数据注入到这个对象,所以必须先实现set方法
我来解释(逗逼)一下,案例代码的命名太具迷惑性了,不易理解struts执行流程
1.收到页面请求/HelloWorld/name1_name2_… .action后,用name1_name2_…匹配<action>的属性name="*_*_…",并用name1代替所有{1},name2代替所有{2}…以此类推
2.执行对应<action>的对应class的对应method,得到返回值value
3.用返回值匹配<result>的属性name,若精确匹配则返回对应视图jsp给用户;若匹配失败,如果返回值是SUCCESS则返回默认jsp,如果是NONE则返回空jsp,如果是ERROR则显示错误页面
我来解释(逗逼)一下,Struts版本已经更新至2.5.2,配置不一样了
1.感叹号方法
除了要常量<constant .../>,还要在<package>中增加属性:strict-method-invocation="false"
2.通配符方法
不需要常量<constant.../>,但要在<package>中增加属性:strict-method-invocation="false"
即:<package name="default" namespace="/" extends="struts-default" strict-method-invocation="false">
我来解释(逗逼)一下,不一定正确,可以参考:
现在struts版本更新了,目前是struts-2.5.2,以上代码直接运行会出错
1.@里昂 说的:把log4j-api-2.5.jar包加到lib和path里
2.@零度空间 说的:xwork-core.jar包已经没了
3.@零度空间 说的:<filter-class>改为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter去掉ng
4.运行出错很可能某个猥琐小角落的代码敲错了,仔细检查!仔细检查!仔细检查!重要的事说三遍!
5.我查起bug来才发现自己的手有多残
我觉得作为入门已经讲明白struts是什么,有什么了,对于吹毛求疵的那些人,不喜欢可以不看,没必要让老师非得满足你。
动态方法调用这段代码突然就出来了,中间的代码讲解这段是被掐掉了么
user如果不添加set,get的话,会报错的
总体讲的还可以,就是运用软件的时候太快,根本看不清怎么怎么操作的,每次都要暂停重复看他的操作
如果是struts2 2.5版本,log4j-api-2.5.jar包也要加进去,否则tomcat服务器会启动失败
web.xml文件过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
两个不同错误信息的写法:
用户名:<input type="text" name="username"><s:fielderror><s:param>username</s:param></s:fielderror><br>
密码:<input type="password" name="password"><s:fielderror><s:param>password</s:param></s:fielderror><br>

this.addFieldError("username", "用户不能为空");
this.addFieldError("password", "密码不能为空");
课程须知
小伙伴们,学习本课程前需要具备Java Web基础,熟悉JSP和Servlet。
老师告诉你能学到什么?
1、能够对Struts2框架有更深入的了解 2、能够独立编写Struts2程序

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消