struts学习总结

学习几个框架过程中,知识点杂乱,如不复习总结,过后就忘。

struts2是基于拦截器的mvc结构,比如当提交表单到action类时,先经过一系列的拦截器,再执行action类方法,返回字符串到action的result,然后显示某个jsp页面或转到另一个action等。其拦截器是采用递归方法调用的,如果自定义拦截器类实现方法里不调用invoke方法(不执行action里方法),则只执行第一个拦截器后直接将字符串结果返回给result。

附上拦截器与过滤器的比较(摘自http://blog.csdn.net/kiss_vicente/article/details/7597700):

1)拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的。
2)过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器
3)拦截器只能对Action请求起作用,而过滤器可以对几乎所有的请求起作用。
4)拦截器可以访问Action上下文、值栈里的对象,而过滤器不能
5)在Action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

struts2的流程:

0,导包

1,web.xml配置核心过滤器

指定filter-class为org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

2,action类

a,参数封装

推荐模型驱动,即action类继承ActionSupport类(实现其中execute方法),实现ModelDriven接口(它将获得值栈和值栈将对象压栈操作封装了),类中要把对象new出来。

属性驱动和对象驱动差不多,继承ActionSupport类(实现其中execute方法),设置set和get方法

3,struts.xml

a,先导入struts的dtd约束文件

b,在struts标签下配置package,package一般配置name,namespace和extends(必选,设置为struts-default)等属性

c,package下设action标签,一般设置name,class和method属性。name属性可以为ActionDemo_*,class为action类,method={1}(表示第一个星号即是要调用的action类中的对应方法,实现动态调用)

d,action下设result标签,一般设置name和type属性。name为action类中返回的字符串,标签中间设置要跳到的jsp页面(如果action成功返回与name中相同的字符串,则跳转到此jsp)。type为result的动作,即转发还是重定向等,如果type为chain(转发到action或者redirectAction)result下设2个param标签,一个name为actionName,标签中填要转发到的类名,一个name为namespace,与转发到的action的namespace要一致还可以设置其他param标签,name的值如果struts不认识,会以参数形式将param标签中的表达式(如${name}动态参数)追加到转发到的action类名后面。

4,其他

Ognl工具

new一个OgnlContext,设置root(对象)和values(map),使用Ognl.getValue(String expression,Map context,Object root)可以完成取值,赋值和调用方法功能

自定义拦截器

自定义的拦截器类继承MethodFilterInterceptor类,可以自定义需要拦截的方法

配置文件中,在package下设interceptors标签

a,注册拦截器:在interceptors标签下设interceptor标签,属性为name和class,分别为自定义拦截器的名字和类

b,注册拦截器栈:在interceptors下设interceptor-stack,设置自定义栈名字name

在interceptor-stack下设interceptor-ref标签,name为interceptor的name

interceptor-ref下设param标签,name为excludeMethods或者includeMethods,标签中间写上拦截或不拦截的方法

interceptor-stack下设interceptor-ref标签,name为defaultStack,即引入默认拦截器栈

c,定义默认拦截器栈:在interceptors设default-interceptor-ref标签,name为interceptor-stack的name。即将修改后的拦截器栈设为默认。

标签

导入标签库 <%@ taglib prefix="s" uri="/struts-tags" %>

控制标签:iterator/if/elseif/else

数据标签:property

表单标签:有name和label属性,内置样式,可以根据name属性自动回显。from/textfield/password/file/radio/checkboxlist/select/textarea/submit

非表单:actionerror





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值