建立一个struts2 web应用程序

1. 创建一个基本的web应用程序

2. 添加struts2的jar文件到Class Path

将struts2的最小jar包拷到WEB-INF/lib目录,包括以下文件:

 asm-x.x.jar
asm-commons-x.x.jar
asm-tree-x.x.jar
commons-fileupload-X.X.X.jar
commons-io-X.X.X.jar
commons-lang3-X.X.X.jar
commons-fileupload-X.X.X.jar
freemarker-X.X.X.jar
javassist-X.X.X.jar
ognl-X.X.X.jar
struts2-core-X.X.X.X.jar
xwork-core-X.X.X.jar

3. 为struts2添加Servlet Filter

只有在WEB-INF/web.xml中添加了struts2的Servlet Filter和filter-mapping后stuts2才能运行。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.*</url-pattern>
</filter-mapping>

4. 添加struts.xml

如果不显示指定,运行时struts.xml的默认位置为Source Folder on Build Path(源文件默认src目录)的编译输出位置(默认WEB-INF/lib/classes)。如果要更改struts.xml的位置,需要在web.xml中更改struts2 Servlet Filter的初始化属性。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<!-- 指定struts.xml位置为WEB-INF/classes/struts/struts.xml,也就是对应源文件位置src/struts/struts.xml -->
<param-value>struts/struts.xml</param-value>
</init-param>
</filter>

struts.xml常用基本配置

1. 常用的基本标签

  • <const name="....." value="..." />。 设置常量值
  • <include file="包含的其它struts配置文件.xml" />
  • <package name="package名称" extends="该package继承自" namespace="命名空间(请求地址action的父级)"></package>
  • <action name="action名(请求地址中action名)或者带通配符*" class="处理该请求的Action类的全限定名" method="处理该请求的Action类的中的方法名(如前前面有通配符,用{1}指代第1个通配符)"></action>
  • <global-results></global-results>。放在某个package里,里面存放全局的<result>,如果局部没有对应的<result>标签则查找全局<result>
  • <result name="Action类中方法处理的返回结果" type="">要转向的页面或action</result>。局部<result>标签可以作为<action>的子元素,也可以作为<global-results>的子元素
  • <interceptors></interceptors>。放在某个package里,里面存放所有的<interceptor>和<interceptor-stack>
  • <interceptor name="inteceptor名称" class="该inteceptor对应的类(继承MethodFilterInterceptor或AbstractInterceptor等)全限定名" />
  • <interceptor-stack name="拦截器栈的名称">。
  • <interceptor-ref name="被引用的interceptor名" />。存放一个interceptor的引用,如果该标签定义在<action></action>内,表示拦截指向该action的请求。继承自struct-default的package里的action都会调用名为defaultStack的interceptor,除非在<action>内定义有interceptor-ref,或者重新定义一个名为defaultStack的interceptor-stack,或者设置<default-interceptor-ref>。
    另外,<interceptor-ref>标签内可以设置参数:<param name="excludeMethods">不需要拦截的地址(可以用逗号隔开不同地址、带通配符*)</param>。
  • <default-interceptor-ref name="interceptor-stack名"/>。用来设置该package中的默认拦截器

2. Action类的实现

struts2中不要求Action类需要继承自哪些struts2的某些基类或实现struts2的某些接口,因此是低侵入性的。但一般为了设计的方便都会让它继承ActionSupport类并重载execute方法。struts2中Action的参数传递一般分为两种方式:属性驱动和模型驱动;Action中访问Servlet API是通过ActionContext实现的;一个Action通过不同方法处理多个请求时可以通过设置请求url="action!|方法名"或设置<action>标签的method属性实现。

2.1 Action参数传递方式

属性驱动:即是通过Action封闭请求的参数,Action中需要有传递的参数(以及返回结果)属性且都必须有getter和setter方法。如此一来,用户向Servlet发送的请求数据就需要是这种格式:name:....,pwd:....。而Action就要用name、pwd属性以及两者的getter和setter方法。

模型驱动:也就是通过javaBean实现参数的传递。需要有一个传递的参数的类,另外Action必须实现ModelDriven<传递参数的类型>。假设我们要向Action传递一个User类对象(包含name和pwd),那么用户发送请求时,参数的格式就是usr.name:....,usr.pwd:....;同时Action里有一个usr属性和usr的getter和setter方法。

2.3 ActionContext

ActionContext里存储了当前Action的上下文信息。每一个由于用户请求而创建的线程都对应一个有效的ActionContext对象。静态方法ActionContext.getContext()返回当前线程的ActionContext。常用的方法有get/set, getParameters, get/setSession等。另外可以用Action.getContextMap获取ActionContext中存储的Map数据。

2.4 一个Action处理多个请求

如果要实现动态方法调用,需要在struts.xml中设置常量struts.enable.DynamicMethodInvocation为true

第一种方式:struts.xml中action的配置如下,调用时只须直接userlogin即可。

<action name="userlogin" class="com.nics.action.LoginAction" method="doNotNeedInterceptor_userLogin">

第二种方式:struts.xml中的配置如下,调用时则需要userlogin!|loginFunction。其中loginFunction是LoginAction里的一个方法

<action name="userlogin" class="com.nics.action.LoginAction">

新建structs2 web应用及structs.xml常用基础配置的更多相关文章

  1. web.xml常用元素配置

    tomcat服务器: tomcat是一个WEB服务器,所有的j2ee WEB程序可以在此处运行. tomcat服务器是一个符合j2ee标准的WEB服务器.则J2ee的EJB程序无法在此处运行. 如果要 ...

  2. Maven pom.xml 常用打包配置

    <build> <!-- 指定JAVA源文件目录 --> <sourceDirectory>src</sourceDirectory> <!-- ...

  3. 大神教你Nginx常用基础配置方案

    Nginx的fastcgi模块参数设置 Nginx 有两个配置文件fastcgi_params.fastcgi.conf,两者唯一的区别是,fastcgi.conf 多一个参数 SCRIPT_FILE ...

  4. Idea - 常用基础配置

    前言 IntelliJ IDEA是我们开发常用的一大神器,深得众程序猿青睐,但是在使用过程中,有一些默认设置我们使用起来并不是很友好...这里就记录一些我使用的配置. 1.多行显示同时打开的多个文件 ...

  5. web.xml常用配置详解

    web.xml常用配置详解 context-param 指定 ServletContext(上下文) 配置文件路径,基本配置一般是Spring配置文件,或者是spring-security的配置文件. ...

  6. 用Eclipse新建一个web项目没有自动生成web.xml

    我们首先打开Eclipse,如下:   我们可以看到在"WEB-INF"文件夹下没有web.xml文件.   这是是什么原因呢,我们来看看,我们首先来新建一个web工程,如下:   ...

  7. web.xml常用元素

    web.xml文件是用来初始化配置信息:比如welcome页面.servlet.servlet-mapping.filter.listener.启动加载级别等.当你的web工程没用到这些时,你可以不用 ...

  8. web.xml常用标签整理(不定期更新)

    <?xml version="1.0" encoding="UTF-8"?><!-- 标明使用的XML版本和文档编码,此项必须位于第一行,之前 ...

  9. 关于Eclipse新建Dynamic Web Projecj默认未创建web.xml的问题

    当使用eclipse新建Dynamic Web Projecj时,由于J2EE技术规范的更新,当使用Dynamic web module version默认版本为3.0时,将默认不会创建web.xml ...

随机推荐

  1. PHP用单例模式实现一个数据库类

    使用单例模式的出发点: 1.php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源. 2.如果系统中需要有一个类来全局控制某些 ...

  2. JQuery Sizzle引擎源代码分析

    最近在拜读艾伦在慕课网上写的JQuery课程,感觉在国内对JQuery代码分析透彻的人没几个能比得过艾伦.有没有吹牛?是不是我说大话了? 什么是Sizzle引擎? 我们经常使用JQuery的选择器查询 ...

  3. 不懂CSS也能定制博客界面!

    之前没想过定制博客界面,毕竟CSS,HTML什么的都不懂,不过看了这篇文章分分钟搞定: [详细图解]一步一步教你自定义博客园(cnblog)界面 我是基于模板BlueSky做了些改动,先看修改前后的效 ...

  4. 基于STM32Cube的IIC主从通信

    1.建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的 ...

  5. 使用VS Code从零开始开发调试.NET Core 1.0

    使用VS Code 从零开始开发调试.NET Core 1.0. .NET Core 是一个开源的.跨平台的 .NET 实现. VS Code 全称是 Visual Studio Code,Visua ...

  6. 深度解析C语言int与unsigned int

    就如同int a:一样,int 也能被其它的修饰符修饰.除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char.int.Int是 ...

  7. php分页原理

    <?php //包含连接MySQL的文件 include "conn.php"; //分页的相关变量 $pagesize = 5; //每页显示条数 //获取地址栏中传递的p ...

  8. easyUI属性汇总

    CSS类定义: 1.div easyui-window 生成一个window窗口样式. 属性如下: 1)modal:是否生成模态窗口.true[是] false[否] 2)shadow:是否显示窗口阴 ...

  9. linux(十二)___Apache服务器用户认证、虚拟主机的配置

    创建xiangkejin  zhangsan两个用户 可看见文件中创建的两个用户: 建立虚拟目录并配置用户认证 ①建立虚拟目录 /xiangkejin ②在Apache的主配置文件httpd.conf ...

  10. 关于css3的背景渐变

    关于css3的渐变,目前各大浏览器还未做到很好的支持,所以需要在我们使用时加上各大浏览器前缀. -moz-:使用Mozilla内核的浏览器(Firefox浏览器) -webkit-:使用Webkit内 ...