初学者入门:Structs中基本配置入门

初学者入门:Structs中基本配置入门,第1张

为Structs应用配置Web xml文件 第一步:配置ActionServlet<servlet><servlet name>action</servlet name><servlet class>appache structs ActionServlet</servlet class></servlet><servlet mapping><servlet name>action</servlet name><uri pattern>* do</url pattern></servlet mapping>注意:不管应用中包含多少个子应用 都只需配置一个ActionServlet 因为ActionServlet支持多线程 目前的Structs框架只允许在应用中配置一个ActionServlet 第二步 初始化参数对Servlet的运行环境进行初始化配置 <servlet><servlet name>action</servlet name><servlet class>appache structs ActionServlet </servlet class><init param><param name>config</param name><param value>/WEB INF/structs config xml</param value></init param></servlet>表 Struts 中用到的初始化参数参数名 含义/默认值config 以相对路径的方式指明Struts应用程序的配置文件位置 如不设置 则默认值为/WEB INF/struts config xml config/sub 以相对路径的方式指明子应用程序的配置文件位置 一般来说 很少用到子应用程序 在此不多描述 debug  设置Servlet的debug级别 控制日志记录的详细程度 默认为 记录相对最少的日志信息 detail 设置Digester的debug级别 Digester是Struts框架所使用的用来解析xml配置文件的一个框架 通过该设置 可以查看不同详细等级的解析日志 默认为 记录相对最少的日志信息 第三步 配置欢迎清单当客户访问Web应用时 如果仅仅给出Web应用的Root URL 没用指定具体的文件名 Web容器会自动调用Web应用的欢迎文件 <wele file list><wele file>wele jsp</wele file><wele file>index jsp</wele file></wele fiel list>说明 <wele file list>可以包含多个<wele file>子元素 首先查找第一个<wele file>文件 由于<wele file list>元素中不能配置Servlet映射 因此不能直接把Structs的Action作为欢迎文件 可以采用一种变通的方法来实现在欢迎文件中调用Structs Action 首先 在Structs配置文件中为被调用的Action创建一个全局的转发项 例如 <global forwards><forward name= wele path= HelloWord do /></global forwords>创建一个wele jsp的文件最后在web xml文件中把wele jsp文件配置为欢迎文件 代码如下 <wele file list><wele file>wele jsp</wele file></wele file list>第四步 配置错误处理<error page><error code></error code><location>/mom/ jsp</location></error page><error page><error code></error code><location>/mom/ jsp</location></error page>也可以为Web容器捕获的Java异常配置<error page>需要设置<exception type>子元素 它用于指定Java异常类 Web容器可能捕获如下异常 RuntimeException或Error  ServletException或它的子类 IOException或它的子类<error page><exception type>java io IOException</exception type><location>/mon/system_ioerror jsp</location></error page>第五步 配置Structs标签库使用客户化的标签库 要配置它们<taglib><tag uri>/WEB INF/structs tld<tag uri><taglib location>/WEB INF/structs tld</taglib location></taglib><tag uri>用于指定标签库的相对或者绝对URI地址 Web应用根据这一URI来访问标签库 <taglib location>指定标签描述文件在文件资源系统中的物理位置Structs配置文件 Structs框架在启动时会读入其配置文件 根据它来创建和配置各种Structs组件 <Structs config>元素<structs config>元素是Structs配置文件的根元素 <structs cofig>元素有 个子元素 它的DTD定义如下 <!ELEMENT structs config(data sources? formbean? global exeception? global forward? action mapping controller? message resources* plug in*)>在Struts配置中 必须按照以上的DTD指定的先后顺序来配置<Structs config>元素的各个子元素 如果颠倒了这些元素的配置文件中的位置 在Structs应用启动时会生成错误 <data sources>元素<data sources>元素包含零个 一个或者多个<data sources>子元素 <data sources>用于配置特定的数据源 它可以包含多个<set property>子元素 用于设置数据源的各种属性 配置了数据源后 就可以在Action类中访问数据源 在 apache structs action Action类中定义了getDataSource(HttpRequrst)方法 它用于获取数据源对象的引用 DataSource dataSourceConnection connectiondataSource =getDataSource(request)connection=dataSource getConnection()也可以在配置文件中声明多个数据源 此时需要为每一个数据源分配唯一的key值 通过改值来标识特定的数据源 <form beans>元素<form beans>元素用来配置多个ActionForm Bean <form beans>包含多个<forom bean>子元素 每个<from bean>包含多个属性 ClassName name type<form beans><form bean name= HelloForm type= hello HelloForm /></form beans>注意 配置动态ActionForm Bean 还必须配置<form bean>元素的<form property>元素 <form beans><form bean name= HelloForm type= hello HelloForm /><form bean name= userForm type= apache structs action DynaAction ><from property name= firstname type= java lang String /><form property name= secondname type= java lang String ><form property name= age type= java Integer initial= ></form beans><global exception>元素<global exception>用于配置异常处理 <global exception>元素可以包含零个或者多个<exception>元素 <exception>元素用来设置java异常和异常处理类 apache structs action Exception Hander之间的映射 <gloable forwards>元素<global forwards>元素用来声明全局的转发关系 <global forwards>有零个或多个<forward>元素组成 <forward>元素用于把一个逻辑映射到特定的URL属性描 述className和<forward>元素对应的配置类 默认为 apache structs action ActionForWardname 转发路径的逻辑名 此项时必须的path 指定或者重定向的URI 此项时必须的 必须以 / 开头redirect 此项是true 表示是执行重定向的 *** 作 此项是false时 表示请求转发 <global forwards><forward name= forward path= /Action do /><forward name= forward path= /Action do /></global forwards>如果jsp jsp把请求转发给Action 可以使用以下代码 <:link forward= forward >或者<logic:forward name= forward >如果Action 的execute()方法把请求转发给JSP jsp 可以使用一下代码 return(mapping findForward( forward )) <action mapping>元素<action mapping>元素包含零个或者多个<action>元素 <action>元素描述了从特定的请求路径到相应的Action类的映射 <controller>元素<controller>元素用于配置ActionServlet <message resources>元素<message resources>元素用于配置Resource Bundle Resource Budle用于存放本地化消息文件 Structs标签HTML标签标签名描述base 包装HTML的base元素button  包装HTML的 button类型的input元素cancel  包装HTML cancel 按钮checkbox 包装HTML checkbox 类型的输入域errors  有条件地显示一些error消息 显示ActionErrors信息file 包装HTML文件上传输入域form 定义HTML form 元素frame包装HTML frame 元素hidden  包装HTML hidden 输入域 包装 HTML中的 元素image包装 image 类型的输入域img 包装HTML的 img 元素javascript  包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本link 包装超链接messages 有条件地显示一些提示信息 显示ActionMessages信息multibox 包装多选输入框option  包装一个选择输入框options 包装一批选择输入框optionsCollection包装一批选择输入框集password 包装密文输入框radio包装单选输入框reset包装 重置 功能的按钮rewrite 包装一个URLselect  包装一个选择输入框submit  包装一个提交按钮text 包装一个文本输入框textarea 包装一个备注输入框ActionFormActionForm 的要求创建一个ActionForm 并不困难 但是你的类必须符合一些要求 ActionForm 必须扩展自 apache struts ActionForm 基类ActionForm 是不能实例化的 ActionForm 必须为每个应该从请求中收集的HTML控件定义一个公共属性 (Struts 要求每个属性都要mutator 和accessor Struts 则没有如此严格)ActionForm还可能要符合一些可选的要求:如果你要求ActionForm 在传递属性到Action之前校验它们 你就必须实现validate方法 如果想在组装前初始化属性 必须实现reset 它在ActionForm 组装前被调用 动态ActionFormActionForm 作为类型转换器ActionForm的一个强制点是应该使用String 和boolean属性 实际上 这意味着属性必须得从一种转换到另一种类型 大部分应用也需要一些属性 比如电话号码或者数量 以一种格式化的方式出现 核心Java 包提供一些工具来做这种事情 但是要清楚地将他们集成到应用中仍然是一个挑战 Struts 开发人员经常在ActionForm中包含helper方法 来进行类型转换 helper 方法可以有很多种实现方式 这我们在 种叙述 ActionForm 作为防火墙当请求提交时 ActionServlet 使用一个自动组装机制来从请求参数中设置请求的ActionForm属性 这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参数是可接受的 这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以接受的能力 ActionForm 一定不能包含看起来像是一个JavaBean 属性 但不能从HTTP 请求设置的属性方法 ActionForm 可以嵌套其它bean因为Struts 标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它bean 这是一个方便的方式 可以通过ActionForm来组装存在的bean 在JSP 页面 你可以象这样引用一个嵌套的bean <:textpropety= values telephoneText size= maxlength= />分发(Dispatch )Struts 开发人员通常使用同一个Action处理相关的 *** 作 一个通常做法来选择 *** 作是在HTML表单中使用隐藏属性 BaseForm 的dispatch 属性也可用作这个目的 public void setDispatch(String dispatch)public String getDispatch()Struts 配置提供连个级别嵌套的ActionForward:Global (全局) ActionForward对整个应用中的所有Action 对象均有效 Local (局部) ActionForward 则在ActionMapping 元素中定义 仅对那些在这个ActionMapping中调用的Action对象有效 从Action 对象内部来看 forward 通常像这样来选择 ActionForward forward = mapping findForward( continue )lishixinzhi/Article/program/Java/ky/201311/28055

Structs框架结构采用MVC设计模式,同时包含客户端(client),请求以及业务逻辑处理(Business Logic),而MVC模式主要由模型(Model)、视图(View)和控制器(controller)三部分组成。

一方面可以通过浏览器发送Http请求,另一方面把Http响应的消息在浏览器上展示出来。

包括ActionServlet类和RequestProcessor类。ActionServlet是MVC实现的控制器部分,是整个框架的核心,它用来接收用户的请求,根据用户的请求从模型中获取用户所需的数据,然后选择合适的视图来响应用户的请求。

请求的处理通过RequestProcessor类来实现。

Servlet在接收请求后会根据配置文件中对应的关系,把请求转给指定的Action类来处理,Action采用适配器设计模式,只是对业务进行包装,真正的业务逻辑是由EJB的session bean或普通的Java类来实现。

模型分为两个部分:

1.系统的内部状态。通常由一组Actionform Bean表示,ActionForm封装了Http请求的数据的类和对象,它是一个抽象类,每一个输入表单表示它的一个子类,配置文件structs-config.xml中保存了Http的请求表单与具体的ActionForm类的映射关系。

2.可以改变的 *** 作(业务逻辑)。

就是一个Jsp文件,没有业务逻辑的处理,也不保存系统的状态信息,通过一系列标签把数据以浏览器能识别的方式展现出来。

标签有:Bean Tags、Html tags等等等。

在Structs框架中,控制器主要是ActionServlet,但是对业务逻辑处理的 *** 作主要由Action、ActionMapping、ActionForward等组件协调完成,Action是控制逻辑的实现者,ActionMapping和ActionForward指定了不同业务逻辑或流程的运行方向。

在使用structs框架的web应用启动时,会初始化ActionServlet,并从structs-config.xml配置文件中读取配置信息,并把他们存放到ActionMappings对象中,当ActionServlet接收到一个请求时,会执行如下流程:

1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

2.如果ActionForm不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

3.根据配置信息决定是否需要表单验证。如果需要,就调用ActionForm的validate().

4.如果ActionForm的validate()返回的是null或返回一个不包含ActionMessage的ActionErrors对象,则说明表单验证成功。

如果返回是一个或多个ActionMessage的ActionErrors对象,则表面验证失败,此时,ActionServlet将直接把请求转发给包含客户提交表单的JSP组件,在这种情况下,不会再创建Action对象并调用excute()。

5.Actionservlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果对应的Action对象不存在,就创建一个实例,然后调用Action的excute()。

6.Action的excute()返回的是一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP文件。

7.ActionForward对象指向的JSP组件生成动态页面,返回给客户。

肯定是SRC下 默认就是在SRC下面的 struts2框架默认是在WEB-INF/classes/struts.xml 来读取配置文件的 而WEB-INF/classes 就是映射在工程上就是src 你可以选择工程右键-Myeclispse-open explorer 可以定位到磁盘文件路径了 如果是struts1的话 默认在WEB-INF/ 不过路径是可以再web.xml中设置的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11474111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存