版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、struts2 尚学堂视频笔记一、struts2 准备工作1、struts2环境搭建1. 下载struts2.1.6 /download.cgi#struts217(选择下载full distribution)2.下载myeclipse,3.下载tomcat,4.下载xwork,/xwork (要注意的是下载与struts2.1.6的对应版本,即2.1.2)第一个struts2项目1、新建javawe
2、b项目2、加入如下jar* struts-appsstruts2-blank-web-inflib*.jar3、 拷贝struts-appsstruts2-blank-web-infsrcjavastruts.xml到项目的src目录下4、 拷贝struts-appsstruts2-blank-web-infweb.xml到项目的web-inf下(覆盖)其他a) 学习建立struts的dev-mode,好处在于我们修改了配置文件的时候能够自动热换b)建立jar文件对应的源码d:/share/tools/stru
3、ts-2.1.6/src/core/src/main/java,以及xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的user-library)c) 浏览struts的目录d) 认识eclipse jee的项目部署目录,认识如何修改webapp的context-root,项目copy改名后可能会出现的问题(右键项目properties-myeclipse-web-webapp context-root)e) package explorer 建立jar的源文件和目标关联,navigator 观察所有的内容f) 认识action的后缀名,在struts2默
4、认中,带不带action都可以2、关联struts2源码与api关联x-work相同1)关联源码2) 关联doc : struts2的api注: 关联后在选中java文件中的类 点f1键即可看到api链接 点 出来的链接即可查看api二、struts 基础namespace的用法(struts.xml)namespace决定了action的访问路径,默认为,可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action, /xxx/index.action,或者/xxx/yyy/index.action.n
5、amespace最好也用模块来进行命名 action 1. struts2中每次访问action都是重新生产一个action的对象,这样就不存在线程同步问题。而struts1共用一个action。2. 具体视图的返回可以由用户自己定义的action来决定3. 具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容4. 具体action的实现可以是一个普通的java类,里面有public string execute方法即可或者实现action接口5. 不过最常用的是从actionsupport继承,好处在于可以直接使用struts2封装好的方法path_路径问题struts2中的路径问
6、题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径index.jsp虽然可以用redirect方式解决,但redirect方式并非必要。解决办法非常简单,统一使用绝对路径。在jsp中用request.getcontextroot方式来拿到webapp的路径 或者使用myeclipse经常用的,指定basepathactionmethod_dmi_动态方法调用.action执行的时候并不一定要执行execute方法可以在配置文件中配置action的时候用method=来指定执行哪个方法也可以在url地址中动态指定(动态方法调用dmi)(推荐)a href=/user/us
7、eradd添加用户struts.xml/user_add_success.jspa href=/user/user!add添加用户struts.xml/user_add_success.jsp前者会产生太多的action,所以不推荐使用action wild card_通配符配置1、页面使用通配符,将配置量降到最低a href=/actions/studentadd添加学生a href=/actions/studentdelete删除学生不过,一定要遵守约定优于配置的原则a href=/actions/teacher_add添加老师a href=/actions/teacher_delete删
8、除老师a href=/actions/course_add添加课程a href=/actions/course_delete删除课程2、struts.xml/student1_success.jsp/1_2_success.jspaction的接收参数用action的属性接收参数1、在action类中加属性string name, integer age , 生成对应的get和set方法2、使用action属性接收参数添加用户用domainmodel接收参数1、在action类中加属性user user , 生成对应的get和set方法(实际开发用userdto)2、使用domain mode
9、l接收参数添加用户用modeldriven接收参数 1、action类 implements modeldriven 2、在action类中加属性 user user = new user() 3、使用modeldriven接收参数添加用户struts2_2.1.6版本的中文问题struts2_2.1.6 有bug 中文问题不关用。简单数据验证useraction.java add.jsp 两种方式取fielderror的值1.用标签2.用配合ognl表达式 从value stack contents 中取erros值。用还可以访问 stack context 中的值 action中访问web
10、元素(request,session,application) 页面user_login_success.jsp1) 取map形式的web元素方式一 2) 取map形式的web元素方式二 (最常用) 继承接口的方式设置request、session、application3) 取原型的web元素方式三 通过servletactioncontext取request 4) 取原型的web元素方式四 继承接口自动注入struts.xml 中把其它配置包含进来struts.xml 设置default-action注意:当访问的action不存在时,跳转到指定的default-action指定的acti
11、on处理结果类型 result_type1) 最常用的result type /r1.jsp(不可以指定action) /r2.jsp(不可以指定action) r1(forward到指定action) r2(redirect到指定action) 2) forward到另外一个namespace的action dashboard /secure 3) global results 全局结果集 /main.jsp 4) 动态result根据程序来确定struts.xml中result的值useraction.javastruts.xml5) 带参数的结果集* 客户端跳转才需要传递 (否则可以直接
12、从值栈中取)*使用$表达式不是el表达式 使用redirect类型的结果,由客户端发起第二次请求跳转到另一个jsp页面struts.xml /user_success.jsp?t=$type 页面from valuestack: 取不到from actioncontext: 取到了 ognl表达式 object graph navigate language1)访问值栈中的action的普通属性username = 2)访问值栈中对象的普通属性(get set方法) | 想初始化domain model,可以自己new,也可以传参数值,但这时候需要保持参数为空的构造方法方式一 :在action
13、中user user = new user();方式二 :http:/localhost:8080/struts2_1900_ognl/ognl.action?username=u&password=p&user.age=93)访问值栈中对象的普通属性(get set方法) 4)访问值栈中对象的普通方法 访问值栈中对象的普通方法: 5)访问值栈中action的普通方法 action中存在方法m() ,输出返回值的方法。6)访问静态方法: 属性: 访问math类的静态方法: 注:struts2.1需要在struts.xml中设置7)访问普通类的构造方法8)集合访问list:访问list中某个元素
14、:访问list中元素某个属性的集合:访问list中元素某个属性的集合中的特定值:访问set:访问set中某个元素:访问map:访问map中某个元素: | 访问map中所有的key:访问map中所有的value:访问容器的大小: | 9)过滤集合中的对象投影(过滤):投影:1.age/投影:1.age/投影:1.age = null/10)用来访问元素:什么时候valuestack中有两个action?1、struts.xml2、访问test的action,这时候valuestack中就会有两个action被压入struts generic tag标签1、 标签property: propert
15、y 取值为字符串: property 设定默认值: property 设定html: s:property value= escape=false/2、 标签set 设定adminname值(默认为request 和 actioncontext): set 从request取值: set 从actioncontext取值: set 设定范围: set 从相应范围取值: 注意:2.1中不在使用name属性set 设定var,范围为actioncontext: set 使用#取值: set 从相应范围取值: 3、 标签bean 定义bean,并使用param来设定新的属性值:*不加var只能在标签
16、里面访问,加上var就是放入actioncontext里了就可以通过拿出值4、 标签注意:% 强制把表达式转换成ognl表达式include _include1.html 包含静态英文文件,说明%用法5、 标签age = s:if test=#age wrong age!s:elseif test=#parameters.age0 too young!yeah!null6、 标签遍历集合: |自定义变量: |使用status: | 遍历过的元素总数: |遍历过的元素索引: |当前是偶数?: |当前是奇数?: |是第一个元素吗?: |是最后一个元素吗?:遍历 map | | 标签struts 中
17、 声明式异常1. struts.xml中 定义异常映射 /error.jsp 2. service 抛出异常给action 层3. struts 中调用该service 当调用action的中的方法时抛出异常则会被struts.xml中的配置的给拦截住,根据struts-default.xml中的配置 调用该拦截器对应类的intercept方法,然后再有拦截器指定新的result返回结果。overridepublic string intercept(actioninvocation invocation) throws exception string result; try result
18、= invocation.invoke(); catch (exception e) if (islogenabled() handlelogging(e); list exceptionmappings = invocation.getproxy().getconfig().getexceptionmappings(); string mappedresult = this.findresultfromexceptions(exceptionmappings, e); if (mappedresult != null) result = mappedresult; publishexcept
19、ion(invocation, new exceptionholder(e); else throw e; return result;4. 总结 可以配置针对action的声明式异常,也可配置全局的action的声明式异常。国际化i18n5. action package app 三种级别a. xxxaction_en_us.properties、xxxaction_zh_cn.propertiesb. package_en_us.properties、package_zh_cn.propertiesc. bbs2009_en_us.properties、bbs2009_zh_cn.properties6. struts.xml 中配置7. 在页面中用gettext取国际化文件的key方式一: 方式二: 通过标签给国际化资源文件传值。如:bbs2009_en_us.properties 8. 动态语言切换 english中文 自定义拦截器sturts.xml1. 防止重复提交input.jsp name: age: 1.页面写token标签struts.xml/addok.jsp 2.配置token/error.jsp 3.重复提交时的跳转页面类型转换一、自定义类型转换:mypointconver
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西电力职业技术学院《社会保障史》2023-2024学年第一学期期末试卷
- 吉林体育学院《解剖和生理(生理)》2023-2024学年第一学期期末试卷
- 湖南食品药品职业学院《高等数理统计一》2023-2024学年第一学期期末试卷
- 湖南大众传媒职业技术学院《国际物流与供应链管理》2023-2024学年第一学期期末试卷
- 【物理】《压强》(教学设计)-2024-2025学年人教版(2024)初中物理八年级下册
- 高考物理总复习《力与物体的平衡》专项测试卷含答案
- 年产5万台模块化操动机构及高压断路器生产线项目可行性研究报告写作模板-备案审批
- 郑州软件职业技术学院《钢结构设计B》2023-2024学年第一学期期末试卷
- 浙江电力职业技术学院《光电技术基础》2023-2024学年第一学期期末试卷
- 长安大学《个体防护》2023-2024学年第一学期期末试卷
- 污水土地处理系统中双酚A和雌激素的去除及微生物研究
- HG-T+21527-2014回转拱盖快开人孔
- JTS-167-2-2009重力式码头设计与施工规范
- DBJ-T15-81-2022 建筑混凝土结构耐火设计技术规程
- GB/T 22849-2024针织T恤衫
- 山东省淄博市2023-2024学年高二上学期教学质量检测化学试题
- 人工智能在电影与影视制作中的创新与效果提升
- 新生儿肠绞痛的课件
- 酒店民宿自媒体营销策划
- 消除母婴传播培训课件
- 通用电子嘉宾礼薄
评论
0/150
提交评论