Struts基础.docx
- 文档编号:7140001
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:68
- 大小:61.19KB
Struts基础.docx
《Struts基础.docx》由会员分享,可在线阅读,更多相关《Struts基础.docx(68页珍藏版)》请在冰豆网上搜索。
Struts基础
✧Struts的简明参考
一.WebApplication配置web.xml
1.DTD描述(DocumentTypeDefinition)
ELEMENTweb-app(icon?
display-name?
description?
distributable?
context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?
mime-mapping*,welcome-file-list?
error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?
security-role*,env-entry*,ejb-ref*,ejb-local-ref*)>
2.DTD符号意义
DTD符号
意义
无符号
有且只有一个1
?
没有或者一个01
+
一个或多个N
*
任意个数(包括没有)Any
3.servletDTD描述
ELEMENTservlet(icon?
servlet-name,display-name?
description?
(servlet-class|jsp-file),init-param*,load-on-startup?
run-as?
security-role-ref*)>
4.配置struts的ActionServlet
多个子应用时,为每个子应用创建单独的Struts配置文件,在web.xml中加入响应的子应用信息,采用forward元素或SwitchAction类实现子应用的切换.
默认的子应用模块,param-name为config,其他模块的param-name都以config/开头.
5.配置Struts标签库
taglib-location指定在标签描述文件在文件资源系统中的物理位置.
二.MVC--Struts的原理,配置
执行流程
6.MVC的123
7.流程
首先Web应用启动时会加载并初始化ActionServlet,ActionServlet会从struts-config.xml中读取配置信息,并把组件都存放到各种配置对象中.当ActionServlet接到一个请求时:
1.检索和请求匹配的ActionMapping实例,如果不存在,就返回出错信息给提交请求的源JSP组件.(*.do都由ActionServlet接受,a.do就匹配path为a的action,b.do就匹配path为b的action).
2.如果和action匹配的ActionForm不存在,就创建一个.并把请求表单的数据保存到ActionForm对象中.
3.如果需要表单验证,就会调用ActionForm的validate()方法.否则直接到下一步.
该方法如果返回null或者返回一个不包含ActionError对象的ActionErrors对象,表示表单验证成功,可以继续后续流程.
否则,如果返回一个包含了ActionError对象的ActionErrors对象,表单验证失败,ActionServlet将直接把请求转发给提交请求表单的源JSP组件.
4.进入相应action,执行其execute()方法,方法返回一个封装了JSP之类的Web组件的ActionForward对象.
5.ActionServlet根据上一步的ActionForward,把请求转发给相应的Web组件,并返回HTML响应.
配置struts-config.xml
8.struts-config的DTD
每个子应用都要有一个ModuleConfig对象作为配置信息,对应就是struts配置文件的根元素,struts-config:
ELEMENTstruts-config(data-sources?
form-beans?
global-exceptions?
global-forwards?
action-mappings?
controller?
message-resources*,plug-in*)>
9.data-sources
可以包含任意个data-source.数据源必须实现javax.sql.DataSource接口.
mysql: //localhost: 3306/addressbooksample”/> Action类中访问数据源: org.apache.struts.action.Action中getDataSource(HttpRequest): javax.sql.DataSourcedataSource=getDataSource(request,”A”): java.sql.Connectionmyconnection=dataSource.getConnection(); 另外,Tomcat5.0中配置数据源: : crossContext=“true” debug=“0” docBase=“E: \Projects\MSLD\MSLD” reloadable=“true”> oracle: thin: @ibm: 1521: dysb importjavax.naming.*; importjavax.sql.*; /* …… */ Contextcontext=null; DataSourcedatasource=null; StringdsName=“jdbc/msld”; Connectioncon=null; try{ context=newInitialContext(); datasource=(DataSource)context.lookup(“java: comp/env/”+dsName); con=datasource.getConnection(); } catch(NamingExceptionex){} catch(SQLExceptionex){} 注意: 在Tomat5.5中配置数据源比较简单,直接使用: \AiSee\projects\SchoolManage\schoolmanage”reloadable=“true”> driverClassName=“oracle.jdbc.driver.OracleDriver” url=“jdbc: oracle: thin: @tm006: 1521: orcl” username=“school” password=“school” maxIdle=“2” maxActive=“20” maxWait=“5000” pathname=“conf/tomcat-users.xml” /> 另外由于Tomcat5.5以后的common\lib\下面没有相应的3个jar,所以如果数据源配在Struts配置文件中需要copy这三个jar到上述目录: commons-pool-1.2.jarcommons-dbcp-1.2.1.jarcommons-collections-3.1.jar 10.form-beans 可以包含任意个form-bean.每个form-bean的属性: classname: 默认org.apache.struts.config.FormBeanConfig name: 引用的标识符.必须,应该保证框架内唯一,action的name使用它配置对应的ActionFormBean. type: ActionForm类的完整类名.必须. 如果是配置动态ActionFormBean,还必须配置form-property子元素.它用来指定表单字段,一共四个属性: className: 默认org.apache.struts.config.FormPropertyConfig.form-property的配置类. initial: 用字符串形式设置初始值,没有此属性,基本类型设置为0,对象设为null. name: 表单字段名,必须. type: 表单字段的类型,必须. 11.global-exception 包含任意个exception: className: 配置类,默认org.apache.struts.config.ExceptionConfig handler: 异常处理类,org.apache.stuts.action.ExceptionHandler key: ResourceBoundle中的消息key path: 转发路径,如果产生这种异常转发到这里显示出错信息提示. scope: 默认request.还可以为session type: 异常类的名字,必须 bundle: 指定ResourceBundle. 12.global-forwards 任意个forward. className: 配置类,默认为org.apache.struts.action.ActionForward contextRelative: true时,表示URL相对于当前的上下文(context-relative).默认false表示相对于当前应用(application-relative). name: 转发的逻辑名,必须. path: 转发或者重定向的URI,以/开头.contextRelative为ture/false时,表示相对于当前上下文/当前应用.必须. redirect: true时表示执行重定向,默认值false表示请求转发. 13.action-mappings 包含任意个action,每一个 action的属性: attribute: 设置和Action关联的ActionFormBean在request或session范围内的属性key,如果FormBean在request内,使用request.getAttribute(key)可以返回该Bean的实例. className: 配置元素,org.apache.struts.action.ActionMapping forward: 指定转发的URL. include: 指定包含的URL. input: 包含输入表单的URL路径,表单验证失败,就把请求转发到该URL. name: 和Action关联的Bean的名字.必须在form-bean中存在配置信息. path: 以/开头,指定访问Action的路径,没有扩展名. parameter: action的配置参数,可以调用ActionMapping对象的getParameter()方法读取该参数. roles: 允许访问Action的角色,多个角色以逗号分开,RequestProcessor会根据配置来决定用户是否有权调用该Action. scope: 指定ActionFormBean的存在范围,默认session,还可以为request type: Action类的完整类名 unknown: 默认false,如果ture表示可以处理用户发出的所有无效的URL validate: true/false是否要调用ActionFormBean的validate方法.默认true. action的属性forward,include,type属性相互排斥,只能设置其中一项,forward的作用和org.apache.struts.actions.ForwardAction相同,include的作用和org.apache.struts.actions.IncludeAction类相同. action的forward属性和 14.controller===>RequestProcessor 用于配置ActionServlet,如果应用包含多个子应用,可以在每个子应用的struts配置文件中配置controller元素.这样,尽管子用用共享一个ActionServlet,但是可以使用不同的RequestProcessor类. 属性: buffersize: 默认4096,指定上载文件的输入缓冲大小. className: 配置类,默认org.apache.struts.config.ControllerConfig contentType: 默认text/html.指定响应结果的内容类型和字符编码,Action中或者JSP中设置的内容类型和字符编码将覆盖该设置. locale: 默认false,指定是否把Local对象保存到当前用户的session中. processorClass: 默认org.apache.struts.action.RequestProcessor,指定负责处理请求的Java类完整类名. tempDir: 文件上载的临时工作目录.没有设置,将采用Servlet容器为Web应用分配的临时工作目录. nochache: 默认false,指定是否在响应结果中加入特定的头参数,Pragma,Cache-Control和Expires,防止页面被存储在客户浏览器的缓存中. 15.message-resources 可以有多个message-resources,它们具有属性: className: 配置类,默认org.apache.struts.config.MessageResourcesConfig factory: 消息资源工厂类,默认org.apache.struts.util.PropertyMessageResourcesFactory key: 默认Globals.MESSAGES_KEY,但是每个子模块都必须有且只有一个采用默认值,其余都必须指出互斥的key属性,指定了把ResourceBoudle存放在ServletContext对象中采用的”key+子模块名”作为key. null: 默认true,指定处理未知的信息key.True则返回空字符串,false将返回类似”? ? ? global.label.missing? ? ? ”的字符串. parameter: 指定消息资源文件名(后缀都是properties),路径分隔用点.根目录指WEB-INF/classes.pack1.pack2.ApplicationResources对应的资源文件为: WEB-INF/classes/pack1/pack2/AppliocationResources.properties. 16.plug-in 本身可以有多个,属性: className: 插件类,必须实现org.apache.struts.action.PlugIn接口. 还可以有任意个set-property子元素,具有property和value两个属性,需要在插件类中增加property的值为插件的属性,并增加get/set方法,插件实例化时会调用set方法把配置文件中的value值设置到插件的属性中保存. 17.多个子应用: 为每个应用配置单独的Struts配置文件,注意配置web.xml文件添加每个子应用的ActionServlet的init-param配置信息. 1.forward元素的contextRelative属性为true,使用它来实现子应用模块切换. 2.还可以使用org.apache.struts.actions.SwitchAction类, … 如果从默认模块到ModuleB,URL: http: //localhost: 8080/toModule.do? prefix=/moduleB&page=/index.do 如果要从ModuleB到默认模块,URL: http: //localhost: 8080/toModule.do? prefix=&page=/index.do 三.Struts控制器元素 ActionServlet控制器调度中心 18.ActionServlet org.apache.struts.action.ActionServlet继承了javax.servlet.http.HttpServlet类,接受特定的Http请求(比如默认的是*.do),根据struts-config.xml中的配置,把请求转发给相应的Action.(Action不存在时会先创建它). 19.ActionServlet属性 /** *Comma-separatedlistofcontext-relativepath(s)toourconfiguration *resource(s)forthedefaultmodule. */ protectedStringconfig=“/WEB-INF/struts-config.xml”; /** *TheDigesterusedtoproduceModuleConfigobjectsfroma *Strutsconfigurationfile. *@sinceStruts1.1 */ protectedDigesterconfigDigester=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts 基础