1.namespace:namespace决定了Action的访问路径,默认为""(即可以不写),可以接受所有路径的Action
?若为空,即在站点的任何路径和Action之间可以随意
?如:访问http://localhost:8080/Strut2/index
若namespace为空,
即http://localhost:8080/Strut2/sdfsdf/index
或者http://localhost:8080/Strut2/dfsdf/sdfsdf/sdfsd/sdfsdf/sdfsdf/index
皆可以成功访问Action——index
2.实现Action最常用的方式,从ActionSupport继承,默认继承Action的execute()方法
?example:
class MyAction extends ActionSupport
{
@override
public String execute()
{
return "success"
}
}
3.path路径问题
?如果根据strut.xml配置文件通过fiter访问到的action的Jsp,超链接的链接地址href必须为站点绝对路径或者Action的路径
结论:全用绝对路径
通过
String path = request.getContentpath();//获取项目路径
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path +"/";
获取站点完成路径
?
4.ActionMethod方法调用
?example:
ActionClass
class MyAction extends ActionSupport
{
public String MyMethod()
{
return "success";
}
}
既可以通过方法
1.Method:
在配置文件配置
<action name="login" class="MyAction"的具体包名路径 method="MyMethod">
通过 http://localhost:8080/ProjectName/login 调用MyMethod方法
2.DMI动态方法调用
在配置文件配置
<action name="login" class="MyAction"的具体包名路径>
通过 http://localhost:8080/ProjectName/login!MyMethod?调用MyMethod方法
5.ActionWildCard通配符配置
?在struts.xml配置
<action name="*_*" class=具体包名 + 类名(1)代表第一个星号 method="(2)">
<result name="(1)_(2)">/(1)_(2).jsp</result>
6.接受参数
?方法1:用Action属性接受参数
?example:
class MyAction extends ActionSupport
{
int id;
}
http://localhost:8080/projectname/ActionName?id=value
?
?方法2:用DomainModel接受参数
?example:
class User
{
private int id;
public void SetId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
}
class MyAction extends ActionSupport
{
User user;
}
http://localhost:8080/projectname/ActionName?user.id=value
7.访问Web元素最常用方法
?访问Map型
?方法:IoC
?example:
class MyAction extends ActionSupport implements SessionAware
{
public Map<String,Object> session;
@Override
public void setSession(Map<String, Object> session)
{
this.session = session;
}
}
8.默认的Action
?example:
配置文件
<default-action-ref name="ActionName"></default-aciton-ref>
<result name="resultName">/JspName.jsp</result>
用于用户在输入的action不存在的时候的默认Action
可以用户出错页面的展示
?
?
Struts2学习自我总结二(Result)
1.result type
1.dispatcher(默认类型) 服务端跳转到视图JSP?
2.redirect 客户端跳转到视图JSP
3.chain 服务端跳转到Action
4.redirectAction 客户端跳转到Action
2.gobal-result
gobal-results:可以在一个package内功所有的Action使用
若一个Action要使用另一个package中的gobal-results 必须extends="gobal-results所在包名"
example:
?<package name="user" namespace="/" extends="struts-default">
<gobal-results>
<result name="index">/index.jsp</result>
</gobal-results>
?</package>
?
?<package name="admin" namespace="/" extends="user">
在这里既可以使用全局的result
?</package>
3.dynamic result
?example:
在Action中将String r = "/user.jsp";压入valuestack中
?在配置文件里
<action name="user" class ="...">
<result >${r}</result>//动态调用
</action>
4.result with params
?example:
在Action中将params——type压入valuestack中
?在配置文件里
<action name="user" class ="...">
<result name="">/index.jsp?id=${type}</result>//动态接受参数
</action>
?
?
?
Struts2学习自我总结三(Ognl)
访问值栈中的action的普通属性: username = <s:property value="username"/>
访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/>
访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/>
访问值栈中对象的普通方法:<s:property value="password.length()"/>
访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" />
访问值栈中action的普通方法:<s:property value="m()" />
访问静态方法:<s:property value="@com.bjsxt.struts2.ognl.S@s()"/>
访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/>
访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User(8)"/>
访问List中某个元素:<s:property value="users[1]"/>
访问List中元素某个属性的集合:<s:property value="users.{age}"/>
访问List中元素某个属性的集合中的特定值:<s:property value="users[0].age"/>
访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap[‘dog101‘]"/>
访问Map中所有的key:<s:property value="dogMap.keys"/>
访问Map中所有的value:<s:property value="dogMap.values"/>
访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/>
投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
投影(访问从开头第一个满足条件的元素)
原文:http://www.cnblogs.com/gpc272/p/5043975.html