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 ...
随机推荐
- perl控制流介绍(if条件,while,for循环,foreach)
1. 语句块:{ }之间的部分即为BLOCK语句块. 2. 条件语句:if ( expression ) BLOCK; if ( expression ) BLOCK1else BLOCK2 ...
- SQLSERVER数据库调优
1.锁表查询 --查看锁住的表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName ...
- vux安装中遇到的坑(转)
1.输入 npm install vux --save 2.输入 npm install vux-loader --save-dev(没安装的时候,会一直报错) 3.build/webpack.bas ...
- JDK 自带的观察者模式源码分析以及和自定义实现的取舍
前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想. java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 pac ...
- c++ 条件变量
.条件变量创建 静态创建:pthread_cond_t cond=PTHREAD_COND_INITIALIZER; 动态创建:pthread_cond _t cond; pthread_cond_i ...
- badgeview
https://github.com/AlexLiuSheng/BadgeView include: compile 'com.allenliu.badgeview:library:1.1.1'(ne ...
- AWS事故总结,几招教你规避风险
版权声明:本文由王煜奕原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/90687001488360802 来源:腾云阁 ht ...
- java项目(学习和研究)
java项目就是研究,不断的对项目进行迭代,把产品做的越来越好,就是research. 自己想着做一个java项目把,可以类似牛客网,想好自己的预期产品,在设计的过程中可以不断改进和扩展,在做这个项目 ...
- mysql中的事物处理
首先,事物的概念,保证一组sql语句操作的完整性,在这个过程中要充分考虑到多用户同时访问数据库数据的情况. 关键词有COMMIT,ROLLBACK,,START TRANSACTION
- 最小生成树 prime+heap
改一个错误真不容易,刚开始没有加上used数组,没有判断每个顶点是否已经加入到数组当中,结果同一个顶点被pop不止一次. struct edge{int to,cost;}; typedef pair ...