0
点赞
收藏
分享

微信扫一扫

[Java web]-- struts2(6)

1. 上传   客户端硬盘--->服务器硬盘
发送请求,将要上传的文件发送给服务器
服务器接受请求,并收取文件到服务器内存
将内存中的文件写出到服务器硬盘

发送请求,将要上传的文件发送给服务器
<!-- multipart/form-data:请求参数是二进制格式
请求参数==>sourse35:用户选中的文件
-->
<form action="/struts2_day6/up/upload" method="post" enctype="multipart/form-data">
<input type="file" name="source35"/>
<input type="submit" value="上传"/>
</form>
服务器接受请求,并收取文件到服务器内存
//在Action中定义和参数同名的File类型的属性
class FileUploadAction{
//接收请求传送来的文件
private File source35;
set/get;
....
}
将内存中的文件写出到服务器硬盘
IO写出
细节:获取输出的真实路径(realPath)
:String path35=ServletActionContext.getServletContext().getRealPath("/uploadfile");
细节:
Action中收参:
1.上传的文件:
定义File类型的和请求参数同名的属性即可
2.上传文件的名称:
定义String类型的成员变量,变量名为:[参数名+FileName]
3.上传文件的content-type
定义String类型的成员变量,变量名为:[参数名+ContentType]
上传文件大小的默认限制:2M
<!--常量: 更改上传文件的上限 -->
<constant name="struts.multipart.maxSize" value="209715200"></constant>
========================================================================================================
2.下载
*请求到达服务器,服务器读取出用户要下载的文件到内存
*将读取到的数据,写出给客户端

*获得指向要下载文件的输入流:
input35=new FileInputStream(new File(path));
*注意:输入流input35是一个成员变量
*跳转到type="stream"的结果类型中
<result name="downok" type="stream">
<!-- 要下载的文件content-type -->
<param name="contentType">application/pdf</param>
<!-- 输入流名称 -->
<param name="inputName">input35</param>
<!-- inline:在线打开 attachment:下载(附件) -->
<param name="contentDisposition">attachment;filename="c35.pdf"</param>
<!-- 输入流读取文件的缓冲池大小 byte -->
<param name="bufferSize">1024</param>
</result>
========================================================================================================
3.验证码:
*随机获取验证码值(String)
*将验证码绘制在BufferedImage
*获得指向改BufferedImage的输入流
*跳转type="stream"的结果类型中
<result name="downok" type="stream">
<!-- 要下载的文件content-type -->
<param name="contentType">image/jpeg</param>
<!-- 输入流名称 -->
<param name="inputName">xx</param>
<!-- inline:在线打开 attachment:下载(附件) -->
<param name="contentDisposition">inline</param>
<!-- 输入流读取文件的缓冲池大小 byte -->
<param name="bufferSize">512</param>
</result>
*验证码验证:
1.在验证码生成时,存储到session中
2.在用户输入完验证码,提交请求后,接收用户输入的验证码值,用其和session中存储的真实的验证码值
比较。
========================================================================================================
补充:
*日期处理:
*client-->server
yyyy-MM-ddThh:mm:ss
*server-->client
Date date35;
<s:date name="date35" format="yyyy-MM-dd hh:mm:ss"/>
*动态获取应用名:
<a href='<s:url value="/date35/date35"/>'>hh</a>
<script type="text/javascript" src='<s:url value="/js/jquery-1.7.2.min.js"/>'></script>
*jsp中请求参数获取:
${param.username}
<s:property value="#parameters.username[0]"/>
url?id=35&name=c35&hobby=fb&hobby=vb
{"id":["35"],"name":["c35"],"hobby":["fb","vb"]}
#parameters.id[0]
#parameters.name[0]
#parameters.hobby[0]
#parameters.hobby[1]
*action创建
extends ActionSupport
pojo
implements Action 不常用
*<!--常量: 更改上传文件的上限 -->
<constant name="struts.multipart.maxSize" value="209715200"></constant>
<!-- 设置struts2访问的url后缀 -->
<constant name="struts.action.extension" value="action,c35,c36,,"></constant>
========================================================================================================
:ValueStack的内部组成-->context区域和root区域
*context区域:是struts2范畴内Ognl的上下文
:本质-->Map
key value
"request" Mapr 等价于请求作用域的底层的Map。
"session" Maps 等价于session作用域底层的Map。
"application" Mapa 等价于application(ServletContext)作用域底层的Map.
"parameters" Mapp 存储请求参数,存储规格如下:
url?id=35&name=c35&hobby=fb&hobby=vb
{"id":["35"],"name":["c35"],"hobby":["fb","vb"]}
#parameters.id[0]
#parameters.name[0]
#parameters.hobby[0]
#parameters.hobby[1]


*注意:如上【等价】:Mapr中存储的所有数据,会同步到请求作用域中,同样
请求作用域中存储的数据,也会同步到Mapr中
*值栈context区域应用点:集成了servlet规范中的三大作用域,加以管理。
*root区域:其内部的元素是struts2范畴内Ongl的根对象

举报

相关推荐

0 条评论