一、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. linux php --ini

    $ php --ini

  2. 【原创】SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)

    ABC集团SAP的系统平台已经扩展到全球一百来个国家和地区,SAP系统平台的全球实施项目中, 当时是需要支持当地的业务和法律法规的合规要求. 当时客户也是缺乏当地的资源以及对当地法律法规和业务实践的了 ...

  3. vector 使用 c++11 Lambda 表达式 排序

    struct SIndexDataNew { 1 optional short shtMarket; 2 optional string sCode; 3 optional int iDate; 4 ...

  4. 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁

    不要在 foreach 循环里进行元素的 remove/add 操作.remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁. 正例: Iterator&l ...

  5. 【静默】Oracle各类响应文件何在?

    [静默]Oracle各类响应文件何在? --root用户下执行: find -name *.rsp  / 1.创建数据库的响应文件:$ORACLE_HOME/assistants/dbca/dbca. ...

  6. 【2019年04月03日】A股最便宜的股票

    太钢不锈(SZ000825) - 当前便宜指数:161.66 - 滚动扣非市盈率PE:4.62 - 滚动市净率PB:1.03 - 动态年化股息收益率:4.53% - 太钢不锈(SZ000825)的历史 ...

  7. [hive] hive 内部表和外部表

    1.内部表 hive (test1)> create table com_inner_person(id int,name string,age int,ctime timestamp) row ...

  8. Dynamic seq2seq in tensorflow

    v1.0中 tensorflow渐渐废弃了老的非dynamic的seq2seq接口,已经放到 tf.contrib.legacy_seq2seq目录下面. tf.contrib.seq2seq下面的实 ...

  9. RuntimeException: Type "nmethodBucket*", referenced in VMStructs::localHotSpotVMStructs in the remot

    问题:使用jmap命令查看某个进程的堆情况时(jmap -heap 198376),抛异常如下: Attaching to process ID 198376, please wait...Excep ...

  10. git 处理

    [添加]cd 路径(进入文件夹) git clone url git status (查看状态) cd firstprojected 进入这个文件夹 查看 git status 有 index.php ...