77范文网 - 专业文章范例文档资料分享平台

Struts2开发手册- 马士兵 - 图文(2)

来源:网络收集 时间:2019-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Struts学习笔记 第6页 共39页

/hello.jsp 3、复制Struts2相应的jar包及第三方包。

将空项目中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下 4、修改对应的web.xml,建立struts2的filter(参考struts自带的项目),添加如下配置:

struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*

三、 Namespace

Namespace决定了action的访问路径,默认为“”,可以接收所有路径的action,如果没有找到相应的namespace时,则使用namespace为空的action

Namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action、/xxx/index.action、或者/xxx/yyy/index.action.

Namespace最好也用模块来进行命名。

namespace :对应与项目名称后面的\例如Struts2_0100_Introduction后面的\ (http://localhost:8080/Struts2_0100_Introduction/)

四、 标签

是用来解决重名的问题,例如当系统的前台和后台都有一个action名叫hello,这时就需要用package来区分。 前台

五、 Action

具体视图的返回可以由用户自己定义的Action来决定

具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容,有三种手段:

Struts学习笔记 第7页 共39页

/ActionIntroduction.jsp 注:标签中的class属性是表示action的对应的类(这个类是一个普通Java类),当访问这个action时会创建这个类成为一个对象,然后执行这个对象中的execute方法()(execute方法返回类型为String)。 第一种:Action 普通Java类 public class IndexAction1 { } 当标签中class属性省略时,则默认执行com.opensymphony.xwork2.ActionSupport类中的public String execute() { } return \; execute方法,而这个方法返回一个字符串常量SUCCESS(常量值为:”success”). 第二种:Action 实现com.opensymphony.xwork2.Action接口,这个接口中定义了一些常量和一个execute方法,我们重写execute()方法就可以了。 import com.opensymphony.xwork2.Action; public class IndexAction2 implements Action { } @Override public String execute() { //return \ return this.SUCCESS; //SUCCESS常量值为:\ } Struts学习笔记 第8页 共39页

第三种:Action 继承com.opensymphony.xwork2.ActionSupport类,而这个类又实现了com.opensymphony.xwork2.Action接口,我们重写execute()方法就可以了。 import com.opensymphony.xwork2.ActionSupport; public class IndexAction3 extends ActionSupport { } 注:第三种Action是我们需要使用的方式,因为这个类不担实现了com.opensymphony.xwork2.Action接口,更重要的是它已经帮我封装了许多其它有用的方法。 六、 路径问题的说明

@Override public String execute() { //return \ return this.SUCCESS;//SUCCESS常量值为:\ } struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。 虽然可以用redirect方式解决,但redirect方式并非必要。 解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径) 或者使用myeclipse经常用的,指定basePath

还有另一种方式,就是在标签中,指定标签值,这样就使用统一绝对路径。

<% String path = request.getContextPath();// String basePath = request.getScheme()+\+request.getServerName()+\+request.getServerPort()+path+\; %> \/> ???? 注:标签:当前页面中所有连接都会在前面加上base地址。 七、 Action的动态调用方法

Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法: 1、 方法一(通过methed属性指定执行方法):

可以在配置文件中配置Action的时候用method=来指定执行哪个方法

/user_add_success.jsp 这样,只要在action的对象中有一个add的方法,并且返回类型为String就可以了。如果没有method属性,则默认执行execute()方法。 import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { } public String add() { return SUCCESS; }

2、 动态方法调用DMI(推荐)

Struts学习笔记 第9页 共39页

可以在url地址中动态指定action执行那个方法。Url地址如下: http://localhost:8080/Struts2_0500_ActionMethod/user/user!add 方法:action + ! + 方法名 注:只要Action对象中有这个方法,并且返回类型为String就可以调用。 这样Struts.xml配置文件中不需要配置methed属性。代码如下: /user_add_success.jsp Action类: public class UserAction extends ActionSupport { } 总结:推荐使用第二种动态方法调用DMI,因为第一种需要大量的Action配置,后者可以在url中动态指定执行action中哪个方法。 八、 Action通配符(wildcard)的配置

使用通配符,将配置量降到最低, 不过,一定要遵守\约定优于配置\的原则 1、 通配符 星号(*) 表示所有 {数字} 表示第几个通配符 例如:Student* 那么{1}代表第一个星号(*) 2、 实例 *_* 那么{1}代表第一个星号(*) ,{2}代表第二个星号(*) public String add() { return SUCCESS; } /Student{1}_success.jsp /{1}_{2}_success.jsp 解释:第一个Action的名称为name=”Student*” method=”{1}”,表示所有Action以Student开始的都会执行这个Action,并且执行Student后字符为方法名的方法,例如:访问的Action为Studentadd,会执行这个Action(Student*),并且执行add的方法.因为{1}在这里代表add,并且返回/Studentadd_success.jsp页面。 第二个Action的名称name=”*_*” method=”{2}” class=”?action.{1}Action” 表示所有Action中包含下划线(“_”)都会执行这个Action,例如:Teacher_add,那么会执行这个Action,并且Action对应的类为TeacherAction,且执行Action中的add方法,返回结果页面为/Teacher_add_success.jsp,因为在这里的{1}表示Teacher,{2}表示add 3、 匹配顺序 当匹配的Action有两个以上时,则会按匹配精确度高的那个Action,当有个相同的匹配精确度时,则按先后顺序进行。

九、 Action的属性接收参数

Action中三种传递并接受参数:

Struts学习笔记 第10页 共39页

1、 在Action添加成员属性接受参数

例如请求的URL地址:

http://localhost:8080/Struts2_0700_ActionAttrParamInput/user/user!add?name=a&age=8 其中传递了两个参数:name和age,其值分别为:a、8,此Action执行的是add()方法。 那我们只要在user这个Action对象中添加这两个成员属性并生成set、get方法。

public class UserAction extends ActionSupport { } 2、 域模型(Domain Model)

就是利用对象域来进行传递和接受参数 例如请求的URL地址:

http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name=a&user.age=8 其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”

利用对象域user来传递参数,为对象的属性赋值(user.name=a user.age=8) 注:需要一个对象user 并且这个对象需要有两个成员属性,且具有get、set方法。 然后在Action中添加一个User对象的成员属性。并且有get、set方法,就可以了。

private String name; private int age; public String add() { } public String getName() { } public void setName(String name) { } public int getAge() { } public void setAge(int age) { this.age = age; } return age; this.name = name; return name; System.out.println(\ + name); System.out.println(\ + age); return SUCCESS; //User对象 public class User { private String name; private int age; public String getName() { } public void setName(String name) { this.name = name; return name;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Struts2开发手册- 马士兵 - 图文(2)在线全文阅读。

Struts2开发手册- 马士兵 - 图文(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/572920.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: