冯君整理
第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中:
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文件
解决:非上网状态下,找不到.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所对应的-类