Strust2-2

1、访问servelt API:

在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。 
    但在Struts2 Action类中仍然有很多方法可以获得这些对象。下面就列出四种获得这些对象的方法。 

【方法1】使用Struts2 Aware拦截器 :

package action;  
  
import com.opensymphony.xwork2.ActionSupport;  
import javax.servlet.http.*;  
import org.apache.struts2.interceptor.*;  
  
public class MyAction extends ActionSupport implements ServletResponseAware  
{  
    private javax.servlet.http.HttpServletResponse response;  
    // 获得HttpServletResponse对象  
    public void setServletResponse(HttpServletResponse response)  
    {  
        this.response = response;  
    }      
    public String execute() throws Exception  
    {      
        response.getWriter().write("实现ServletResponseAware接口");  
    }  
}  

 

【方法2】使用RequestAware拦截器 

package action;  
  
import java.util.Map;  
import org.apache.struts2.*;  
import com.opensymphony.xwork2.ActionSupport;  
import javax.servlet.http.*;  
import com.opensymphony.xwork2.util.*;  
import org.apache.struts2.interceptor.*;  
  
public class FirstAction extends ActionSupport implements RequestAware  
{  
    private Map request;  
private HttpServletResponse response;  
      
    public void setRequest(Map request)  
    {  
        this.request = request;          
    }      
    public String execute() throws Exception  
    {      
        java.util.Set<String> keys = request.keySet();  
        // 枚举所有的key值。实际上只有一个key:struts.valueStack  
        for(String key: keys)  
            System.out.println(key);  
        // 获得OgnlValueStack 对象  
        OgnlValueStack stack = (OgnlValueStack)request.get("struts.valueStack");  
        // 获得HttpServletResponse对象  
        response = (HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);  
        response.getWriter().write("实现RequestAware 接口");  
    }  
}  

 

方法3】使用ActionContext类 

 HttpServletResponse response = (HttpServletResponse)  
  
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);  
  
HttpServletRequest request = (HttpServletRequest)  
  
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);  

 

【方法4】使用ServletActionContext类 

Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、getResponse方法来获得HttpServletRequest、HttpServletResponse对象。代码如下: 

HttpServletResponse response = ServletActionContext.getResponse()  
  
   response.getWriter().write("hello world");  

 

 

1、ActionContext获取request,session,值栈。将对象压人栈顶:获取值栈,push。<s:属性>:是OGNL,获取栈顶的对象。

2、<result type="json" name="users">
     <param name="root">names</param>
   </result>

3、(1)、 request.setAttribute("s004po", s004po);

                   主题:${s004po.ma002}<br>
                   内容:${s004po.ma003}

        (2)、List<Map<String, Object>> replyList

                   request.setAttribute("replyList", replyList);

                   <s:iterator value="#request.replyList" id="column"> 
                             <s:iterator value="#column" id="map">    
                                      key: <s:property value="#map.key"/>      
                                       value: <s:property value="#map.value"/>  <br>    
                               </s:iterator>
                 </s:iterator>

4、hidden标签中的value我在js脚本中取得hidden中value时为什么得到的是<s:property value="#session.LOGIN_USER"/>,我用<s:textfield value="<s:property value='#session.LOGIN_USER'/>"/>测试时在文本框中的显示也是<s:property value="#session.LOGIN_USER"/>,求教…………

解答:

<s:hidden>标签的value属性的类型是String类型,所以把<s:property value="#session.LOGIN_USER"/>当成是字符串,如果要获取值栈中的数据要用
<s:hidden name="loginUser" id="loginUser" value="%{#session.LOGIN_USER}"/>

5.Struts2文件上传路径的详细解释

http://lj6684.iteye.com/blog/1002279

Struts2文件上传原理及示例

http://blog.sina.com.cn/s/blog_87720b870100zkn2.html

struts2上传文件问题汇总

http://jingyan.baidu.com/article/acf728fd1222d8f8e510a38e.html

 

 

http://localhost:8080/YunVideo/pda/pdaLogin
http://localhost:8080/YunVideo/pda/pdaRegister

<action name="pda*" class="com.hw.hwsafe.pda.action.PdaUserAction" method="pda{1}">
 <result type="json"></result>
</action>

 public void pdaRegister() throws Exception {
     response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
     PrintWriter out = null;
     out = response.getWriter();
  out.write("注册");
  out.flush();
  out.close();
 }
 public void pdaLogin() throws Exception {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
     PrintWriter out = null;
     out = response.getWriter();
  out.write("登录");
  out.flush();
  out.close();

 

转载于:https://my.oschina.net/u/1389206/blog/285136

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值