一、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重要知识点总结的更多相关文章

  1. Struts2的知识点小总结

    strust2是 struts1和webwork的结合  (本质相当于servlet) 核心:拦截器 interceptor  action ognl和valuestack 使用struts的准备工作 ...

  2. Struts2 web.xml文件配置

    在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...

  3. Struts2框架基本使用

    时间:2017-1-6 16:53 修改struts.xml配置文件不需要重启服务器.Struts2框架    一.        *   介绍Struts2        *   关于Struts2 ...

  4. struts2的action的知识点和利用action向页面注入值的操作

    1.      Action的顺序,会先搜索指定名字下的包的action,如果找不到会去搜索默认路径下的包下的action. 2.      如果没有给action设置值,那么action会有一些默认 ...

  5. java学习笔记 (2) —— Struts2类型转换、数据验证重要知识点

    1.*Action.conversion-properties 如(point=com.test.Converter.PointListConverter) 具体操作类的配置文件 2.*Action. ...

  6. struts2知识点复习

    一. MVC Model 1:将所有的程序代码,都写到JSP页面中. Model 2:JSP(流程控制.数据显示) + JavaBean 改进的Model2:Servlet(流程控制) + Jsp(数 ...

  7. Struts2知识点学习笔记

    写给自己的话 好记性不如烂笔头,不可能说看了一遍视频就可以完全掌握的.留下这篇笔记,便于今后的复习吧. 1. 访问ServletAPI 访问ServletAPI(response,request,)的 ...

  8. Struts2知识点小结(一)

    一.struts2简介 1.Struts2是一个基于MVC设计模式的Web应用框架        只要是web层框架 一般就会遵守MVC设计模式     2.struts2与struts1的关系?  ...

  9. struts2的琐碎知识点

    servlet:void init(ServletConfig cfg):// 读取servlet的配置参数void service(ServletRequest request, ServletRe ...

随机推荐

  1. bugku的一道图片隐写

    可以看到图片是不完整的就联想到其高宽问题.使用winhex打开 将高里面的01改成11 get flag{He1I0_d4_ba1}

  2. 【资料下载区】【iCore、 iCore2相关资料】更新日期2017/1/11

    [新产品发布][iCore2 ARM / FPGA 双核心板] [iCore系列核心板视频教程]之 SDRAM 读写实验[iCore双核心组合是开发板例程][uCGUI 例程及代码包下载][iCore ...

  3. Windows7系统不显示.gitignore文件名

    从码云拉取项目后,发现Win7下不能显示.giignore文件名. 这是因为Win7系统默认隐藏了已知的拓展名,而.gitignore逗号前没有字符,于是显示的文件命是空白的. 打开工具—文件夹选项, ...

  4. Android 8 蓝牙 A2DP流程

    记录一下蓝牙A2DP的流程 packages\apps\Settings\src\com\android\settings\bluetooth\BluetoothPairingDetail.java ...

  5. golang加油!

  6. Redis防止重複請求鎖功能

    class Lock { const PREFIX_KEY = "MY_LOCK:"; static private $LOCKED = []; static public fun ...

  7. 在iPhone手机上写了input type="date" 显示不出来的原因

    在iPhone手机上写了input type="date" 显示不出来的原因 今天在手机页面上使用新的input类型,这样子写,在chrome浏览器上浏览,很好,显示出来.然后用i ...

  8. 后渗透神器Empire的简单使用

    1.安装 1.1.系统环境: Debian系Linux:例如Ubuntu和Kali(本文使用Kali作为环境) 1.2.安装命令: 安装最后需要输入用户名.密码 wget https://raw.gi ...

  9. VSCode远程调试Go程序方法(Attach)

    set launch.json { "name": "Attach", "type": "go", "requ ...

  10. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”

    “System.InvalidOperationException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: 从不是创建控件“tx ...