Struts2学习打卡
Struts2学习笔记—第四天
Struts2笔记 第四天
一.复习
1. 拦截器
1)作用:
用来定义多数action都需要的,与主要业务功能无关的通过功能代码。 定义“冗余”代码。
2)开发:
A. 写程序 implements Interceptor接口
B. 在配置文件中声明
<interceptors>
<interceptor name=”” class=””/>
<action ...... >
<interceptor-ref name=”....”/>
<result .....>
3) 拦截器栈
<interceptors>
<interceptor name=”1” class=””/>
<interceptor name=”2” class=””/>
<interceptor-stack name=””>
<interceptor-ref name=”defaultStack”
开发拦截器栈的步骤
A. 自定义拦截器,以及配置
B. 定义拦截器栈,在栈里引入自定义的拦截器,
引入系统默认拦截器栈defaultStack
4)默认拦截器栈
二.文件上传
开发步骤
-
定义一个jsp文件,在文件中提供表单File元素,可以选择上传的文件
注意:
1)表单标签form有一个默认属性enctype=“application/x-www-form-urlencoded”
表示表单提交的数据,服务器端是可以通过request.getParameter()方法接收的
2)如果上传的数据不是普通表单元素(String),则需要修改enctype属性
enctype=“multipart/form-data” -
在tomcat应用目录下新家一个文件夹用来保存用户上传的文件“upload”
-
开发接收文件的Action程序
具体程序参看 UploadAction.java -
改进
1)路径的改进
第一步:修改文件名
在Action中提供一个属性用来收集上传文件的文件名,属性名字必须叫做
xxxFileName(xxx是File属性的名字),提供get和set方法。同样的做法
还可以收集 xxxContentType(上传文件的类型)
第二步:修改上传文件路径(定义在配置文件中)
Struts允许在配置文件中为action定义参数,action程序中通过定义同名的实
例变量来获取这个参数。
第三步:修改tomcat所在位置的绝对路径
ServletContext里提供了一个工具方法getRealPath(),可以获取tomcat服务器
所在位置的绝对路径。
2)文件读写的改进
在org.apache.commons.io.FileUtils的工具类,里面含有工具方法copyFile( src, dest)
参数一:需要被拷贝的源文件 参数二:目标文件 -
实战建议 — 关于上传文件路径的处理
建议为每一个用户建立一个文件夹,用来保存该用户上传的文件,文件在命名时,遵
循 “用户名+文件名+系统时间+文件后缀”。
-
关于文件的大小
Struts默认只允许上传2M以内的文件,如果需要改变大小,则添加以下配置
注意:配置信息在
三.文件下载
开发步骤:
- 提供一个jsp页面,在页面里定义下载文件的超链接(含有下载文件的文件名)
- 在struts.xml文件中通过标签定义下载文件所在路径
- 写程序
1)要求程序最好继承自ActionSupport
2)提供一个名字固定的方法 getInputStream()
3)对于输出流,不在代码中体现,会体现在配置文件中(struts框架已经封装好了一个
结果类型叫stream,直接应对输出流) - 写配置文件
设置信息的查找位置
四.上传下载综合 — 练习
- 上传:
- 存本地文件系统 : 为每一个用户创建一个文件夹, 修改文件名
- 入库 : id是db生成 , filename是原始文件名
2.下载 :
1) 显示页面:
<a href=”/xxx/xxxAction?id=<s:property value=’id’/>”>
<s:property value=”filename”/>
五.图片验证码
- 作用:安全,减缓网站的访问压力
- 组成:随机数 + 图片背景
六.Struts配置文件补充
将配置信息分别定义在不同的xml文件中, 在总的struts.xml里引入