新建structs2 web应用及structs.xml常用基础配置
建立一个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常用基础配置的更多相关文章
- web.xml常用元素配置
tomcat服务器: tomcat是一个WEB服务器,所有的j2ee WEB程序可以在此处运行. tomcat服务器是一个符合j2ee标准的WEB服务器.则J2ee的EJB程序无法在此处运行. 如果要 ...
- Maven pom.xml 常用打包配置
<build> <!-- 指定JAVA源文件目录 --> <sourceDirectory>src</sourceDirectory> <!-- ...
- 大神教你Nginx常用基础配置方案
Nginx的fastcgi模块参数设置 Nginx 有两个配置文件fastcgi_params.fastcgi.conf,两者唯一的区别是,fastcgi.conf 多一个参数 SCRIPT_FILE ...
- Idea - 常用基础配置
前言 IntelliJ IDEA是我们开发常用的一大神器,深得众程序猿青睐,但是在使用过程中,有一些默认设置我们使用起来并不是很友好...这里就记录一些我使用的配置. 1.多行显示同时打开的多个文件 ...
- web.xml常用配置详解
web.xml常用配置详解 context-param 指定 ServletContext(上下文) 配置文件路径,基本配置一般是Spring配置文件,或者是spring-security的配置文件. ...
- 用Eclipse新建一个web项目没有自动生成web.xml
我们首先打开Eclipse,如下: 我们可以看到在"WEB-INF"文件夹下没有web.xml文件. 这是是什么原因呢,我们来看看,我们首先来新建一个web工程,如下: ...
- web.xml常用元素
web.xml文件是用来初始化配置信息:比如welcome页面.servlet.servlet-mapping.filter.listener.启动加载级别等.当你的web工程没用到这些时,你可以不用 ...
- web.xml常用标签整理(不定期更新)
<?xml version="1.0" encoding="UTF-8"?><!-- 标明使用的XML版本和文档编码,此项必须位于第一行,之前 ...
- 关于Eclipse新建Dynamic Web Projecj默认未创建web.xml的问题
当使用eclipse新建Dynamic Web Projecj时,由于J2EE技术规范的更新,当使用Dynamic web module version默认版本为3.0时,将默认不会创建web.xml ...
随机推荐
- FFmpeg学习1:视频解码
在视频解码前,先了解以下几个基本的概念: 编解码器(CODEC):能够进行视频和音频压缩(CO)与解压缩(DEC),是视频编解码的核心部分. 容器/多媒体文件(Container/File):没有了解 ...
- Federated Identity Pattern 联合身份模式
Delegate authentication to an external identity provider. This pattern can simplify development, min ...
- Moon.Orm 入门总指南
注意:下面的pdf文件强烈建议下载或在线查看 1)旗舰版帮助文档点击查看或下载 2)http://pan.baidu.com/s/1hq7krFu(新手手册下载)(强烈推荐) 3)性能及规范下载,网友 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 5 - 数据库设计
数据库方面我们需要的主要功能如下: 联系人有姓名和电子邮件地址. 联系人可以拥有多个地址. 联系人可以拥有多个电话. 为了实现目标,我们需要在数据库中创建下列表.表与表的关系如下图所示: 数据库的脚本 ...
- 使用图片视频展示插件blueimp Gallery改造网站的视频图片展示
在很多情况下,我们网站可能会展示我们的产品图片.以及教程视频等内容,结合一个比较好的图片.视频展示插件,能够使得我们的站点更加方便使用,也更加酷炫,在Github上有很多相关的处理插件可以找来使用,有 ...
- MFC背景透明
# 一: # typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, ...
- C# Linq排序
今天在家看了一下linq,实践了一下书中代码,发现排序和查重的先后顺序太重要了. using System; using System.Collections.Generic; using Syste ...
- bodyparser
今天在用bodyparser时,遇到了如下问题: 首先科普下bodyparser的作用:它用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理. 现在继 ...
- 数据库---实验四 oracle的安全性和完整性控制
实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...
- Mysql增加、删除和修改列属性和约束,和一些有用的查询语句
最近在整理关于MySql的东西,把一些需要记录的东西写下来,以便以后查询和浏览,以下是一些操作技巧.添加表字段alter table` 表名称` add transactor varchar(10) ...