struts2开发-传智播客 下载本文

内容发布更新时间 : 2024/9/18 6:39:48星期一 下面是文章的全部内容请认真阅读。

冯君整理

第1次课 Struts2基础及开发

案例1:搭建struts环境并进行测试 步骤1:新建web项目

步骤2:http://struts.apache.org/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.3.1.2。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。

步骤3:编写Struts2应用的配置文件

冯君整理

拷贝解压项目文件夹apps\\struts2-blank\\WEB-INF\\classes下的struts.xml文件到src下 步骤4:Struts2在web中的启动配置 步骤5:测试环境是否搭建成功 解决:退出myeclipse环境,将lib目录删除掉 再次Run as-MyEclipse Server Application OK!此时控制台显示正常启动 案例2:HelloWorld为例 步骤1:修改struts.xml文件

步骤2:新建HelloWorldAction:无侵入式的设计 冯君整理

当请求到来时,会交给action进行处理,执行其中的execute方法 步骤3:新建hello.jsp

使用EL表达式,会依次搜索request,session,application范围,为何可以直接访问到action中的属性呢?

注意EL表达式,通过反射技术调用的是getMessage方法 步骤4:如何访问部署好的项目呢?

完整路径为:http://localhost:端口/内容路径/包的命名空间/helloworld http://localhost:8080/struts2/test/helloworld

大家试试:http://localhost:8080/struts2/test/test1/test2/helloworld,这样能否访问到? Action名称的搜索顺序

1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;

3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;

4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串\),如果还是找不到,页面提示找不到action。

小结:HelloWorld程序

Action中result的各种转发类型 引入:在Struts1中:

/index.jsp//内部请求转发

/index.jsp//浏览器重定向的方式 在Struts2中

result配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有:

冯君整理

dispatcher(默认值)、 redirect 、 redirectAction 、 plainText。

大家想一下,如果采用redirect的方式,能否将重定向的页面放在web-inf目录下呢? 引导用户访问某个路径,相当于直接访问。 案例3:演示重定向方式 步骤1:修改struts.xml文件

步骤2:新建employAdd.jsp

步骤3:运行测试 案例4:

假设有下面的需求

用户列表 updateuser.jsp?username=xxx

姓名 年龄 电话号码 [修改用户]----修改界面[…]---Action中的xxx方法{ 发现用户在修改界面中的输入是无效的,此时需要

再次浏览器重定向回到修改界面,并且仍需要要将参数的值带回 }

[添加用户]

步骤1:修改HelloWorldAction

步骤2:修改struts.xml

冯君整理

注意不要漏掉$

假设要传递的是中文呢?

对URL中传递的中文进行编码

以get请求方式提交请求tomcat默认是以iso8859-1的编码进行存储的,需要转换成对应的中文UTF-8

案例5:演示redirectAction

引入:添加用户完毕又会显示用户列表,而用户列表显示有时候也是由某个Action触发。 redirectAction

修改struts.xml文件 没联网状态下struts.xml文件显示“package bzu extends undefined package struts-default”

解决:非上网状态下,找不到.dtd文件,在源文件包中搜索struts-2.0.dtd文件 Window-preferences-MyEclipse-Files and Editors-xml-xml catalog-add-File system Key type-URI value-http://struts.apache.org/dtds/struts-2.0.dtd

运行测试

http://localhost:8080/struts2/test/redirectAction.action

如果要redirectAction到另外一个包中的Action,采用依赖注入的方式 关联源代码,struts-default.xml文件中查找redirectAction所对应的-类 /WEB-INF/page/hello.jsp