struts2 笔记4

2017-01-06  本文已影响12人  持续进步者

Strtus2 OGNL 表达式的结合

描述:struts2 为OGNL表达式准备了两个对象
        ActionContext:最为ognl表达式的Context
        ValueStack:最为ognl表达式的Root
    以上两个对象的创建都是StrutsPrepareAndExecuteFilter中准备好的

ognl和Struts使用上结合:

表单提交,其中提交的键可以看作是ognl表达式
Action中有User对象,我们想直接将表单参数提交到User对象中封装做法:
    1,提交的参数的键=>user.name就会在值栈中查找名为user的对象,并赋值到该对象的name属性。
    2,使用ModelDriven,我们的Action在getModel方法中将User的对象返回,ModelDriven拦截器
        会将我们返回的User对象放入之战中(栈顶),那么表单中直接提交name,将会把name值装入栈顶的user对象的name属性。        
文件下载中文件乱码问题解决
<result name="success" type="stream" >
       <param name="contentType">application/zip</param>
       <param name="inputName">zip</param>
       <!-- 
        1.相应头中只能使用latin(Iso-8859-1)码表
        2.使用URLEncode编码,对中文进行编码才能发送  => %E6%F7
        3. 在struts.xml配置文件中可以使用ognl表达式=> ${} 在扩种书写ognl(注意:虽然跟el表达式格式看似相同,但是就是ognl不是el.)
        -->
       <param name="contentDisposition">attachment;filename="${fileName}"</param>
       <param name="bufferSize">10240</param>
</result>

public class FileDownAction extends ActionSupport {
   private String fileName;
   public InputStream getZip() {
       ServletContext sc = ServletActionContext.getServletContext();
      return sc.getResourceAsStream("/WEB-INF/shanping.zip");
   }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    /**
     * 获取下载显示的文件名称
     *
     * @return
     */
    public String getDownloadFileName() {
        String downFileName = fileName;
        try {
            downFileName = new String(downFileName.getBytes(), "ISO8859-1");
        } catch (UnsupportedEncodingException e) {
//            log.error("获取下载显示的文件名称",e);
        }
        System.out.println("文件名称:"+downFileName);
        return downFileName;
    }


    public String excute(){
        return SUCCESS;
    }
}
<s:debug> 标签
Struts2标签中OGNL表达式(<s:properties>)

Struts2 标签

标签分为两个部分 “通用标签”和“ui 标签”两大部分
上一篇 下一篇

猜你喜欢

热点阅读