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 ...
随机推荐
- LZW算法PHP实现方法 lzw_decompress php
LZW算法PHP实现方法 lzw_decompress php 博客分类: Php / Pear / Mysql / Node.js LZW算法简介 字符串和编码的对应关系是在压缩过程中动态生成的 ...
- CRC码计算及校验原理的最通俗诠释
5.3.2 循环冗余校验检错方案 奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误. 1. CRC校验原理 CRC校验原理看起来比 ...
- SparkStreaming+Kafka 处理实时WIFI数据
业务背景 技术选型 Kafka Producer SparkStreaming 接收Kafka数据流 基于Receiver接收数据 直连方式读取kafka数据 Direct连接示例 使用Zookeep ...
- You can't specify target table 'ship_product_cat' for update in FROM clause
有时候我们在编辑update时需要select作为条件,在mysql中有时会出现这样的错误:You can't specify target table for update in FROM clau ...
- [转]springboot2 webflux 响应式编程学习路径
原文链接 spring官方文档 springboot2 已经发布,其中最亮眼的非webflux响应式编程莫属了!响应式的weblfux可以支持高吞吐量,意味着使用相同的资源可以处理更加多的请求,毫无疑 ...
- ASP.NET Core MVC+EF Core从开发到部署
笔记本电脑装了双系统(Windows 10和Ubuntu16.04)快半年了,平时有时间就喜欢切换到Ubuntu系统下耍耍Linux,熟悉熟悉Linux命令.Shell脚本以及Linux下的各种应用的 ...
- linux下批量杀死进程
ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入.下面 ...
- 【CF446D】DZY Loves Games 高斯消元+矩阵乘法
[CF446D]DZY Loves Games 题意:一张n个点m条边的无向图,其中某些点是黑点,1号点一定不是黑点,n号点一定是黑点.问从1开始走,每次随机选择一个相邻的点走过去,经过恰好k个黑点到 ...
- 哈密顿绕行世界问题 (dfs)
一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行 ...
- Struts2与spingmvc区别
1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...