一:登录页面
成功:--->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>
五:项目结构
六:运行结果