struts2 继续

Posted on 2018-05-06 22:18  _wahaha  阅读(52)  评论(0)    收藏  举报

1 全局跳转视图配置   <global-results> <result name=" "></result></global-results>  需要注意顺序

2 配置各项默认值  name 配置路径名称   class 默认执行的action 在struts-default<default -class-ref   class="com.opensymphony.xwork2.ActionSupport>中有配置           method 有默认的方法

3 redirect 不能直接跳转到WEB-INF中的jsp页面中 ,因安全泄露等问题。

4当只需要跳转到WEB-INF资源下的时候 action 不用配置class及method方法 result 不用配置type

5 servlet中 数据处理(将数据保存到域中) 1请求数据封装 2调用service处理业务逻辑,拿到结果数据 3 数据保存到域中 

    struts中对数据操作 (将数据保存到域中)方式一 通过 ServletActionContext提供的静态方法直接拿到servletApi(但是需要 import  servletApi)但是可以通过得到的        request,application ,session ,pagecontext获得需要的方法来执行操作  方式二 通过ActionContext类  (解耦的方式)   方式三  通过实现接口的方法,实现requestAware,sessionAware, ApplicationAware接口(解耦的方式),struts 运行的时候 会把代表request的map对象注入 

6.学习了解耦及耦合的概念

7 请求数据封装及类型转换

    JSP表单数据填充到action中的属性或者填充到action的对象中的属性  对于对象类型的封装需要给get方法不给get方法会出现bug(struts2.3)

    实现原理用了params拦截器  

   struts 中 jsp提交的数据,struts 会自动转换为action中属性的转换,对于基本数据类型及日期类型会自动转换,但是日期只支持yyyy-

   如何自定义类型转换器    继承 strutsTypeConverter重写convertfromString(simpleDataFormat方法)及converttoString方法 然后在同包的Action目录下,新建一个      properties  命名规则为  ActionClassName-convertion.properties 内容为 当前需要转换的属性= 转换器包+转换器类(此为局部类型转换器)

    (全局类型转换器)  需要写一个转换器给所有的action用  配置与局部的不同   配置 src/xworkconvertion.properties 内容为 java.util.Date = 转换器包+转换器类

   优先级为  先局部 再全局 

8 struts的文件文件上传   action的名称不能用fileupload  因可能Struts内部有用fileupload做关键字会有问题!

文件上传拦截器fileupload interceptor帮助我们完成了文件的上传功能

另:MIME

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义文件名,以及一些媒体文件打开方式。
它是一个互联网标准,扩展了电子邮件标准,使其能够支持:
非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。
这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822,这些旧标准规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息原本都不能在电子邮件中传输(MIME可以)。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。
1 )   string path= ServletActionContext.getServletContext.getRealPath("/upload")
2)    File desfile  = new (path file1FileName)
3)     FileUtils.copyFile(file1,destfile);
使用struts 三行代码解决文件上传功能 !重点在配置上!
几个问题 :1) struts2 默认支持文件上传大小2M  修改 通过常量<constant>来修改 struts.mutipart.maxSize
2) 限制上传文件的运行允许的类型   拦截器中 <param name="fileUpload.allowedExtensions>  </param>
  9  对于文件下载 方式一 通过response对象向浏览器 写入字节流数据,设置下载的响应头 方式二 struts的方式
    
 
 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3