Struts2_Action
来源:互联网 发布:宝贝标题优化技巧 编辑:程序博客网 时间:2024/06/05 15:38
从ActionSupport继承,按照约定写好方法add等,用Domain Model接收参数,需要访问session用IOC访问
- Helloworld~
- copy struts.xml → src
- add (类库 .jar 文件) → lib
- 配置web.xml
- action执行过程
- struts2作用是把请求和视图分开
- struts2永不会有线程同步的问题,每次访问action都会自动new一个新对象
- namespace
- 决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.action.namespace最好也用模块来进行命名
- 具体视图的返回由用户自己定义的action来决定。具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容。具体action的实现可以使一个普通的java类,里面有public String execute方法即可,或者实现action接口。不过最常用的是从actionsupport继承,好处在于可以直接使用Struts2封装好的方法。
- struts中的路径问题
- 是根据action的路径而不是jsp路径来确定,尽量不要使用相对路径index.jsp。解决方法统一使用绝对路径(在jsp中用request.getContextRoot方式拿到webapp的路径)或指定basePath。String path = request.getContextPath();//取得webapplication项目路径 。String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";//取得http、localhost、8080、path字符串,获得绝对路径http://localhost:8080/webapp/
- 实现action最常用的方法,从ActionSupport继承。
- 1)如果你的Action类是继承自ActionSupport的话,确切的说是重写了execute方法,ActionSupport里的默认实现就是返回"success"视图。因此,你可以不实现execute方法,只要你的struts.xml里有"success"对应的result即可。2)如果你的Action类没有继承ActionSupport,而你又没有在struts.xml中对应<action>标签中用method属性指定你自己的方法的话,默认就要找execute方法,这时是必须要实现execute方法的,否则Struts2会找不到对应的方法而报错。不过,大部分情况下都是继承ActionSupport的(比如输入验证、文件上传等功能就要求必须继承)。还有,不管你写没写execute方法,还是可以用<action>标签的method属性指定其他方法的。
- action执行时不一定要执行execute方法,可以在配置文件中配置action是用method=来指定执行那个方法,也可以在url地址中动态指定(动态方法调用DMI 推荐),叹号!调用action的方法。例:http://localhost:8080/struts2_user/user/user!add
- 开发模式: 在struts.xml中设置 <constant name="struts.devMode" value="true" />
- 对于请求,action先匹配最精确的,包括*的则看action前后位置
- 通配符:将配置量降到最低,约定优于配置
- <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result> </action>
- 接收参数:
- action属性接收 例: http://localhost:8080/struts2_user/user/user!add?name=a&age=8
- Domain Model → DTO数据传输对象 最常用 Private User user;getUser,setUser
- Model Driven → MVC(M:model→User V:view→.jsp C:control→action)
- 简单参数验证 this.addFieldError("name","value");
- 调用struts2标签库 <%@taglib uri="/struts-tags" prefix="s"%> (uri指定taglib在什么位置,prefix指定标签前缀)
- 不常用标签 <s:fielderror fieldName="name"/> 固定xhtml为展现标签的默认主题
- 常用标签 <s: property value="errors.name[0]"/> (取得action属性中value stack的内容)
- 常用debug标签 <s:debug></s:debug>
- 访问web元素
- 取得Map类型(request,session,application) 依靠struts容器 或 Ioc(inverse of control)
- <s:property value="#request.r1"/> (取得action属性中stack context的内容,需要加#)
- 取得真实类型 (HttpRequest,HttpSession,ServletContext)
- 包含文件配置 <include file="login.xml"/>
- 默认action <default-action-ref name="index"></。。。>
0 0
- Struts2_Action
- Struts2_Action获取Scope对象
- struts2_Action笔记2
- struts2_action中重定向
- Struts2_Action的配置
- 2、struts2_action详解
- (05)Struts2_Action概述
- 6.Struts2_Action 概述
- 5.Struts2_Action 概述
- Struts2_Action记录在线人数实例
- Struts2_Action名称的搜索顺序
- struts2_Action之间的重定向传参
- struts2_Action之间的重定向传参
- Struts2_Action访问与Action方法调用
- Struts2_Action中result的各种转发类型
- Struts2_action的type属性redirect和redirect-action区别
- struts2_Action、拦截器、值栈、OGNL表达式、ModelDriven实现方案
- Android:用Handler实现异步处理功能
- php配置php-fpm启动参数及配置详解
- cocos2d-x控件CCEditBox详解
- Protobuf学习(1)
- 改变UITableViewCell的imageView的大小(cell.imageView)
- Struts2_Action
- 网络编程练习-unix域套接字
- CEGUI中文显示提速
- 【整理】MySQL引擎
- NYOJ-题目(Math)--139-------------------------我排第几个
- ERROR合集(个人调试笔记)
- Oracle CLOB 字段插入时提示字符过长
- poj_1845
- maven 本地安装库