博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2之拦截器
阅读量:5939 次
发布时间:2019-06-19

本文共 2082 字,大约阅读时间需要 6 分钟。

一、拦截器介绍

  Interceptor是Struts2框架中定义的拦截器对象,它是一个接口,无论是Struts2内置的拦截器对象,还是自定义的拦截器,都需要直接或间接的实现此接口。AbstractInterceptor对象是一个抽象类,它对Interceptor接口进行了实现。在创建拦截器时,可以通过继承AbstractInterceptor进行创建。

1 import com.opensymphony.xwork2.ActionInvocation;2 3 public interface Interceptor extends Serializable 4 {5     void destroy() ;6     void init() ;7     String intercept(ActionInvocation invocation) throws Exception ;8 }
View Code

 拦截器(Interceptor)

• 拦截器的配置
1)编写实现Interceptor 接口的类。
2)在struts.xml 文件中定义拦截器。

3)在action中使用拦截器

4)一旦定义了自己的拦截器,将其配置到 action上后,我们需要在action的最后加上默认的拦截器栈:defaultStack。

二、文件上传fileupload

进行表单文件上传时,必须将表单的method属性设置为post,将enctype属性设置为multipart/form-data。

Struts2在进行文件上传操作时,实际上是通过两个步骤实现的:

1) 首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servlet.context.tempdir 环境变量所指定的目录中。
2) Action中所定义的File类型的成员变量file实际上指向的是临时目录中的临时文件,然后在服务器端通过 IO的方式将临时文件写入到指定的服务器端目录中。

public class UploadServlet extends HttpServlet {	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {				DiskFileItemFactory factory = new DiskFileItemFactory();				String path = req.getRealPath("/upload");				factory.setRepository(new File(path));		factory.setSizeThreshold(1024 * 1024);				ServletFileUpload upload = new ServletFileUpload(factory);				try {			List
list = (List
)upload.parseRequest(req); for (FileItem fileItem : list) { String name = fileItem.getFieldName(); if (fileItem.isFormField()) { String value = fileItem.getString(); System.out.println(name + "=" + value); req.setAttribute(name, value); } else { String value = fileItem.getName(); int start = value.lastIndexOf("\\"); String fileName = value.substring(start + 1); req.setAttribute(name, fileName); fileItem.write(new File(path,fileName)); } } } catch (Exception e) { e.printStackTrace(); } req.getRequestDispatcher("fileUploadResult.jsp").forward(req, resp); }}

  

 

转载于:https://www.cnblogs.com/Wyao/p/7041241.html

你可能感兴趣的文章
看看10万程序员怎么评论:零基础的前端开发该如何系统地学习?
查看>>
拖着3个箱子,跨越太平洋,求学美帝 那一年我19岁
查看>>
一文读懂并发与并行,同步与异步阻塞
查看>>
简单易用NLP框架Flair发布新版本!(附教程)
查看>>
Kotlin教程(九)泛型
查看>>
浏览器中唤起native app || 跳转到应用商城下载(二) 之universal links
查看>>
网站性能调优开发工具: Lighthouse, Puppeteer 以及进阶部分丨 Google 开发者大会 2018...
查看>>
33 个 JavaScript 核心概念系列(三): 显式 (名义) 与 隐式 (鸭子)类型转换
查看>>
RocketMQ(六):namesrv再探
查看>>
入门Python神经机器翻译,这是一篇非常精简的实战指南
查看>>
Android LayoutInflater 源码解析
查看>>
如何给localStorage设置一个过期时间?
查看>>
java8-06-自定义Collector-JoinCollector
查看>>
把现有的typesctipt+react项目接入到electron
查看>>
【Docker实战之入门】Dockerfile详细分析:构建docker镜像(4)构建动态网站WordPress...
查看>>
小程序二次贝塞尔曲线,购物车商品曲线飞入效果
查看>>
微信小程序
查看>>
常用的正则表达式分享
查看>>
Spring、Spring Boot和TestNG测试指南 - 测试关系型数据库
查看>>
2017-07-19 前端日报
查看>>