×

struts2配置 struts str

struts2配置(配置struts2 默认欢迎页的几种办法)

admin admin 发表于2022-09-05 13:56:21 浏览134 评论0

抢沙发发表评论

本文目录

配置struts2 默认欢迎页的几种办法


首先需要明确的是struts过滤器配置映射的模式是路径匹配还是扩展匹配,如果url-pattern配置为
/*,如果不做特殊处理,是不会转到welcome-file-list设置的文件的。
这种情况,有两种办法解决默认转向:
a.一种是在struts.xml中定义一个默认的action,设置
《default-action-ref name=“index“》《/default-action-ref》
《action name=“index“》
《result type=“dispatcher“》login.jsp《/result》
《/action》
b.一种是定义过滤器继承struts的过滤器,把上下文根路径排除,
不让根路径请求转发到struts的过滤器中去,同时在web.xml定义默认的欢迎页。
欢迎页可以直接是Html或者jsp,在他们中可以定义跳转的action路径。
如: 《meta http-equiv=’refresh’ content=’0;url=login.jsp’》 content中第一个参数为多少秒后跳转
第二种如果把url-pattern配置为 *.action ,
在web.xml定义默认的欢迎页即可,
但是所有的action请求的url都需要加上action后缀否则找不到action配置

如何配置struts2的过滤器


你说的是拦截器吧
第一步:创建一个类实现Intercepter接口并实现其中方法
第二步:注册拦截器(在struts.xml)如:
《package name=“cust“
namespace=“/cust“
extends=“struts-default“》
《interceptors》
《!-- 注册拦截器 --》
《interceptor name=“first“
class=“com.interceptor.FirstInterceptor“/》
《interceptor name=“second“
class=“com.interceptor.SecondInterceptor“/》
《!-- 注册拦截器栈,将所有拦截器打包在一起 --》
《interceptor-stack name=“mystack“》
《interceptor-ref name=“first“/》
《interceptor-ref name=“second“/》
《!-- 引用自定义的拦截器时,会使struts2自带的拦截器失效
因此,要将默认的拦截器加入到自定义的拦截器栈中 --》
《interceptor-ref name=“defaultStack“/》
《/interceptor-stack》
《/interceptors》
《!--第三步: 引用拦截器 ,
《action name=“toUpdateCustomer“
class=“com.action.ToUpdateCustomerAction“
method=“execute“》
《!-- 引用拦截器 ,
《interceptor-ref name=“first“/》
《interceptor-ref name=“first“/》--》
《!-- 引用拦截器栈,会一次将所有的拦截器引用 --》
《interceptor-ref name=“mystack“/》
《result name=“success“》
/WEB-INF/cust/update_customer.jsp
《/result》
《/action》
《/package》
供参考

spring和struts2整合配置文件


一、需要的JAR文件为:Spring和Struts2框架本身需要的JAR文件以及他们所依赖的JAR文件,比如commons-logging.jar等等,另外还需要Struts2发布包中的struts2-spring-plugin-x.xx.jar。
二、在web.xml中增加WebApplicationContext的相应配置,以下两种配置方式本质是一样的。
1. Servlet 2.3及以上版本可以使用监听器,相应配置如下:
《context-param》
《param-name》contextConfigLocation《/param-name》
《param-value》/WEB-INF/classes/applicationContext.xml《/param-value》
《/context-param》
《listener》
《listener-class》org.springframework.web.context.ContextLoaderListener《/listener-class》
《/listener》
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置《context-param》,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件。若存在多个Spring配置文件,则在《param-value》中依次列出,之间以逗号隔开。
2. Servlet 2.3以下版本由于不支持《listener》,需要配置《servlet》,格式如下:
《context-param》
《param-name》contextConfigLocation《/param-name》
《param-value》/WEB-INF/classes/applicationContext.xml《/param-value》
《/context-param》
《servlet》
《servlet-name》contextLoaderServlet《/servlet-name》
《servlet-class》org.springframework.web.context.ContextLoaderServlet《/servlet-class》
《load-on-startup》1《/load-on-startup》
《/servlet》
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置《context-param》,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件,或者是名字为contextConfigLocation的ServletContext参数所指定的文件。由于该Servlet配置只是为了在容器启动时能启动ContextLoaderServlet使其工作,而不需要引用该Servlet,所以不需要配置《servlet-mapping》。
三、在web.xml中完成加载WebApplicationContext之后,接下来就可以做到Spring和Struts2的整合了。整合有两种方法,分别叙述如下:
1. 第一种实现方法:
1) 将Struts的业务逻辑控制器类配置在Spring的配置文件中,业务逻辑控制器中引用的业务类一并注入。注意,必须将业务逻辑控制器类配置为scope=”prototype”!
示例如下:
《bean id=”LoginAction” class=”yaso.struts.action.LoginAction”》
《property name=”loginDao” ref=”LoginDao”/》
《/bean》
2) 在struts.xml或者等效的Struts2配置文件中配置Action时,指定《action》的class属性为Spring配置文件中相应bean的id或者name值。示例如下:
《action name=”LoginAction” class=”LoginAction”》
《result name=”success”》/index.jsp《/result》
《/action》
2. 第二种实现方法:
1) 业务类在Spring配置文件中配置,业务逻辑控制器类不需要配置,Struts2的Action像没有整合Spring之前一样配置,《action》的class属性指定业务逻辑控制器类的全限定名。
2) 业务逻辑控制器类中引用的业务类不需要自己去初始化,Struts2的Spring插件会使用bean的自动装配将业务类注入进来,其实业务逻辑控制器也不是Struts2创建的,而是Struts2的Spring插件创建的。默认情况下,插件使用by name的方式装配,可以通过增加Struts2常量来修改匹配方式:设置方式为:struts.objectFactory.spring.autoWire = typeName,可选的装配参数如下:
a) name:等价于Spring配置中的autowire=”byName”,这是缺省值。
b) type:等价于Spring配置中的autowire=”byType”。
c) auto:等价于Spring配置中的autowire=”autodetect”。
d) constructor:等价于Spring配置中的autowire=” constructor”。
四、如果原先在Struts2中使用了多个object factory,则需要通过Struts2常量显式指定object factory,方式如下:struts.objectFactory = spring;如果没有使用多个object factory,这一步可以省略。
五、可以通过设增加Struts2常量来指定是否使用Spring自身的类缓存机制。可以设定的值为true或false,默认为true。设置方式为:struts.objectFactory.spring.useClassCache = false。
六、至此,完成了两种方式的整合。比较这两种整合方式,其本质是一样的。不同之处在于,使用第二种自动装配的方式时,由于没有在Spring中配置业务逻辑控制器,所以需要对其配置一些AOP之类的内容时就很难实现了。
-struts

myeclipse中怎么开发struts2,包括配置环境,第一个struts2程序,还请详细介绍


第一步,在MyEclipse中新建一个web工程

第二步,将Struts 2 的所有有关jar包导入到 WebRoot/WEB-INF/lib 目录下,有哪些jar包不用我说了吧。

第三步,在src目录下创建Struts 2配置文件struts.xml

第四步,就是编写你的action逻辑处理代码了……


struts2中struts.xml配置详细解析


Struts2中struts.xml的Action配置详解
使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
Package的可以使用的属性:
属性是否必须说明name是Package的表示,为了让其他的package引用
extends否从哪个package继承行为
namespace否参考Namespace配置说明
abstract否
定义这个package为抽象的,这个package中不需要定义action
由于struts.xml文件是自上而下解析的,所以被继承的package要放在继承package的前边。Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Menu和Help action,但是事项方式各有不同。Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找。
例如,有如下配置:
CODE:
《package name=“default“》
《action name=“foo“ class=“mypackage.simpleAction》
《result name=“success“ type=“dispatcher“》
greeting.jsp
《/result》
《/action》
《action name=“bar“ class=“mypackage.simpleAction“》
《result name=“success“ type=“dispatcher“》bar1.jsp《/result》
《/action》
《/package》
《package name=“mypackage1“ namespace=“/“》
《action name=“moo“ class=“mypackage.simpleAction“》
《result name=“success“ type=“dispatcher“》moo.jsp《/result》
《/action》
《/package》
《package name=“mypackage2“ namespace=“/barspace“》
《action name=“bar“ class=“mypackage.simpleAction“》
《result name=“success“ type=“dispatcher“》bar2.jsp《/result》
《/action》
《/package》1 如果请求为/barspace/bar.action
查找namespace:/barspace,如果找到bar则执行对应的action,否则将会查找默认的namespace,在上面的例子中,在barspace中存在名字为bar的action,所以这个action将会被执行,如果返回结果为success,则画面将定为到bar2.jsp
2 如果请求为/moo.action
根namespace(’/’)被查找,如果moo action存在则执行,否则查询默认的namespace,上面的例子中,根namespace中存在moo action,所以该action被调用,返回success的情况下画面将定位到moo.jsp、
Action配置
在struts2框架中每一个Action是一个工作单元。Action负责将一个请求对应到一个Action处理上去,每当一个Action类匹配一个请求的时候,这个Action类就会被Struts2框架调用。
一个Action配置示例:
CODE:
《action name=“Logon“ class=“tutorial.Logon“》
《result type=“redirect-action“》Menu《/result》
《result name=“input“》/tutorial/Logon.jsp《/result》
《/action》每一个Action可以配置多个result,多个ExceptionHandler,多个Intercepter,但是只能有一个name,这个name和package的namespace来唯一区别一个Action。
每当struts2框架接受到一个请求的时候,它会去掉Host,Application和后缀等信息,得到Action的名字,例如如下的请求将得到Welcome这个Action。
struts2中动态方法的调用
可以采用DMI(Dynamic Method Invocation,动态方法)调用来处理这种请求,动态方法调用是指表单元素的action并不是直接等于某个Action的名字,而是以如下形式来指定Form的action属性:
《!-- action属性为actionName!methodName的形式 --》
action=“ActionName!methodName.action“ 《!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN“ “ http://struts.apache.org/dtds/struts-2.0.dtd“ 》
《struts》
《!--include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --》
《include file=“struts-default.xml“》《/include》
《!--package提供了将多个Action组织为一个模块的方式
package的名字必须是唯一的 package可以扩展 当一个package扩展自
另一个package时该package会在本身配置的基础上加入扩展的package
的配置 父package必须在子package前配置
name:package名称
extends:继承的父package名称
abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
--》
《package name=“com.kay.struts2“extends=“struts-default“namespace=“/test“》
《interceptors》
《!--定义拦截器
name:拦截器名称
class:拦截器类路径
--》
《interceptor name=“timer“class=“com.kay.timer“》《/interceptor》
《interceptor name=“logger“class=“com.kay.logger“》《/interceptor》
《!--定义拦截器栈 --》
《interceptor-stack name=“mystack“》
《interceptor-ref name=“timer“》《/interceptor-ref》
《interceptor-ref name=“logger“》《/interceptor-ref》
《/interceptor-stack》
《/interceptors》
《!--定义默认的拦截器 每个Action都会自动引用
如果Action中引用了其它的拦截器 默认的拦截器将无效 --》
《default-interceptor-ref name=“mystack“》《/default-interceptor-ref》
《!--全局results配置 --》
《global-results》
《result name=“input“》/error.jsp《/result》
《/global-results》
《!--Action配置 一个Action可以被多次映射(只要action配置中的name不同)
name:action名称
class: 对应的类的路径
method: 调用Action中的方法名
--》
《action name=“hello“class=“com.kay.struts2.Action.LoginAction“》
《!--引用拦截器
name:拦截器名称或拦截器栈名称
--》
《interceptor-ref name=“timer“》《/interceptor-ref》
《!--节点配置
name : result名称 和Action中返回的值相同
type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
--》
《result name=“success“type=“dispatcher“》/talk.jsp《/result》
《!--参数设置
name:对应Action中的get/set方法
--》
《param name=“url“》 http://www.sina.com《/param》
《/action》
《/package》
《/struts》
-str

struts2的web.xml怎么配置


任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。
通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载Struts2框架。
因为Struts2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispatcher,只需要在web.xml文件中配置FilterDispatcher即可。
标准配置文件如下:
《?xml version=“1.0“ encoding=“UTF-8“?》
《web-app id=“WebApp_9“ version=“2.4“ xmlns=“
-struts

简述Struts2的配置文件包括哪些元素


1、package元素
package用来管理action:使用了面向对象的思想
属性:
name:用来定义包名,注意:同一个配置文件中包名是唯一的。
extends:指定所继承的包,一般情况下需要继承struts-default包
truts-default.xml中定义着struts-default这个包。
truts-default.xml是在我们的struts.xml加载之前加载。
abstract:指定包是抽象的,只能被继承,含有action的包不能是抽象的,默认值是false。
namespace:名称空间
名称空间 + 动作名称 = 访问路径
《package name=“p1“ extends=“struts-default“ namespace=“/a/b“》《/package》
1
struts2查找动作的方法:
1:先按照用户输入的路径查找路径: /a/b/c/d/action1.action
如果没有找到再向上一层路径找:/a/b/c 找到了(不会再继续向上找)该路径则执行第二步
再向上一层路径找:/a/b 找到了(不会再继续向上找)该路径则执行第二步,找不到继续向上一级找
再向上一层路径找:/a 没找到 找到了(不会再继续向上找)该路径则执行第二步
再找/ 也没有的话去默认命名空间下找。
都没找到直接报错
2:找action: 先在当前的命名空间下找 ,如果没有找到则取默认的命名空间(没有写namespace属性的)下找 ,如果还找不到报错
一般只要我们有默认命名空间的pakege标签时,第一步是不会报错的。
-str

eclipse怎么配置struts2


  工具:

  eclipse

  方法如下:

  1. 打开Eclipse,选择菜单Window-》Preferences-》Java-》Build Path-》User Libraries。

  2. 点击右侧的New…按钮,创建一个新的用户库,弹出如图所示对话框

  3. 输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。

  4.  此时,右侧的按钮被点亮。点击“Add External JARS…”按钮,添加用户库所需的库文件;选择添加刚才解压的struts2-blank-2.war下WEB-INF/lib中的所有jar包。

  5. 点击“OK”完成。


eclipse怎样配置成struts2


eclipse配置成struts2的方法:

1、通过菜单新建项目,打开如下画面,选择建立动态项目

2、点击Next后如下图,输入新建的项目名,如果前面的设置正确的话,此时Target Runtime栏中Tomcat会自动

显示出来,也可点击New弹出对话框来新建一个Server,过程和前面Server创建过程一样。

3、可以直接点击Finish结束项目创建。建好的项目结构如下图。

4、在新建的项目名上点击鼠标右键选择属性。

在弹出的属性对话框中得知你的项目的位置。如下图。

5、配置Struts2项目

在前面建立的项目基础上开始追加Struts2的功能。

1) 添加Struts2的开发包。

从解压缩的struts2-blank-2.0.6.war目录下lib目录中的所有.jar文件拷贝到新建的项目的lib目录下。

拷贝方法可以是,选中此lib目录下的所有文件,点击右键,选择复制。

然后再Eclipse中在lib目录上点击右键选择粘贴,如下图

然后在项目名上点击右键选择刷新,或者按F5。

然后在如下目录中就会发现新追加的jar包。

2 拷贝Web.xml文件

选择上面的web.xml文件并复制,在Eclipse中在web.xml上粘贴。

3 拷贝Struts.xml文件以及相关的java文件和其他的xml配置文件

选择上述文件及文件夹,拷贝到下面位置。注意,这次是在Package Explorer中进行粘贴,在Project Explorer

中不能正确粘贴。


Eclipse怎样配置struts2


工具/原料

struts-2.3.16.1

Eclipse

一、下载strut2

1、在官网下载最新版的Struts2.从图中可以看出,即可以分开下载,又可以一次全部下载。选择全部下载。

2、下载后将压缩包解压到磁盘根目录。

3、进入struts-2.3.16.1文件,可以看到包含如下文件夹:

4、文件夹作用见下表:

5、lib文件包含了上百个库文件,但大多数是可选的,有些库是插件,用于和其他框架的整合。开发时不必全部用到这些库文件,根据apps文件下的模板工程查看需要哪些jar包。进入apps文件看到struts2自带了5个工程模板。-struts

6、用解压缩工具解压期中的struts2-blank-2.war压缩包,展开后是一个非常简单的项目,从WEB-INF/lib目录中可以看到多个个库文件,主要的库解释如下:

二、使用Eclipse搭建Struts2的开发环境

1、 创建用户库,将Struts2所需的包建成用户库,可以更加方便地进行管理和使用。打开Eclipse,选择菜单Window-》Preferences-》Java-》Build Path-》User Libraries。-str

2、点击右侧的New…按钮,创建一个新的用户库,弹出如图所示对话框

3、输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。

4、 此时,右侧的按钮被点亮。点击“Add External JARS…”按钮,添加用户库所需的库文件;选择添加刚才解压的struts2-blank-2.war下WEB-INF/lib中的所有jar包。-struts

5、点击“OK”完成。