struts2 总结
来源:互联网 发布:知天命之年的古诗词 编辑:程序博客网 时间:2024/05/22 12:49
Struts2体现了MVC模式:各种action是C,后台数据结构是M,jsp页面是V
一个cction对应一个或多个result,
<action name="login" class="com.ustc.css.action.LoginAction"><result name="error">error.jsp</result> <result name="success">success.jsp</result>
result通常有两个属性:
name:指定所配置的逻辑视图名(可以不写,默认为“success”)
type:指定结果类型(可以不写, 默认为“dispatcher”)
Struts.xml中,使用开发者模式 便于调试:
<constant name="struts.devMode" value="true" />
namespace决定了action的访问路径,默认为“”,可以接收所有路径的action
namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action 或/xxx/yyy/index.action
namespace最好也用模块进行命名
Struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然 可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到websspp的路径)或者使用myeclipse经常用的,指定basePath
Action在执行的时候并不一定要执行execute()方法
一般action类继承ActionSupport类
可以在配置文件中配置Action时用method=xxx来指定执行哪个方法,也可以在url地址中动态指定(动态方法调用DMI)(推荐)。
前者会产生太多的action,所以不推荐使用
package com.bjsxt.struts2.front.action;import com.opensymphony.xwork2.ActionSupport;public class IndexAction3 extends ActionSupport { @Override //重写父类的execute方法 public String execute() { return "success"; }}
使用通配符,将配置降到最低
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts SYSTEM" http://struts.apache.org/dtds/struts-2.0.dtd" PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"><struts> <constant name="struts.devMode" value="true" /> <package name="actions" namespace="/actions" extends="struts-default"> <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}"> <result>/Student{1}_success.jsp</result> </action> <!—多个通配符用法—> <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result><!-- {0}_success.jsp --> </action> </package></struts>
不过一定要遵守“约定优于配置”原则,看下面struts.xml:
*为通配符,对于action:Student,所有的Studentxxxx(后面跟任何东西)都匹配这个action。对于method=”{1}”,{1}对应前面的内容,然后调用Student里的相应方法。
对应result定位至/Student{1}_success.jsp,这个{1}也是*中内容
紧接着代码示例多个通配符*用法:
action name=”_“匹配两个字符串a,b,{1}表示第一个(字符串a),{2}表示第二个(字符串b内容)。例如访问http://localhost:8080/项目名/actions/Teacher_add
则匹配com.bjsxt.struts2.action.TeacherAction类,调用add方法,并定位至
Teacher_add_success.jsp
好处:使配置文件具有通用性,降低了工作量,可以少写action
注意:匹配action时首先查找精确匹配,匹配不上才检测通配符。若都是通配符,则优先匹配写在前面的
使用action属性接收参数:
方法一:在url里面写参数。url末尾加上?参数1=xxx&参数2=xxx&参数3=xxx,以此类推。
参数可以和class里面的成员变量一一对应(内部机制:Struts自动调用get,set方法,前提是要写好)
方法二:使用domainModel。 即用对象来接收参数:url末尾加上
?user.name=xxx&user.age=xxx
其中user是User类的一个对象,方法二相当于方法一基础上又加了一层
方法三:ModelDriven
package com.bjsxt.struts2.user.action;import com.bjsxt.struts2.user.model.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); public String add() { System.out.println("name=" + user.getName()); System.out.println("age=" + user.getAge()); return SUCCESS; } @Override public User getModel() { return user; }}
中文问题:在struts.xml中加入:
<constant name="struts.i18n.encoding" value="GBK"/>
ACTION 总结
1. 实现一个action的最常用方式:从ActionSupport继承
2. DMI动态方法调用
3. 通配符配置_ {1}{2}
4. 接收参数的方法(一般用属性或者DomainModel来接收)
5. 简单参数验证addFieldError
a) 一般不使用呀struts2 的UI标签
6. 访问web元素
a) Map类型
i. IoC(控制反转)
ii. 依赖struts2
b) 原始类型
i. IoC(控制反转)
ii. 依赖struts2
7. 包含文件配置
8. 默认action处理
- [Struts2]Struts2学习总结
- 【Struts2框架】Struts2总结
- 【Struts2】Struts2要点总结
- struts2 总结
- Struts2总结
- struts2总结
- Struts2总结
- struts2总结
- struts2总结
- Struts2总结
- Struts2总结
- struts2 总结
- struts2总结
- struts2总结
- Struts2总结
- STRUTS2总结
- struts2 总结
- struts2总结
- 从零开始,快速地在VMware虚拟机下搭建一个DB2 DPF环境
- RecyclerView横向和竖向滑动冲突
- 五.shiro授权入门
- 在编程中的小技巧
- 分治策略—归并排序
- struts2 总结
- 使用filter解决xss攻击
- 【旧资料整理】MFC--去除浮动工具栏(CToolBar)或浮动边栏(CDialogBar)关闭按钮真正有效的方法
- React入门
- 芯片解密STM8S903K3/STM8S003F3破解意法单片机程序提取
- 数字签名原理及其应用
- 常用的算法设计方法
- RecyclerView横向滑动没停止时竖向不能滑动冲突
- 关于eclipse部署到tomcat的项目可正常访问,而单独打包为.war放在tomcat的webapps下的项目无法正常访问的解决思路