(1)public String execute() throws Exception{}
(2)extends ActionSupport
(3)implements Action
2
、
Action
中访问
Servlet API
(1)ActionContext
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.put(“username”, username);
取数据:
${sessionScope.username}
方法二:
Extends ActionSupport implements ServletContextAware ServletRequestAware ServletResponseAware
通过实现的方法传递出
HttpServletRequest
,
HttpServletResponse
,
从而得到
HttpSession
方法三:
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext sc = ServletActionContext.getContext();
HttpSession session = request.getSession();
Session.setAttribute(“username”, usernames);
同一业务用例中可能有多个方法,即在
1
个类中处理多个动作,比如
login
,
register
等
方法一:
页面:
<a href=”<%=path %>/user!login.action”>Login</a>
<a href=”/user!login.action”>Login</a> |
<a href=”/user!register.action”>Register</a>
Action:
UserAction
中增加
login() throws Exception, register() throws Exception
方法二:
配置文件中分别指定每次需要调用的方法
<action name=”userRegister” class=”com.alibaba.aciton.UserAction” method=”register”>
<result name=”registerOk” >registerOK.jsp</result>
</action>
<action name=”userRegister” class=”com.alibaba.aciton.UserAction” method=”login”>
<result name=”loginOk” >loginOk.jsp</result>
</action>
页面则使用如下方式:
<a href=”/userlogin.action”>Login</a> |
<a href=”/userregister.action”>Register</a>
方法三:
struts.xml
的配置文件可以更加的灵活处理,采用通配符的方式
<action name=”*Action” class=”com.alibaba.action.UserAction” method={1}>
<result name=”registerOk” >registerOK.jsp</result>
<result name=”loginOk” >loginOk.jsp</result>
</action>
页面提交处需要以
**Action
命名,即可被通配符截获
类型转换机制:
1
、常用的类型,
框架自动转换
Struts2
基于
OGNL
的,
重要接口
TypeConverter
Extends DefaultTypeConverter
public class PointConverter extends DefaultTypeConverter{
public Object convertValue(Map map, Object obj, Class toType){
}
}
再在配置文件中指定那个类用那个转换器来转换
PointAction-conversion.properties
Point=com.alibaba.converter.PointConverter
或者:
全局:
xwork-conversion.properties
StrutsTypeConverter
2
、自定义类型
3
、
Struts
中的标签
<%@ taglib uri=”/struts-tags” prefix=”s” %>,
其中
uri
招
struts-core
中的
strults-tags.tld
中的
<s:form action=”register.action” ><!―
不用再写
.action
了
-->
<s:textfield name=”name” label=”Name”/>
<s:textfield name=”age” label=”Age”/>
<s:submit value=”Register” />
</s:form>