加速百度对网站文章的收录,windows网站建设教程视频教程,济宁市城市建设局网站,网站建设与维护 实训Struts2学习总结#xff08;完整版#xff09; 一、搭建struts2环境 1、jar包的导入 主要是到 解压其中的一个工程#xff0c;得到里面lib下包含的jar包 把这里的所有的jar包拷贝到项目的 WEB-INF目录下的lib文件夹下面。 2、配置struts.xml文件 注意#xff1a;必须要放在… Struts2学习总结完整版 一、搭建struts2环境 1、jar包的导入 主要是到 解压其中的一个工程得到里面lib下包含的jar包 把这里的所有的jar包拷贝到项目的 WEB-INF目录下的lib文件夹下面。 2、配置struts.xml文件 注意必须要放在src目录下因为struts2源码就是这样设计的只有在src目录下才读取得到。 每一个package都要extends”struts-default”namespace 是 访问的路径 Action中的name和 package中的namespace组成完整的访问路径 3、配置web.xml filter filter-nameaction2/filter-name filter-class org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter /filter-class /filter filter-mapping filter-nameaction2/filter-name url-pattern/*/url-pattern /filter-mapping 4、编写的Action类都要继承ActionSupport类或者implements Action接口 默认action类访问的是里面的execute方法 如果要访问特定的方法可以这样 1在action 后面指定 method“方法名” 2使用通配符 action name”example_*” class”com.XX.YY.ZZ” method”{1}” / 3使用动态表达式 比如example!execute(不常用) 5、接收表单提交的数据 (1)属性驱动获取表单参数 --在action类中定义与表单的input中 name 一样的属性必须一样否则注入不进去 同时还要生产属性对应的set 方法因为 action类要调用set方法把表单中的参数注入到属性中 (2)模型驱动获取表单参数 --模型驱动首先action类要实现ModelDrivern然后重写getModel方法 --在action类中声明并创建接收表单参数的实体类Student user new Student --原理分析struts2调用action类的getModel方法得到user对象然后利用user对象里面的set属性的方法设置user对象的属性值 --注意表单的参数name必须要跟Student的属性值一致否则注入不进去。 (3)表达式驱动获取表单数据 --表单提交的时候要注明是哪个类的比如user.name --然后action类要生成user对象的get方法可以让struts2获取到action中user对象然后调用user对象里面的get set方法把参数注入到user对象的属性中去。 --表达式驱动的方式的好处是表单可以传递多个不同pojo的对象上来比如不仅可以上传user的也可以上传book的。这样在表单中input中表明 name的时候写上 user.xxx book.xxx。 --表达式还支持 map 和 list 表单可以同时上传多分一样的参数不常用 Map[“one”].name - getMapString , Student List[0].name - getListStudent 下面的图是参考这货的 http://www.cnblogs.com/lolybj/tag/struts2/ 6、把要显示的数据传给前端JSP页面 原理是利用到struts2的值栈空间每一次request请求都会重新创建出一个action类出来然后在执行action类的方法之前要经过一系列拦截器的拦截比如ModelDrivern过滤器进行表单参数的注入。放行后才执行action方法。 以下是action类在值栈中设置数据的三种方法 1、执行action方法的时候可以获取ValueStack并向ValueStack中插入数据。 2、直接在action类中定义pojo类并创建好实例生成get方法方便jsp那边获取。 3、直接在action类中定义list对象并将pojo类存入到list对象中去。 设置完之后就会跳转到指定的jsp页面。 在指定的jsp页面中必须导入% taglib uri/struts-tags prefixs % Struts2的表达式其实这个表达式底层调用的是ognl表达式所以一开始的时候要导入ognl表达式的jar包。 Jsp中获取值栈的数据。有3中方式 1、s:property value”插入值栈的变量名”/ 2、s:iterator value”list” s:property value”user.username”/ //对象名称.对象属性 s:property value”user.password”/ /s:iterator 3、s:iterator value”list” var”user” s:property value”#user.username”/ //对象名称.对象属性 s:property value”#user.password”/ /s:iterator 第3种为什么要加#号那是因为 iterator遍历的时候先把list中的元素对象先存储到context的值栈空间里context值栈空间的数据结构是map 的。所以要提供user作为键值获取到user对象然后根据对象的get方法得到user的属性值。 这里要说明一下action的值栈空间有两部分组织一部分是root空间数据类型是list类型的另一部分是context空间数据类型是map的。 7、最后是拦截器 拦截器和过滤器是不同的概念的东西 过滤器在容器上运行的会过滤html、image... 网页文件。理论上是过滤所有的网页的 拦截器只是拦截某一个action操作的 拦截器主要运用是 AOP 和 责任链的设计模式。所以可以做到在创建action类对象后但是在执行action方法之间执行。 posted on 2017-03-17 14:57 卧似长剑 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/chencanjian/p/6566186.html