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>

 

 

五:项目结构

 

六:运行结果

 

 

     

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven项目和普通项目转换

转载于:https://www.cnblogs.com/yver/p/6054131.html

Gradle用户指南(1)-Gradle安装

前置条件 Gradle 需要 Java JDK 或者 JRE&#xff0c;版本是 6 及以上。Gradle 将会装载自己的 Groovy 库&#xff0c;因此&#xff0c;Groovy 不需要被安装。任何存在的 Groovy 安装都会被 Gradle 忽略。 Gradle 使用你 path 中的 JDK,或者&#xff0c;您可以设置 java_home 环…

第十六章:Java内存模型——Java并发编程实战

一、什么是内存模型&#xff0c;为什么要使用它 如果缺少同步&#xff0c;那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中编译器中生成的指令顺序&#xff0c;可以与源代码中的顺序不同处理器采用乱序或并行的方…

二进制包 mysql_二进制包安装MySQL数据库

1.1二进制包安装MySQL数据库1.1.1 安装前准备(规范)[rootMysql_server ~]# mkdir -p /home/zhurui/tools ##创建指定工具包存放路径[rootMysql_server ~]# wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.5/mysql-5.5.32-linux2.6-x86_64.tar.gz ##下载二进制包[ro…

【转】String.format详解

一、前言                            String.format 作为文本处理工具&#xff0c;为我们提供强大而丰富的字符串格式化功能&#xff0c;为了不止步于简单调用 String.format("Hello %s", "John");&#xff0c;下面将笔记整理…

java提高班_2020年最新天码营-Java提高班,资源教程下载

课程名称2020年最新天码营-Java提高班&#xff0c;资源教程下载课程介绍初学者先广在精&#xff0c;关注代码背后的实现&#xff0c;关注内功修炼&#xff0c;了解实现原理和思想&#xff0c;形成自己完整的技术体系&#xff0c;知识成片之后就容易触类旁通&#xff0c;进步的速…

力扣Java解数独_LeetCode 力扣 37. 解数独

题目描述(困难难度)给定一个数独棋盘&#xff0c;输出它的一个解。解法一 回溯法从上到下&#xff0c;从左到右遍历每个空位置。在第一个位置&#xff0c;随便填一个可以填的数字&#xff0c;再在第二个位置填一个可以填的数字&#xff0c;一直执行下去直到最后一个位置。期间如…

MSSQL优化之————探索MSSQL执行计划

原文链接&#xff1a;http://blog.csdn.net/no_mIss/archive/2006/11/09/1374978.aspx 作者&#xff1a;no_mIss QQ:34813284 时间&#xff1a;2006.11.07 23:30:00 环境&#xff1a;win2003 mssql2005 最近总想整理下对MSSQL的一些理解与感悟&#xff0c;却一直没有心思和…

java web的动静分离_Apache结合Tomcat实现动静分离的方法

实验环境Apache和Tomcat均安装在IP地址为192.168.153.136的主机上 主机操作系统为centos7 实验之前关闭防火墙 ,命令&#xff1a; systemctl stop firewalld 关闭seliunx &#xff0c;命令&#xff1a;setenforce 0 实验效果为Apache处理html静态资源&#xff0c;Tomcat处理jsp…

【2016.11.16】HTML学习笔记

先是学习了思维导图的使用方法&#xff0c;然后自学了HTML 下面是自学的笔记 转载于:https://www.cnblogs.com/shan01/p/6071081.html

【2016.11.17】HTML学习笔记第二天

今天是自习 下面是我的自学内容 转载于:https://www.cnblogs.com/shan01/p/6074683.html

php 安装php soap.dll,php_soap.dll下载

php_soap.dll原因说明当你的系统出现&#xff1a;php_soap.dll缺失&#xff0c;php_soap.dll故障&#xff0c;php_soap.dll删除&#xff0c;开机php_soap.dll报错&#xff0c;php_soap.dll源码缺失&#xff0c;无法加载php_soap.dll&#xff0c;计算机丢失php_soap.dll&#xf…

1.0 C++远征:数据的封装

4-1数据的封装 1.如何进行数据封装 ​ 未进行数据的封装&#xff0c;成员变量容易发生数据的泄露&#xff1a; ​ 进行数据的封装&#xff08;这是面向对象的思想&#xff09;&#xff0c;成员变量设为private属性&#xff0c;只能通过set和get方法来赋值和取值&#xff0c;提高…

windows彻底删除php,windows如何删除php

windows如何删除php2020-10-19 07:34:59windows删除php的方法&#xff1a;首先打开windows电脑&#xff1b;然后找到PHP文件夹并选择删除&#xff1b;接着以管理员的身份运行CMD实现MySQL的卸载&#xff1b;最后停止Apache服务并重启电脑即可。推荐&#xff1a;《PHP视频教程》…

杂论-FTP

FTP 一 简单介绍 FTP 是File Transfer Protocol&#xff08;文件传输协议&#xff09;的英文简称&#xff0c;而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时&#xff0c;它也是一个应用程序&#xff08;Application&#xff09;。基于不同的操作系统有不…

CMS收集器

CMS收集周期CMS并非没有暂停&#xff0c;而是用两次短暂停来替代串行标记整理算法的长暂停&#xff0c;它的收集周期是这样&#xff1a;初始标记(CMS-initial-mark) -> 并发标记(CMS-concurrent-mark) -> 重新标记(CMS-remark) -> 并发清除(CMS-concurrent-sweep) -&g…

matlab绘制贝叶斯曲线,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

原文链接&#xff1a;http://tecdat.cn/?p15508绘制ROC曲线通过Logistic回归进行分类加载样本数据。load fisheriris通过使用与versicolor和virginica物种相对应的度量来定义二元分类问题。pred meas(51:end,1:2);定义二进制响应变量。resp (1:100)>50; % Versicolor 0,…

Xcode8更新约束

Xcode升级之后就会发现约束设置好&#xff0c;想更新一下约束&#xff0c;看看约束是不是刚刚好&#xff0c;习惯性的去点右下角的更新约束的结果却发现没有更新约束的这一项了&#xff0c;好尴尬。 后来发现原来在Xcode8的约束更新换了一个地方&#xff0c;并不是在原来的右下…