struts2-19-合法用户上传文件

Posted ~花开不败~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2-19-合法用户上传文件相关的知识,希望对你有一定的参考价值。

一:登录页面 

           成功:--->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>

 

 

五:项目结构

 

六:运行结果

 

 

     

以上是关于struts2-19-合法用户上传文件的主要内容,如果未能解决你的问题,请参考以下文章

上传漏洞

java 附件上传时后台验证上传文件的合法性

Java根据PDF中的关键字位置判定PDF文件是否合法

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

php图片上传类(支持缩放裁剪图片缩略功能)

VSCode自定义代码片段——.vue文件的模板