Struts2配置详情
GPR原则:登录
给用户看一眼 get
用户填写登录信息,点击登录 post
页面跳转欢迎界面 redirect
*可以将核心过滤器看成是Action类的中央调度器。
2.Struts.xml 节点详细讲解
namspace作用:隔离不同的命名空间下的逻辑同名的Action
几个文件的执行顺序
1.default.property
2.struts-default.xml
3.struts-plugin.xml
4.struts.xml
5.struts.property
6.web.xml
3.常量配置
<!--修改Struts.xml,不用重启容器-->
<constant name="struts.devMode" value="true" />
4.动态方法调用(DMI Dynamic Mehtod Invocation) RMI Remote Method Invocation 远程方法调用
当一个Action中有多个业务方法的时候,我们要向让客户端请求能匹配到对应的方法,我们现在的做法
定义多个Action节点,我们又想到了,如果Action节点很多,维护起来很不方便。
1.开启动态方法调用
2.配置
通过!访问方法 actionName!list actionName!del(Action类中的真实方法) 可能会注入
缺点:
5.通配符 *_* 万象归终 四两拨千斤
使用一个节点 实现整个软件所有的Action best prectice 约定由于配置
6.ResultType 结果类型
dispatcher 普通转发到视图页面 (默认值) ->转发
redirect 重定向到视图页面
redirectAction 重定向到Action
chain 转发到Action
plainText
转发到Action :type="chain"
<result name="list" type="chain">
<param name="actionName">userActionResultAdd</param>
<param name="namespace">/</param>
</result>
案例:
Action类:
package cn.happy.struts04;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by linlin on 2017/10/23.
*/
public class FirstAction extends ActionSupport{
public String list(){
System.out.println("list");
return "list";
}
public String del(){
System.out.println("del");
return "del";
}
}
Struts-04 单独的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<!--动态方法调用 默认 true-->
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false"/>-->
<package name="day-04" namespace="/" extends="struts-default">
<action name="list" class="cn.happy.struts04.FirstAction" method="list">
<result name="list">/day04/list.jsp</result>
</action>
<action name="del" class="cn.happy.struts04.FirstAction" method="del">
<result name="del">/day04/del.jsp</result>
</action>
</package>
</struts>
案例2:
package cn.happy.struts05;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by linlin on 2017/10/23.
*/
public class FirstAction extends ActionSupport{
public String list(){
System.out.println("list");
return "list";
}
public String del(){
System.out.println("del");
return "del";
}
public String add(){
System.out.println("add");
return "add";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<!--动态方法调用 默认 true-->
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false"/>-->
<package name="day-05" namespace="/" extends="struts-default">
<action name="*_*" class="cn.happy.struts05.{1}" method="{2}">
<result name="{2}">/day05/{1}/{2}.jsp</result>
</action>
</package>
</struts>
、
案例3:
Action从定向转发。。。。
package cn.happy.struts06;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import javax.xml.soap.SAAJResult;
import java.util.Map;
/**
* Created by linlin on 2017/10/23.
*/
public class FirstAction extends ActionSupport{
public String list(){
Map<String,Object> request= (Map<String,Object>)ActionContext.getContext().get("request");
request.put("uname","张三");
System.out.println("list");
return "list";
}
public String del(){
System.out.println("del");
return "del";
}
public String add(){
Map<String,Object> request= (Map<String,Object>)ActionContext.getContext().get("request");
Object uname=request.get("uname");
System.out.println(uname);
request.put("info","数据");
System.out.println("add");
return "add";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<!--动态方法调用 默认 true-->
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false"/>-->
<package name="day-06" namespace="/" extends="struts-default">
<action name="userActionResult" class="cn.happy.struts06.FirstAction" method="list">
<result name="list" type="chain"><!--/day06/FirstAction/list.jsp-->
<param name="actionName">userActionResultAdd</param>
<param name="namespace">/</param>
</result>
</action>
<action name="userActionResultAdd" class="cn.happy.struts06.FirstAction" method="add">
<result name="add">/day06/FirstAction/add.jsp</result>
</action>
</package>
</struts>