一:action类讲解
用户编写Action 可以是 POJO
用户编写Action 可以实现Action接口
可以使用结果集常量字符串
用户编写Action 可以继承ActionSupport基类
对请求参数进行校验
设置错误信息
读取国际化信息
execute方法编写注意细节
public 修饰符
String 返回值
无参数
public interface Action {
public static final String SUCCESS = "success"; //Action执行成功
public static final String NONE = "none"; //不需要跳转结果页面
public static final String ERROR = "error";<span style="white-space:pre"> </span> //Action执行逻辑错误
public static final String INPUT = "input"; //用户输入非法数据
public static final String LOGIN = "login"; //没有访问权限
public String execute() throws Exception;
}
二:Action与Servlet API解耦合
Struts2的Action没有与任何Servlet API耦合,便于测试
1.获得ActionContext实例对象 : getContext()
2.获得请求内容: actionContext.getParameters()
类似调用HttpServletRequest的getParameterMap()方法
3.获得不同域的内容,相当于getAttribute(name)方法
actionContext.get(key) 获得request指定key的属性值
actionContext.getSession().get(key) 获得session指定key的属性值
<span style="white-space:pre"> </span>actionContext.getApplication().get(key) 获得application指定key的属性值
4.设置不同域的内容,相当于setAttribute(name,value)方法
<span style="white-space:pre"> </span>put(String,Object) 设置request指定key的属性值
<span style="white-space:pre"> </span>actionContext.getSession().put(String,Object) 设置session指定key的属性值
<span style="white-space:pre"> </span>actionContext.getApplication().put(String,Object) 设置application指定key的属性值
注意:struts.devMode为true,控制台有可能出项异常或严重提示
三:Action直接访问Servlet API
方式一 实现接口,访问Action时struts2完成注入
ServletContextAware
void setServletContext(javax.servlet.ServletContext context)
ServletRequestAware
void setServletRequest(javax.servlet.http.HttpServletRequest request)
ServletResponseAware
void setServletResponse(javax.servlet.http.HttpServletResponse response)
注意:没有session的aware,session可以通过request获得
方式二 使用ServletActionContext
static PageContext getPageContext()
static HttpServletRequest getRequest()
static HttpServletResponse getResponse()
static ServletContext getServletContext()
该方案可避免Action类实现XxxAware接口,但Action依然与Servlet API直接耦合
开发中优先使用ActionContext 这样可以避免耦合
一个最简单的创建:
第一步:创建JSP页面
</head>
<body>
<a href="${pageContext.request.contextPath}<span style="color:#ff0000;">/prepath/helloAction</span>">1.简易跳转</a>
</body>
第二步:在Struts.xml中配置Action
<package name="default" namespace="<span style="color:#ff0000;">/prepath</span>" extends="struts-default">
<action name="<span style="color:#ff0000;">helloAction_turnNext</span>"class="cn.green.demo1.helloAction">
<result name="<span style="color:#33ff33;">success</span>"><span style="color:#33ff33;">/a_demo/next.jsp</span></result>
</action>
<!--使用通配符
<action name="helloAction_<span style="color:#33ff33;">*</span>" class="cn.green.demo1.helloAction"method="<span style="color:#33ff33;">{1}</span>">
<result name="success">/a_demo/next.jsp</result>
</action>
-->
</package>
第三步:编写Action类
public class helloAction extends ActionSupport{
public String execute(){
returnSUCCESS;
}
}
第四步:编写点击后调用界面
<body>
thisis the next page !
</body>
最简单的流程结束!实现页面跳转!