Struts2学习总结
1Action
(1)public String execute() throws Exception{}
(2)extends ActionSupport
(3)implements Action
 
2Action中访问Servlet API
(1)ActionContext
 
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.put(“username”, username);
取数据:${sessionScope.username}
 
方法二:Extends ActionSupport implements ServletContextAware ServletRequestAware ServletResponseAware
通过实现的方法传递出HttpServletRequestHttpServletResponse 从而得到HttpSession
 
方法三:HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext sc = ServletActionContext.getContext();
HttpSession session = request.getSession();
Session.setAttribute(“username”, usernames);
 
 
同一业务用例中可能有多个方法,即在1个类中处理多个动作,比如loginregister
方法一:
页面:
<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、自定义类型
 
 
 
 
3Struts中的标签
<%@ taglib uri=”/struts-tags” prefix=”s” %>, 其中uristruts-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>