Struts2学习笔记(1)之Action
来源:互联网 发布:观山4字能值多少钱知乎 编辑:程序博客网 时间:2024/06/07 03:41
Action
URL的拆分
1. 除工程名外,其余部分分为2部分。一是用来对应package,二是用来对应package内的action。
2. Namespace决定了action的访问路径,默认为””,可以接收所有路径的action
nameSapce可以写为/,或者/xxx,或者/xxx/yy.对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.action
namespace最好也用模块来进行命名
3. action:struct2中每次请求都会创建一个action。
4. 进入到action中
1) 若后面有Class,首先创建这个action的类,然后默认调用这个action类中的execute方法,根据返回String类型的值执行result,显示视图。
2) 若没有默认是ActionSupport类中的execute,其中的方法只返回success。
具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
实现一个Action的常用方式
1. 具体Action的实现可以是一个普通的java类,里面有public String execute方法即可
2. 者实现Action接口
3. 不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法
Path路径问题:
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。即在” http://localhost:8080/Struct_day1/path/”添加index.jsp
1. 解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
2. 或者使用myeclipse经常用的,指定basePath
<%
String path = request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
在head中设置:<basehref="<%=basePath %>>"/>
在Action中指定方法执行
1. Action执行的时候并不一定要执行execute方法可以在配置文件中配置Action的时候用method=来指定执行哪个方法
2. 也可以在url地址中动态指定(动态方法调用DMI)(推荐)
<ahref="<%=context %>/user/userAdd">添加用户</a>
<br/>
<ahref="<%=context %>/user/user!add">添加用户</a>
<br/>
前者会产生太多的action,所以不推荐使用
3. 使用通配符*:可将配置降到最低
1) 在action中根据分割的通配符会获得{1}、{2}… …参数。
2) 在method=”???”中可以使用通配符所得到的参数{1}、{2}… …
3) 在result中显示的资源也可以通过通配符拼接得到。
接收参数的三种方式
1. 用属性来接收:Struct在创建Action的实例时,直接将参数赋给了这个action的实例。(action类中有定义了接收参数的成员变量)。
2. DemainModel:通过一个对象来接收。Struct会帮我们自定创建对象。
1) 创建一个user bean
2) 在action中定义一个成员变量user,写get和set方法。
3) <ahref="user/user!add?user.name=a&user.age=8">添加用户</a>
4) 在Action中可直接通过user获得值。
3. 通过ModelDriven<User>接收
1) action实现ModelDriven<user>接口
2) 创建一user对象,并调用构造器创建实例。
3) 重写getMode()方法。
错误校验信息
使用addFieldError方法和s:filedErrot标签简单处理数据校验。
1. Action中通过addFieldError(“name”,value)的方法,加如错误信息。即放入值栈中
2. 在jsp中通过s:fieldError、s:property两种方式通过name获得错误信息
Struts访问WEB元素
获取request、session、application、HttpServletRequest、HttpSession、
ServletContext的引用:
1. 方式一通过ActionContext获取:(前三种)
1) Request的获取:ActionContext.getContext().get(“request”);
2) Session的获取:ActionContext.getContext().getSession();
3) Application的获取:ActionContext.getContext().getApplication();
4) 分别获得Map类型的对象,通过put(name,value)方法添加数据。
5) Struts2,会自动将map遍历添加到相应的域对象中。在前台可直接通过域对象获取。
2. 控制反转方式/依赖注入:(前三种)这种最常用,最重要
1) Action实现RequestAware、SessionAware、ApplicationAware。
2) 实现相应的get方法,获得的是Map类型的相应属性。
Struts2调用action的时候发现这个Action实现了RequestAware、SessionAware、ApplicationAware这些接口中的一个或多个。那么,struts2就需要调用他们的抽象方法,将对象向注入进去。
3. 方式三通过ServletActionContext获取(后三种)
4. 方式四,依赖注入(后三种)
默认action处理
<default-action-ref name=”index”></default-action-ref>:作用是如果在package中中不到指定的action,这默认使用name所指定的那个action。
意义:使网站更加友好。
- Struts2学习笔记(1)之Action
- Struts2学习笔记之action
- 【笔记】Struts2学习笔记(三)--Action
- Struts2学习之Action
- struts2学习笔记(3)-------配置Action
- 实现Action---struts2学习笔记
- 配置Action---struts2学习笔记
- struts2学习笔记 配置action
- Struts2 学习笔记03 Action
- struts2学习之---配置Action
- struts2学习之---实现Action
- struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)
- J2EE系列之Struts2学习笔记(十)--动态方法调用以及Action的生命周期
- struts2学习笔记(三) Action(上)
- Struts2学习笔记(四) Action(中)
- Struts2学习笔记(五) Action(下)
- struts2学习笔记(三) Action(上)
- Struts2学习笔记(四) Action(中)
- [搬运]扫盲 HTTPS 和 SSL/TLS 协议
- 《剑指offer》-替换空格
- UITableViewCell加载网络图片自适应cell高度初探索
- HDU3533 - Escape
- XMind和MindManager,思维导图软件学习使用心得
- Struts2学习笔记(1)之Action
- 浅谈block的基本使用和基本认知.
- 如何给SwipeRefreshLayout同时实现下拉刷新和上拉加载
- raspberry install mysql-connector-python
- 【CODEFORCES】 C. Bits
- 【慕课笔记】第七章 方法 第1节 如何定义JAVA中的方法
- UIMenuController的使用
- 寒假练习1_A
- 理论: STL(1): set