⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struts1.x.txt

📁 Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		dao
	v(view):
		jsp
		ActionForm:承载页面的信息,页面表单域的名称与form的属性必须相等
	c(control):
		ActionServlet:接收所有的请求
		RequestProcessor:是ActionServlet的一个助手,做详细的处理
		ActionMapping:对应一个action标记,包括url、action、form、actionForward
			<action  path="\login" type="struts.action.InsertAction"
				name="userForm" scope="request">
				<forward name="success" path="/success.jsp"/>
				<forward name="error" path="/error.jsp"/>
			</action>
		Action:做具体的业务处理
		ActionForward:转发到另一个页面
三、struts的请求处理过程
	1、通过url.do在struts-config.xml中找到对应的action及actionForm
	2、如果有actionForm用已有的,没有产生一新的,通过返射将表单域的值注
		入到actionForm实例中。
	3、如果有action用已有的,没有产生一个新的,调用action的execute方法,
		在调用之前将actionForm注入到execute方法中。
	4、execute在执行结束前通过actionMapping找到一个ActionForward,转发到下一个页面。
十七、struts的MVC
	m:model
		facade
		dao
		hibernate
	v:
		jsp
		ActionForm
	c:
		ActionServlet:接收所有的请求进行处理
		ActionMapping:是一个具体的action标签,
			      通过url找到action及actionForm
			      可以通过名称找到ActionForward转发到下一个页面。
			<action path="/login" type="struts.action.LoginAction"
				name="userForm" attribute="userForm"
				scope="request" validate="true" input="/login.jsp">
				<actionForward name="success" path="/success.jsp"/>
			</action>
		Action:做具体的业务处理
		ActionForward:转发到另一个页面。
十八、struts的请求处理过程:
	通过url.do在struts-config.xml中找到对应的action及ActionForm
	如果有actionForm用已有没有产生一个新的,并通过反射将表单域
	  的值注入到actionForm实例中。
	如果有action用已有的没有产生一个新的,调用action的execute方法,
	在调用execute方法之前通过参数将ActionForm注入到execute方法,
	execute 在执行结束前通过ActionMapping找到一个ActionForward转发
	到下一个页面。

struts2中可以有多个配置文件,一般是一个功能模板一个,不同团队不影响,实现如下:
	1、在/WEB-INF/下加入新的struts-config.xml文件
	2、在web.xml中在ActionServlet的配置中说明具体的struts-config.xml文件所在位置
		多个文件用.分隔开。
		<init-param>
		      <param-name>config</param-name>
		      <param-value>/WEB-INF/struts-config-1.xml,
		      	/WEB-INF/struts-config-2.xml</param-value>
		   </init-param>
对于spring有多个applicationContext.xml该如何处理
一、struts的MVC
	M:model
	V:view
		jsp
		ActionForm
	C:control
		ActionServlet:接收所有以.*结尾的请求			
		RequestProcessor:是ActionServlet的一个助手,做具体的处理。
		ActionMapping:一个action标签,通过它可以找到Action、ActionForm
			 ActionForward。
			 <action type="struts.action.LoginAction"
			 	name="loginForm"
			 	attribute="loginForm"  在request或session中的键名
			 	scope="request/session"
			 	input="/login.jsp"  在校验框架中有错误转发到input对应的页面
			 	validate="true"  告诉struts当前的form需要校验
			 >
			 	<forward name="success" path="/success.jsp">
			 </action>
		Action:做具体的业务处理
		ActionForward:转发一另一个页面。
二、struts的请求处理过程
	1、通过url.do在struts-config.xml中找到对应的action及ActionForm
	2、如果有ActionForm用已有的,没有产生一个新的实例,并通过返射将表
	   单域的值填充到ActionForm中。
	3、如果有Action用已有的,没有产生一个新的,调用Action的execute方法
	   在调用execute方法之前通过参数将ActionForm注入到execute方法中。
	4、execute方法执行结束前,通过ActionMapping找到一个ActionForward
	   转发到下一个jsp页面。
三、struts的标签库
	html:前一个action转发下一个jsp页面,该jsp页面可以重用
	     上一个action所用的form,通过html标签可以直接显示form中的值。
	     FindAction:
	     	  public ActionForward execute()
	     	  {
	     	  	UserForm uf=(UserForm)form;
	     	  	mapping.findForward("updateJsp");	
	     	  	
	     	  }
	     update.jsp页面:
	     		<action path="/update" scope="request"
	     			name="userForm" attribute="userForm"
	     			type="struts.action.UpdateAction"
	     		>
		     <html:form action="/update">
		     	<html:text property="userName"/>
		     </html:form>
	    <html:select property="sex">
	    	<html:collection collection="users" property="code" labelProperty="name"/>
	    </html:select>		
	bean:对已有bean的操作
		<!--从scope中取出user的userName属性打印-->
		<bean:write scope="request/application/session" name="user" property="userName"/>
		<!--从scope中取出customer对象,放作用域对象page中,键名还是customer1-->
		<bean:define scope="request/session/application" name="customer" id="customer1"/>
		<!--从scope中取出customer对象的buies属性,放作用域对象page中,键名还是buies-->
		<bean:define scope="request/session/application" name="customer" property="buies" id="buies"/>
	logic:
		<!--如果在scope中有customer,执行标签内的代码-->
		<logic:present scope="request/session/appliation" name="customer">
				执行部分
		</logic:present>
		<!--如果在scope中没有customer,执行标签内的代码-->
		<logic:notPresent scope="request/session/appliation" name="customer">
		</logic:notPresent>
		<!--取集合中值-->

		<!--从request中取出customer对象的buies属性遍历,每个元素通过buy引用-->
		<logic:iterator scope="request" name="customer" property="buies" id="buy">
		</logic:iterator>
	tiles:
		<tiles:insert attribute="从页面在tiles-defs.xml中定义的名称"/>
		
四、struts的国际化
	1、作用:不用改源代码,只需加入一个properties文件,就可以适应不同国家的语言。
	2、实现步骤:
		1、加入properties文件
			a、命名格式
				文件_语言_国家.properties
			b、如果有非英文或数字转码
				native2ascII -encoding utf-8 源  目标
		2、在struts-config.xml中说明properties文件所在的位置
			<message resource="struts.message"/>
		3、在jsp中用标签通过键名取properties文件中的值
			<bean:message name="userName"/>
五、struts的手动校验:手动写代码实现校验规则。
	1、国际化三步曲
	2、校验通用两步曲
		1、修改struts-config.xml中的action标签,加入
			input及validate="true"属性
		2、在jsp页面中显示错误消息
			<html:messages id="error">
				<br><bean:write name="error"/>
			</html:messages>
	2、实现ActionForm
		public class MyForm extends ActionForm
		{
			public ActionErrors validate()
			{
				ActionErrors ae=new ActionErrors();
				ae.add(ActionErrors.global_message,new ActionMessage("资源文件的键名"));
				如果ae.size>=1返回到input页面
				如果ae.size<1调用action的execute方法
			}
		}
六、struts的自动校验:通过xml文件配置具体的校验规则。
	1、国际化三步曲
	2、通用校验两步曲
	3、实现ActionForm,继承于ValidateForm,不能覆盖validate方法
		public class MyForm extends ActionForm
		{
			//public ActionErrors validate()
			//
		}
	4、通过xml说明实现自动校验
		1、拷入validation-rules.xml到/webrooe/WEB-INF目录下
		2、复制validation-rules.xml得到的文件是validation.xml,修改结果如下
			<formset>
				<form name="loginForm">
					<field name="userName" depends="required">
						<arg0 key="userName"/>
					</field>
					<field name="pwd" depends="required,minlength">
						<arg0 key="userName"/>
						<arg1 key="${var:minlength}" resource="false">
						<var>
							<var-name>minlength</var-name>
							<var-value>6</var-value>
						</var>
					</field>
				</form>
			<formset>
			当发生required错误时,在资源文件中对应的键名errors.required
				errors.required={0} is not Empty
			当发生minlength错误时,在资源文件中对应的键名errors.minlength
				errors.minlength={0} 's minlength must be {1}
		3、通过struts-config.xml的插件加入两个校验文件。
七、struts的tiles
	作用:主页面加载从页面,具体的从页面不是在主页面中确定,而是
	      在tiles-defs.xml中定义,这样如果主页面的结构发生了改变,
	      只需的修改tiles-defs.xml文件,不用修改主页面本身。
	实现思路:
		1、在tiles-defs.xml中说明主页面、从页面的名称及uri。
		2、action的execute方法执行结束时转发到tiles-defs中的一个
		   tiles, 通过该tiles找到主页面,主页面根据tiles中定
		   义的具体页面名称加载对应的jsp页面。
        实现:
        	1、在tiles-defs.xml中说明主页面及其需要的从页面,具体如下:
        		<definition name="index" path="/index.jsp">
			    <put name="head" value="/head.jsp" />
			    <put name="body" value="/body.jsp" />
			    <put name="foot" value="/foot.jsp" />
			  </definition>	
		2、实现action,其forward指定不再是jsp页面,而是一个tiles
			记住不能加"/",直接给名称
		3、在主页中通过名称找到具体的从页面
			<tiles:insert attribute="head"/>	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -