码迷,mamicode.com
首页 > 其他好文 > 详细

struts学习总结

时间:2017-12-08 16:33:32      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:表示   input   方法   动态配置   package   dom   src   技术   glob   

-- struts2 是在struts1和webwork基础上发展的全新框架。

-- struts2解决的问题:
原始的servlet中,每需要操作一个crud的操作就要创建一个servlet,虽然后面
使用了baseServlet,但是还是不够好。struts2就是用来解决这个问题的。
解决问题的原理:使用过滤器,根据不同的请求来执行同一个类(Action --> 由form
表单中的action属性得来)中的不同方法

--- 过滤器服务器启动就创建,servlet默认第一次访问创建
struts2访问流程:浏览器地址栏输入地址->进入struts过滤器

-- struts2过滤器(StrutsPrepareAndExecuteFilter)所做的工作:
1.获取请求的链接、得到路径中的最后一个‘/’后的值,例如:demo(.action)。
2.得到src下面的struts.xml,使用dom4j解析获取得到xml文件中的内容,拿着demo值得
到xml文件中找action标签,匹配name值是否一样。
3.匹配action标签后,找到该action标签中的class,使用反射创建class对于的类,并
执行里面的execute方法。
4.得到execute执行后的返回值,再到struts.xml中去寻找与result标签,匹配到result
标签中的name属性后,跳转到result标签中规定的页面中去。

-- 过滤器在服务器启动的时候通过执行init()方法来创建
init()方法中主要加载配置文件,包括我们创建的和struts2自己的配置文件 -->重
点struts.xml和web.xml

-- struts2核心配置文件
标签
-- package:类似于代码包,区别不同的action
-- name属性:属性值和功能本身是没有关系的。配置文件中可以有多
个,但是name值不能相同。
-- extends属性:extends="struts-default",固定写法。让类具有、
Action功能
-- namespace属性:和action标签构成访问路径。
-- action :配置action的访问路径
-- name:和package中的namespace构成访问的路径,可以有多个但是
不可name值不可重复
-- class:action全路径
-- method:请求的方法,指定action要执行的方法
-- result:根据action的方法的返回值,跳转到不同页面
-- name属性:和方法返回值一样
-- type属性:配置跳转页面的方式(转发或者重定向),默认是转发

-- 修改struts2默认常量值
在struts.xml中配置
<constant name="struts.i18n.encoding" value="UTF-8"></constant>

处理了post提交的中文乱码

-- struts2分模块开发:就是创建不同的action的配置文件,最后在struts中使用
include标签包含进去。

-- struts2 中Action的编写方式
1.一个普通类 写execute()方法就行
2.实现Action接口
3.继承ActionSupport类 --推荐

-- struts2访问方法的方式
1.在配置文件中的action标签中配置method属性 --缺陷:每个方法都要配置一个
action
2.通配符 *:--- *匹配任意值 {index} index为int值,例如:{1},表示取第几个*的

技术分享图片

技术分享图片

例如访问m1方法,地址栏输入:http://localhost:8080/struts2/hello_m1,即可。

3.动态配置 --不使用


-- struts2 全局结果配置
适用于 返回的结果和跳转的页面一致的时候使用
<global-results>
<result name="success">success.jsp</result>
</global-results>

-- struts2 局部结果配置
就是在action标签中的result标签,局部结果配置优先于全局结果配置

-- result 的type属性
type属性:配置如何到路径里面(转发还是重定向)
-- 默认值:转发。值是:dispatcher
-- 重定向 值是:redirect
---------上面两种针对的是页面
-- chain:转发到另一个Action ---- 一般不用
-- redirectAction:重定向到另一个Action

-- action获取表单提交数据的三种方式
(1)使用ActionContext类
(2)使用ServletAcitonContext类
(3)使用接口注入,实现一个ServletRequestAware接口 -- 一般不用

-- struts2封装获取数据
-- 属性封装:Action中定义与数据同名的成员变量并写出与其对应的set方法
,他只能把数据保存到属性里面,但是无法直接封装到实体类中。 -- 不常用

-- 模型驱动封装:直接把数据封装到实体类中。
实现过程:
1.实现ModelDriven;2.实现getModel方法;3.在Action成员位置中创建实
体对象,并在getModel中返回

技术分享图片

 


-- 表达式封装(也算作属性封装)。
实现过程:
1.在Action里面声明实体类
2.生成实体的get和set方法
3.form表单中的input的name属性写法为:实体对象变量名.实体属性,例
user.username ,user为User类的变量名,username为User类中的一个属性

技术分享图片

技术分享图片

 

 

 

-- 使用模型驱动和属性封装注意的问题:
不同同时使用模型驱动和属性封装来获取同一个表单数据,若同时存放,只会
执行模型驱动
--使用模型驱动只能把一个表单数据封装到一个实体类中,但是表达式封装可
以将表单数据封装到多个实体类中

struts学习总结

标签:表示   input   方法   动态配置   package   dom   src   技术   glob   

原文地址:http://www.cnblogs.com/getchen/p/8005304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!