1.struts.xml中Namespace命名空间:
namespace在package标签中设置,决定了action的访问路径,默认为“”,可以接收所有路径的action;也可以写为“/”,或者“/xxx”,又或者“/xxx/yyy",最好用模块来命名。
2.Action使用:
在struts2中由用户自定义的action来决定具体返回的视图,而具体的手段是根据返回的字符串找到相应的配置项。Action可以有三种方式实现。
(1)一个包含public String execute()方法的普通java类:
1 public class IndexAction { 2 public String execute() { 3 return "success"; 4 } 5 }
(2)实现Action接口:
该接口只定义了一些常量并且只有一个execute方法。
1 public class IndexAction implements Action { 2 public String execute() { 3 return SUCCESS; 4 } 5 }
(3)继承ActionSupport(推荐):
此时并不需要方法的名称一定为execute。
1 public class IndexAction extends ActionSupport { 2 public String add() { 3 return "success"; 4 } 5 }
3.path及其示例程序:
现综合以上两点知识点,并重新写一个可点击跳转页面的示例程序。
(1)WebContent目录下创建两个jsp文件:
其中一个为一开始的页面index.jsp,另一个为跳转成功后的页面next.jsp(源码略)。
注意看a标签下的路径。
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>index</title> 8 </head> 9 <body> 10 <a href="turn/next.action">下一步</a> 11 </body> 12 </html>
(2)修改web.xml文件
加入如下几行代码,可以在运行项目时根目录下自动访问index.jsp。
1 <welcome-file-list> 2 <welcome-file>index.jsp</welcome-file> 3 </welcome-file-list>
(3)新建Action类
1 package com.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class NextAction extends ActionSupport{ 6 public String execute(){ 7 return "tonext"; 8 } 9 }
(4)struts.xml
注意namespace、action name、result name。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 8 9 <constant name="struts.devMode" value="true" /> 10 11 12 <package name="turn" extends="struts-default" namespace="/turn"> 13 <action name="next" class="com.action.NextAction"> 14 <result name="tonext">/next.jsp</result> 15 </action> 16 </package> 17 18 </struts>
(5)服务器上运行项目即可,点击index页面的下一步链接,会跳转到next.jsp页面。
(6)思考:
a.如果index.jsp和next.jsp不放在同一目录下会如何?
b.链接地址使用的是绝对路径还是相对路径?使用哪种方式好?