一:登录页面

成功:--->upload.jsp

失败:返回错误信息(用户名或者密码错误)

二:上传文件

登录成功:上传成功

未登录:--->login.jsp+错误信息(请登录)

三:设置拦截器  未登录不能上传文件  nuc.sw.interceptor--->loginIntercetor.java

 1 package nuc.sw.interceptor;
 2
 3 import com.opensymphony.xwork2.Action;
 4 import com.opensymphony.xwork2.ActionContext;
 5 import com.opensymphony.xwork2.ActionInvocation;
 6 import com.opensymphony.xwork2.ActionSupport;
 7 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 8
 9 //定义拦截器需要继承类
10 public class loginInterceptor extends AbstractInterceptor {
11
12     //实现方法
13     @Override
14     public String intercept(ActionInvocation arg0) throws Exception {
15
16         //获取session中的用户名
17         ActionContext ctx=arg0.getInvocationContext();
18         String user=(String)ctx.getSession().get("user");
19         //判断逻辑。如果登录:放行---上传;未登录:转回登录页面。
20         if(user!=null && user.equals("zd")){
21             System.out.print("用户名是:"+user);
22             return arg0.invoke();
23         }
24             ((ActionSupport)arg0.getAction()).addActionError("您还没有登录;");
25             return Action.LOGIN;//  login
26     }
27 }

四:配置struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7  <constant name="struts.devMode" value="true" />
 8  <constant name="struts.multipart.saveDir" value="d:/tmpsaveDir"></constant>
 9
10  <package name="default" namespace="/" extends="struts-default">
11     <!-- 用户自定义拦截器 -->
12     <interceptors>
13          <interceptor name="logininterceptor" class="nuc.sw.interceptor.loginInterceptor"/>
14      </interceptors>
15      <global-results>
16          <result name="login">/login.jsp</result>
17      </global-results>
18      <action name="loginnnn"  class="nuc.sw.action.LoginAction">
19          <result >/upload.jsp</result>
20          <result name="input">/login.jsp</result>
21        </action>
22      <action name="uploadAction" class="nuc.sw.action.uploadAction">
23         <!-- 判断文件类型 大小 扩展名 -->
24          <interceptor-ref name="fileUpload">
25              <param name="allowedTypes">image/png,image/jpeg,text/plain</param>
26              <param name="maximumSize">655350</param>
27              <param name="allowedExtensions">.png</param>
28          </interceptor-ref>
29          <!-- 文件上传位置 -->
30          <param name="savePath">d:/uploadRealFile</param>
31          <!-- 上传返回结果 -->
32          <result name="success">/hello.jsp</result>
33          <result name="input">/upload.jsp</result>
34          <!-- 引用默认栈 -->
35          <interceptor-ref name="defaultStack"/>
36          <!-- 引用自定义的拦截器 -->
37          <interceptor-ref name="logininterceptor"/>
38      </action>
39  </package>
40 </struts>

五:项目结构

六:运行结果

 

转载于:https://www.cnblogs.com/Z-D-/p/6053579.html

struts2-19-合法用户上传文件相关推荐

  1. Django之用户上传文件的参数配置

    Django之用户上传文件的参数配置 models.py文件 class Xxoo(models.Model):title = models.CharField(max_length=128)# me ...

  2. 匿名的ftp服务器不允许用户上传文件对吗,vsftp实现匿名用户文件可上传不能删除...

    目的:匿名用户可上传.不能删除.不能更名 方法:在匿名用户主目录下新建一个upload目录用来存放匿名用户上传文件 修改/etc/vsftpd/vsftpd.conf anonymous_enable ...

  3. 解决办法:WinSCP 普通用户上传文件没有权限解决

    文章目录 问题描述 解决办法 解决办法 1 解决办法 2 问题描述 普通用户(非root用户)使用 WinSCP上传文件到 Linux 服务器,出现 Permission Denied 的错误提示,并 ...

  4. winscp普通用户上传文件没有权限解决

    winscp可以利用sftp协议对linux服务器就行连接,如果是利用普通用户进行登陆的话,上传文件的过程中会出现一些permission denied的提示,并且错误的返回码是3,下面说明下解决方法 ...

  5. django2.0media用户上传文件配置及使用方法

    1.setting.py配置 #用户文件上传至media MEDIA_URL='/media/' MEDIA_ROOT=os.path.join(BASE_DIR,"media") ...

  6. java action 上传文件_Struts2实现单文件或多文件上传功能

    一.简述 Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置, 二.指定用户上传文件的大小,有两种方式 1)默认是在default.proper ...

  7. php上传文件很慢的原因_PHP编码安全:上传文件安全

    一次性付费进群,长期免费索取教程,没有付费教程. 进微信群回复公众号:微信群:QQ群:460500587  教程列表 见微信公众号底部菜单 |  本文底部有推荐书籍  微信公众号:计算机与网络安全 I ...

  8. 解决使用layui上传文件时提示“请求上传接口出现异常”

    在做网站的过程中,需要用户上传文件,接收文件的接口已经写好(经过测试确定可用) 现在需要在网页上提供一个文件上传的按钮.由于原生input type="file"组件太丑,考虑使用 ...

  9. putty怎么进入文件夹_如何利用putty工具上传文件 - 卡饭网

    图解使用FTP工具上传文件以FlashFXP为例 图解使用FTP工具上传文件以FlashFXP为例 现以FlashFXP为例,图解使用FTP工具上传文件. 1: 运行 LeapFTP,点击1处(站点- ...

最新文章

  1. windows程序设计之对话框简介1
  2. android 打包出现错误Error: ResourceName
  3. 动态规划 - 装配线调度问题
  4. html文件已传入服务器,把html文件上传到云服务器
  5. go mongodb排序查询_「赵强老师」MongoDB中的索引(下)
  6. c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
  7. Spark配置参数详解
  8. Codeforces 934C - A Twisty Movement
  9. linux sed命令的常用方法
  10. python函数作用域与闭包_python基础-08-内置函数、作用域、闭包、递归
  11. 父亲购房后去世,房产证还没办,后妈和父亲没结婚,户口簿上有父亲,儿子,妹妹,那房产证应该写谁的名字?
  12. Auto-ML之自动化特征工程
  13. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 10课
  14. Microsoft ASP.NET 4 Step by Step
  15. Python全栈_Day5_用户、群组、权限
  16. Vue 项目(网站应用)接入QQ互联qq登录接口 汇总
  17. python经纬度转换xy坐标公式_python 经纬度和平面坐标相互转换利用米勒坐标系
  18. 微信小程序实现图片下载功能
  19. mysql 1114_mysql 解决 ERROR 1114 (HY000): The table 'XXX' is full
  20. Office2021专业增强版激活报错0xc004f074以及尝试办法

热门文章

  1. mybatis中LIKE模糊查询的几种写法以及注意点
  2. TCP控制字段标志:URG、ACK、PSH、RST、SYN、FIN
  3. linux mmap 内存映射 mmap() vs read()/write()/lseek()
  4. sockaddr和sockaddr_in的区别
  5. USB OTG 的进一步理解
  6. jni中native通过adb输出
  7. [react] React中如何监听state的变化?
  8. [css] pseudo-class与pseudo-element有什么区别?
  9. [js] 说说你对JS中暂性死区的理解,它有什么运用场景?
  10. “约见”面试官系列之常见面试题之第八十一篇之webpack(建议收藏)