1、Structs中基本配置入门Structs中基本配置入门分类:Struts2005-08-05 07:465253人阅读评论(0)收藏举报第一章Structs的基本配置1.为Structs应用配置Web.xml文件第一步:配置ActionServletactionorg.appache.structs.ActionServletaction*.do注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个ActionServlet。第二步:初始化参数对Servlet的运行环境进行初始化配置
2、。actionorg.appache.structs.ActionServletconfig/WEB-INF/structs-config.xml表2-1.Struts1.1中用到的初始化参数参数名含义/默认值config以相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml。config/sub1以相对路径的方式指明子应用程序的配置文件位置,一般来说,很少用到子应用程序,在此不多描述。debug设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。detail设置Digester
3、的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。第三步:配置欢迎清单当客户访问Web应用时,如果仅仅给出Web应用的RootURL,没用指定具体的文件名,Web容器会自动调用Web应用的欢迎文件。welcome.jspindex.jsp说明:可以包含多个子元素,首先查找第一个文件。由于元素中不能配置Servlet映射,因此不能直接把Structs的Action作为欢迎文件,可以采用一种变通的方法来实现在欢迎文件中调用StructsAction。首先,在Structs配置文
4、件中为被调用的Action创建一个全局的转发项,例如:创建一个welcome.jsp的文件最后在web.xml文件中把welcome.jsp文件配置为欢迎文件,代码如下:welcome.jsp第四步:配置错误处理404/commom/404.jsp505/commom/505.jsp也可以为Web容器捕获的Java异常配置,需要设置子元素,它用于指定Java异常类。Web容器可能捕获如下异常:RuntimeException或ErrorServletException或它的子类IOException或它的子类java.io.IOException/common/system_ioerror.j
5、sp第五步:配置Structs标签库使用客户化的标签库,要配置它们/WEB-INF/structs-html.tld/WEB-INF/structs-html.tld用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。指定标签描述文件在文件资源系统中的物理位置。2Structs配置文件Structs框架在启动时会读入其配置文件,根据它来创建和配置各种Structs组件。1元素元素是Structs配置文件的根元素,元素有8个子元素。它的DTD定义如下:在Struts配置中,必须按照以上的DTD指定的先后顺序来配置元素的各个子元素,如果颠倒了这些元素的配置文件中的位置,在
6、Structs应用启动时会生成错误。元素元素包含零个、一个或者多个子元素,用于配置特定的数据源,它可以包含多个子元素,用于设置数据源的各种属性。配置了数据源后,就可以在Action类中访问数据源,在org.apache.structs.action.Action类中定义了getDataSource(HttpRequrst)方法,它用于获取数据源对象的引用。DataSourcedataSource;Connectionconnection;dataSource=getDataSource(request);connection=dataSource.getConnection();也可以在配置文
7、件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过改值来标识特定的数据源。2元素元素用来配置多个ActionFormBean,包含多个子元素,,每个包含多个属性,ClassName,name,type注意:配置动态ActionFormBean,还必须配置元素的元素。3元素用于配置异常处理,元素可以包含零个或者多个元素。元素用来设置java异常和异常处理类org.apache.structs.action,ExceptionHander之间的映射。4元素元素用来声明全局的转发关系,有零个或多个元素组成。元素用于把一个逻辑映射到特定的URL属性描述className和元素对应的配置
8、类,默认为org.apache.structs.action.ActionForWardname转发路径的逻辑名,此项时必须的path指定或者重定向的URI。此项时必须的,必须以”/”开头redirect此项是true,表示是执行重定向的操作,此项是false时,表示请求转发。如果jsp1.jsp把请求转发给Action1,可以使用以下代码:或者如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码:return(mapping.findForward(“forward2”)5元素元素包含零个或者多个元素。元素描述了从特定的请求路径到相应的Action类的映射
9、。6元素元素用于配置ActionServlet。7元素元素用于配置ResourceBundle,ResourceBudle用于存放本地化消息文件。Structs标签HTML标签标签名描述base包装HTML的base元素button包装HTML的button类型的input元素cancel包装HTMLcancel按钮checkbox包装HTMLcheckbox类型的输入域errors有条件地显示一些error消息,显示ActionErrors信息file包装HTML文件上传输入域form定义HTMLform元素frame包装HTMLframe元素hidden包装HTMLhidden输入域htm
10、l包装HTML中的html元素image包装image类型的输入域img包装HTML的img元素javascript包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本link包装超链接messages有条件地显示一些提示信息,显示ActionMessages信息multibox包装多选输入框option包装一个选择输入框options包装一批选择输入框optionsCollection包装一批选择输入框集password包装密文输入框radio包装单选输入框reset包装“重置”功能的按钮rewrite包装一个URLselect包装一个选择输入框submi
11、t包装一个提交按钮text包装一个文本输入框textarea包装一个备注输入框ActionFormActionForm的要求创建一个ActionForm并不困难,但是你的类必须符合一些要求:ActionForm必须扩展自org.apache.struts.ActionForm。基类ActionForm是不能实例化的。ActionForm必须为每个应该从请求中收集的HTML控件定义一个公共属性。(Struts1.0要求每个属性都要mutator和accessor。Struts1.1则没有如此严格)ActionForm还可能要符合一些可选的要求:如果你要求ActionForm在传递属性到Actio
12、n之前校验它们,你就必须实现validate方法;如果想在组装前初始化属性,必须实现reset,它在ActionForm组装前被调用;动态ActionFormActionForm作为类型转换器ActionForm的一个强制点是应该使用String和boolean属性。实际上,这意味着属性必须得从一种转换到另一种类型。大部分应用也需要一些属性,比如电话号码或者数量,以一种格式化的方式出现。核心Java包提供一些工具来做这种事情,但是要清楚地将他们集成到应用中仍然是一个挑战。Struts开发人员经常在ActionForm中包含helper方法,来进行类型转换。helper方法可以有很多种实现方式,
13、这我们在5.6种叙述。5.2.6ActionForm作为防火墙当请求提交时,ActionServlet使用一个自动组装机制来从请求参数中设置请求的ActionForm属性。这让你可以通过控制哪个ActionForm属性被暴露来控制哪个请求参数是可接受的。这也意味着如果你的ActionForm的粗心设计你可能失去控制哪个参数可以接受的能力。ActionForm一定不能包含看起来像是一个JavaBean属性,但不能从HTTP请求设置的属性方法。5.3.4ActionForm可以嵌套其它bean因为Struts标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它bean。这是一个方便
14、的方式,可以通过ActionForm来组装存在的bean。在JSP页面,你可以象这样引用一个嵌套的bean:5.7.2分发(Dispatch)Struts开发人员通常使用同一个Action处理相关的操作。一个通常做法来选择操作是在HTML表单中使用隐藏属性。BaseForm的dispatch属性也可用作这个目的:publicvoidsetDispatch(Stringdispatch);publicStringgetDispatch();Struts配置提供连个级别嵌套的ActionForward:Global(全局)ActionForward对整个应用中的所有Action对象均有效;Local(局部)ActionForward则在ActionMapping元素中定义。仅对那些在这个ActionMapping中调用的Action对象有效。从Action对象内部来看,forward通常像这样来选择:ActionForwardforward=mapping.findForward(continue);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1