Struts2重要知识点总结
一、interceptor拦截器的使用
第一种情况(指定action使用该拦截器):struts.xml文件的配置:
<interceptors>
<interceptor name="myinterceptor" class="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="myinterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="go" class="testAction">
<result name="success">index.jsp</result>
<interceptor-ref name="loginStack"></interceptor-ref>
</action>
第二种情况(所有action使用该拦截器):struts.xml文件的配置:
<interceptors>
<interceptor name="myinterceptor" class="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="myinterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
PS:必须要添加defaultStack的默认拦截器,不然依赖注入参数受到影响
二、struts.xml配置文件各节点先后顺序问题
package节点的子节点一定要按照如下的顺序配置,不然启动时会报错。
result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*
例如:global-results节点一定放要在action节点前面,interceptor节点后面(也就是按照上面的节点顺序排列)
三、多文件上传
1、文件大小限制设置:
添加Struts.xml文件配置<constant name="struts.multipart.maxSize" value="2097152000" />
2、中文的文件名乱码问题:
添加Struts.xml文件配置<constant name="struts.i18n.encoding" value="utf-8"/>;同时,设置选择上传文件页面的编码为“utf-8”。
html5页面添加:<meta http-equiv="content-type" content="text/html; charset=UTF-8">;jsp页面添加:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
3、多文件上传的页面的name为同名。如:
<form action="fileUpdown.do" method="post" enctype="multipart/form-data">
文件选择1:<input type="file" name="file">
文件选择2:<input type="file" name="file">
<input type="submit" value="提交">
</form>
4、上传所提交的action代码如下:
@Controller@Scope("prototype")
public class FileUpdown {
private File[] file;
private String[] fileFileName;
private String[] fileContentType;
public void setFileFileName(String[] fileFileName) {
this.fileFileName = fileFileName;
}
public void setFileContentType(String[] fileContentType) {
this.fileContentType = fileContentType;
}
public void setFile(File[] file) {
this.file = file;
}
public String execute(){
try {
for (int i = 0; i < file.length; i++) {
System.out.println(fileContentType[i]);
FileOutputStream os = new FileOutputStream("E:/"+fileFileName[i]);
FileInputStream is = new FileInputStream(file[i]);
int len = 0;
byte[] b = new byte[1024];
len = is.read(b);
while (len!=-1) {
os.write(b,0,len);
len = is.read(b);
}
os.close();
is.close();
}
} catch (Exception e) {
}
return "success";
}
}
四、防止页面重复提交,使用token拦截器
拦截器配置:
<interceptors>
<interceptor-stack name="tokenStack">
<interceptor-ref name="token"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
定向结果配置:
<action name="serch" class="getUser">
<result name="success">showUser.jsp</result>
<result name="invalid.token">error.html</result>
</action>
表单页面:
1、引入Struts2标签库:<%@ taglib prefix="s" uri="/struts-tags" %>
2、表单包含该标签:<s:token></s:token>。
注意事项:上面的action一定要继承ActionSupport类,不然运行抛出空指针异常
Struts2重要知识点总结的更多相关文章
- Struts2的知识点小总结
strust2是 struts1和webwork的结合 (本质相当于servlet) 核心:拦截器 interceptor action ognl和valuestack 使用struts的准备工作 ...
- Struts2 web.xml文件配置
在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...
- Struts2框架基本使用
时间:2017-1-6 16:53 修改struts.xml配置文件不需要重启服务器.Struts2框架 一. * 介绍Struts2 * 关于Struts2 ...
- struts2的action的知识点和利用action向页面注入值的操作
1. Action的顺序,会先搜索指定名字下的包的action,如果找不到会去搜索默认路径下的包下的action. 2. 如果没有给action设置值,那么action会有一些默认 ...
- java学习笔记 (2) —— Struts2类型转换、数据验证重要知识点
1.*Action.conversion-properties 如(point=com.test.Converter.PointListConverter) 具体操作类的配置文件 2.*Action. ...
- struts2知识点复习
一. MVC Model 1:将所有的程序代码,都写到JSP页面中. Model 2:JSP(流程控制.数据显示) + JavaBean 改进的Model2:Servlet(流程控制) + Jsp(数 ...
- Struts2知识点学习笔记
写给自己的话 好记性不如烂笔头,不可能说看了一遍视频就可以完全掌握的.留下这篇笔记,便于今后的复习吧. 1. 访问ServletAPI 访问ServletAPI(response,request,)的 ...
- Struts2知识点小结(一)
一.struts2简介 1.Struts2是一个基于MVC设计模式的Web应用框架 只要是web层框架 一般就会遵守MVC设计模式 2.struts2与struts1的关系? ...
- struts2的琐碎知识点
servlet:void init(ServletConfig cfg):// 读取servlet的配置参数void service(ServletRequest request, ServletRe ...
随机推荐
- Canvas入门到高级详解(上)
神奇的 canvas--AICODER 全栈培训 IT 培训专家 一.canvas 简介 1.1 什么是 canvas?(了解) 是 HTML5 提供的一种新标签 <canvas>< ...
- C# Task中的Func, Action, Async与Await的使用
在说Asnc和Await之前,先说明一下Func和Action委托, Task任务的基础的用法 1. Func Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate, ...
- js对象与字符串的想到转换
js JSON.stringify(jsObj); 对象转字符串JSON.parse(str); 字符串转对象
- Oracle 如何对中文字段进行排序
Oracle 如何对中文字段进行排序 oracle中drop.delete和truncate的区别 oracle里的执行计划-查看
- 一次基于Vue.Js的用户体验优化 (vue drag)
一.写在前面 半年以前,第一次在项目上实践VueJs,由于在那之前,没有Angular,avalon等框架的实践经验,所以在Vue的使用上,没有给自己总结出更多的经验和体验.随着项目进行和优化改版,无 ...
- MySQL命令学习
上面两篇博客讲了MySQL的安装.登录,密码重置,为接下来的MySQL命令学习做好了准备,现在开启MySQL命令学习之旅吧. 首先打开CMD,输入命令:mysql -u root -p 登录MySQ ...
- OpenGL step by step 38 : Skeletal Animation with Assimp
一般骨架模型由两部分组成: Rigging(bone):相当于骨架,可以用来控制模型的动作 Mesh(skin):相当于表面皮肤 骨架模型一般是层级结构的,比如上面 背骨是root,他的孩子包括胳膊. ...
- 关于Intel漏洞的学习
这几天报道了Intel的漏洞,这里学习一下并做个记录. 报告:https://spectreattack.com/spectre.pdf #include <stdio.h> #inclu ...
- JavaScript 运行机制详解
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...
- 《JavaScript》 程序基本知识 数据类型。 {0912上} {0912下}
JS脚本语言: 这是JaxaScript的全称名 JS是网页里面使用的脚本语言 JS是一个非常强大的语言 JS的基础语法 注释语法: 单行注释 // 多行注释 /**/ 输出语法: 双标 ...