zoukankan      html  css  js  c++  java
  • 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>

    五:项目结构

    六:运行结果

     

         

  • 相关阅读:
    Collection<E>接口
    Iterable<T>接口
    Iterator<E>接口
    js图片压缩
    js计算最大公约数和最小公倍数
    canvas原生js写的贪吃蛇
    左右两栏div布局,高度自适应
    vue的图片路径,和背景图片路径打包后错误解决
    职责链模式
    js多个异步请求,按顺序执行next
  • 原文地址:https://www.cnblogs.com/Z-D-/p/6053579.html
Copyright © 2011-2022 走看看