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 ...
随机推荐
- [转]spring MultipartFile 转 File
原文地址:https://www.jianshu.com/p/6cf99d39e170 File.createTempFile(String prefix, String suffix); 创建一个临 ...
- mysql索引知识简单记录
简介 今天记录下索引基础知识 1.mysql单表最多支持多少个索引,索引总长度为多少? 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. ...
- 【GMT43智能液晶模块】基于HAL库的SDRAM和LCD驱动例程(MDK工程&CubeMX工程)
说明: 1.该工程基于HAL库实现动态存储器SDRAM驱动以及液晶控制器LCD驱动. 2.工程通过STM32CubeMX(Version 4.22.0)配置生成,可直接打开进行配置. 3.KEIL M ...
- 匿名函数gc分析
测试一:使用member function创建action会产生gc,不管该函数是否访问外部变量: private System.Action memberAct = null; // gc 112B ...
- Ajax+Python flask实现上传文件功能
HTML: <div > <input type="file" name="FileUpload" id="FileUpload&q ...
- elasticsearch以及head插件在centos7上的安装与配置教程
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- 手写一个selenium浏览器池
维护一组浏览器,实现每分钟1000次查询.DriverPool使用变幻版只初始化一次的单例模式.维护每个浏览器的当前是否使用的状态. 不需要等待请求来了,临时开浏览器,开一个浏览器会耽误6秒钟. 可以 ...
- numpy和tensorflow中的广播机制
广播的引出 numpy两个数组的相加.相减以及相乘都是对应元素之间的操作. import numpy as np x = np.array([[2,2,3],[1,2,3]]) y = np.arra ...
- Nodejs 使用Protobuf
参考: Nodejs中使用Protobuf的.proto文件 为了在nodejs服务端使用proto 所以网上找了一些教程,这里实现下. 一 安装protobufjs 在服务端项目文件夹里shift+ ...
- MySQL 5.7新特性之generated column
MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...