struts学习笔记三:文件上传和拦截器的应用

1.拦截器栈可以放多个拦截器

<interceptor-stack name="">

<interceptor-ref name=""></interceptor-ref>

</interceptor-stack>

默认的拦截器栈:不需要调用,默认自己调用了.

<default-interceptor-ref></default-interceptor-ref>

2.拦截器中的观察者模式

PreResultListener 在execute之后,拦截器结束之前执行

3.拦截器实现权限验证

Map map=invocation.getInvocationContext().getSession();

if(null==map.get("user"))

{没有登录返回到登录界面视图

return Action.LOGIN; 一般返回到全局的Login Action,默认的是请求转发

}

else

{

return invocation.invoke();

}

4.全局结果,所有Action都可以使用的.

<global-result>

<result name="login" type="redirect">/login.jsp</result>

</global-result>

防止请求重复提交有两种方式:1,重定向  redirect

2.token(令牌):服务器和客服端各有一个相同的字符串,第一次相同,可以进行处理,然后客服端的字符串改变,第二次提交比对的时候,确认是重复提交.

5.struts的异常处理机制

首先定义自定义处理的异常类,

<exception-mapping result="Invalid" exception="处理类">

全局的异常处理

<globle-exception-mappings>

<exception-mapping result="Invalid" exception="处理类"></globle-exception-mappings>

6.文件上传

注意两点:方法为post,enctype="multipart/form-data"

Action类中注意的:注意引入struts的io包

private File file;//上传的文件

private String fileFileName;//文件的名字

 

execute()

{

InputStream is=new FileInputStream(file);

 

OutputStream os=new FileOutputStream("c:\\"+fileFileName);

 

byte[] buffer=new byte[1024];

int length=0;

 

while(-1!length==is.read(buffer))

{

os.write(buffer,0.length);

}

os.close();

is.close();

}

你可能感兴趣的:(struts 文件上传)