拦截器与文件上传

拦截器与文件上传

三种上传方案:
1、上传到tomcat服务器(不能及时刷新)
2、上传到指定文件目录,添加服务器与真实目录的映射关系,从而解耦上传文件与tomcat的关系
文件服务器(目前公司用的最常用的方法)
3、在数据库表中建立二进制字段,将图片存储到数据库(处理上百万的数据不方便)

完成图片上传:

写两个方法:1.上传图片2.跳转文件上传页面。

 1     private File file;
 2     private String fileContentType;
 3     private String fileFileName;
 4 /**
 5      * 直接上传图片
 6      * @return
 7      * @throws IOException
 8      */
 9     public String upload() throws IOException {
10         //注意:在Linux下是没有E盘的 linnx下只有一个盘符,那么意味着,当打包到linux服务器的时候需要改动代码
11         //这个时候通常是这么解决的,将targetPath对应目录串,配置到资源文件中,通过Properties类进行动态读取
12         //那么当需要将项目发布到Linux服务器的时候,只需要改变xxx.preperties文件中targetPath=/caoluo/img
13
14         //实际图片存储的位置
15         String targetDir="D:/杂七杂八/上传图片";
16
17         //存到数据库中的地址
18         String severPath="/upload";
19         FileUtils.copyFile(file, new File(targetDir+"/"+fileFileName));
20         //注意: 数据库存放是网络请求地址,而不是本地存放图片地址
21         clz.setPic(severPath+"/"+fileFileName);
22         this.clzDao.edit(clz);
23         return "toList";
24     }
25     /**
26      * 跳转文件上传页面
27      * @return
28      */
29     public String preUpload() {
30         Clazz c=this.clzDao.list(clz, null).get(0);
31         request.setAttribute("clz", c);
32         return "toUpload";
33     }

struts_sy.xml配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 4     "http://struts.apache.org/dtds/struts-2.5.dtd">
 5 <struts>
 6     <package name="sy" extends="base" namespace="/sy">
 7         <action name="/clz_*" class="com.web.ClazzAction" method="{1}">
 8            <result name="list">/clzList.jsp</result>
 9            <result name="preSave">/clzEdit.jsp</result>
10            <result name="toList" type="redirectAction">/clz_list</result>
11            <result name="toUpload">/upload.jsp</result>
12         </action>
13     </package>
14 </struts>

然后写一个上传图片的jsp页面

 1 <body>
 2 <form action="${pageContext.request.contextPath }/sy/clz_upload.action" method="post" enctype="multipart/form-data">
 3         <input type="hidden" name="cid" value="${clz.cid }"> <br>
 4         <input type="hidden" name="cname" value="${clz.cname }"> <br>
 5         <input type="hidden" name="cteacher" value="${clz.cteacher }"> <br>
 6         <!-- 注意:name对应的值决定了 自控制器action属性的命名 -->
 7         <input type="file" name="file">
 8         <input type="submit">
 9     </form>
10 </body>

在server.xml中添加一行代码

 <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context path="/T_caoluo/upload" docBase="D:/杂七杂八/上传图片/"/>
      <Context docBase="T_caoluo" path="/T_caoluo" reloadable="true" source="org.eclipse.jst.jee.server:T_caoluo"/></Host>
    </Engine>
  </Service>

首页显示图片:

 1         <c:forEach items="${clzList }" var="c">
 2             <tr>
 3                 <td>${c.cid }</td>
 4                 <td>${c.cname }</td>
 5                 <td>${c.cteacher }</td>
 6                 <td>
 7                 <img  style="width: 60px;height: 60px" src="${pageContext.request.contextPath }${c.pic }">
 8                 </td>
 9                 <td>
10                     <a href="${pageContext.request.contextPath }/sy/clz_preSave.action?cid=${c.cid }">修改</a>&nbsp;&nbsp;
11                     <a href="${pageContext.request.contextPath }/sy/clz_del.action?cid=${c.cid }">删除</a>&nbsp;&nbsp;
12                     <a href="${pageContext.request.contextPath }/sy/clz_preUpload.action?cid=${c.cid }">上传图片</a>&nbsp;&nbsp;
13                 </td>
14             </tr>
15         </c:forEach>

然后运行:

选择一个图片确认上传

效果图:

完成;

原文地址:https://www.cnblogs.com/AluoKa/p/11169139.html

时间: 2024-11-09 03:49:48

拦截器与文件上传的相关文章

深入分析JavaWeb 47 -- Struts2拦截器与文件上传下载

一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事.过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面向切面)的编程思想,是可插拔的, 可以对访问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2执行原理

深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载

一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术.实现AOP(面向切面)的编程思想.是可插拔的, 能够对訪问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在訪问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2运行原

利用Struts拦截器完成文件上传功能

Struts2的图片上传以及页面展示图片 在上次的CRUD基础上加上图片上传功能 (https://www.cnblogs.com/liuwenwu9527/p/11108611.html) 文件上传:三种上传方案1.上传到tomcat服务器2.上传到指定文件目录,添加服务器与真实目录的映射关系,从而解耦上传文件与tomcat的关系文件服务器3.在数据库表中建立二进制字段,将图片存储到数据库(现在基本不用了) 我们使用第二种方法实现图片上传 实现效果如下: 首先是展示页面 clzList.jsp

SpringMVC——拦截器及文件上传和下载

目录 自定义拦截器 拦截器类 在springmvc的配置文件中配置拦截器 文件上传 导入jar包 配置bean:multipartResolver 采用file.Transto 来保存上传的文件 文件下载 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过滤器与拦截器的区别:拦截器是AOP思想的具体应用. 过滤器: servlet规范中的一部分,任何java web工程都可以使用 在u

[WebApi] 捣鼓一个资源管理器--多文件上传+数据库辅助

<打造一个网站或者其他网络应用的文件管理接口(WebApi)第三章"多文件上传+数据库辅助存储"> ======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处: http://blog.csdn.net/qiujuer/article/details/4172

[WebApi] 捣鼓一个资源管理器--多文件上传

<打造一个网站或者其他网络应用的文件管理接口(WebApi)第二章"多文件上传"> ======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/41675299 ====

多文件上传与拦截器

@Controller public class MostFileController { //多文件上传 @RequestMapping("/first") public String doFlrat(@RequestParam MultipartFile[] upload, HttpSession session) { System.out.println("*******************"); for (MultipartFile item:uploa

Struts2系列:(11)文件上传

生活赋予我们一种巨大的和无限高贵的礼品,这就是青春:充满着力量,充满着期待,充满着求知,充满着希望. Struts 2使用FileUpload 拦截器和 Commons FileUpload 组件实现文件上传. FileUploadInterceptor 全名:org.apache.struts2.interceptor.FileUploadInterceptor Interceptor that is based off(基于) of MultiPartRequestWrapper,  whi

文件上传下载之文件上传

13.1  文件上传 13.1.1  概述 在开发基于Web的应用的时候,经常会碰到需要实现文件上传.下载的功能,比如编辑某个商品,需要给它上传一个图片等等. 不使用Struts2的话,可以有很多种方式来实现文件上传,比如使用Apache的Common-FileUpload等.但是这些传统的方式,实现起来非常麻烦,需要写很多代码来进行控制. 现在使用Struts2来实现文件上传的功能,会更加简单和方便,事实上,Struts2的文件上传功能,默认就是基于Common-FileUpload来实现的,