Struts2学习笔记(二):最简单的一个例子

一: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>

最简单的流程结束!实现页面跳转!





你可能感兴趣的:(Struts2学习笔记(二):最简单的一个例子)