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

📄 复习4.txt

📁 Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
💻 TXT
📖 第 1 页 / 共 2 页
字号:
1、struts2的原理
	在web.xml部署一个过滤器FilterDispatcher,其可以接收所有以action结尾的请求。当客户发送一个url.action请求时,
	FilterDispatcher根据src根目录下的struts.xml中找到对应的action,实例化action并调用action的execute方法,
	execute方法执行完后返回一个字符串转发到另一个页面。
2、struts2.0的特点
	1、去除了struts1中的actionForm,页面可以直接利用后台的javaBean
	2、action是一个pojo,所以struts2.0与框架的藕合度非常低,让开发效率更快。
		当然Action可以继承于ActionSupport,覆盖execute方法。主要目的是使用ActionSupport提供的方法方便开发。如果用到校验需要继承于ActionSupport
	3、支持依赖注入,主要借助于spring来实现
	4、支持拦截处理,相当于是过滤器
	5、支持数据转换,有预定义的数据转换,将表单域的值映射到数据类中的一个集合中。也可以自定义数据转换。
	
	综上struts2.0吸了spring及webwork2的优点,是强强联合的产品。
	
	
3、struts2.0实现过程
	1、struts类包
	2、修改web.xml,说明加载struts的过滤器FilterDispatcher
	3、在src根目录下加入struts.xml文件,说明具体action及相应的跳转
		<!DOCTYPE struts PUBLIC
		 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
		 "http://struts.apache.org/dtds/struts-2.0.dtd">
	<struts>
		<package name="login" namespace="" extends="struts-default">
			<action name="login" class="action.LoginAction" method="login">
				<result name="success"></result>
				<result name="input"></result>
				<result>success.jsp</result>
			</action>
		</package>
	</struts>
4、在action中加载request,application,session对象
	通过拦截器加载session,application,request
		public class MyAction implements SessionAware,RequestAware,ApplicationAware
		{
			private Map session;
			private Map request;
			private Map application;
			//sesion,request,application
		}
		可以看到requser、session、application不再是
			HttpServletRequest,	
			HttpSession,
			ServletContext,
			而是Map接口,
			其值是在程序运行过程中通过拦截器动态加载、同步的
			这样在测试时更为方便,传一个Map就可以测试,
			不是真正的HttpSession,HttpServletRequest,ServletContext。
			也就是说struts2的测试可以脱离容器。
	通过ServletActionContext加载sesssion,application,request
		public class MyAction extends ActionSupport
		{
			public String execute()
			{
				HttpServletRequest request=ServletActionContext.getRequest();
			}
		}
	可以看到这种代码在测试时是不能离开容器的。
5、struts2中的相关标签:
	非ui组件
		--判断
		<s:if test="#request.user.userName=='张三'">
			是张三
		</s:if>
		<s:elseif test="#request.user.userName=='李四'">
			是李四
		</s:elseif>
		<s:else>
			不知道
		</s:else>
		--迭代
		<s:iterator value="#request.users" id="user1" state="state">
			<s:property value="#user1.userName"/>
		</s:iterator>
		--设置set
			name 是  String 变量名字 
			scope 否  String 变量作用域,可以为application, session, request, page, 或action. 
			value 否  Object/String 将会赋给变量的值 
			id 否  Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
			<s:set name="" scope="request" value=""/>
		--显示属性
			<s:property value=""/>
	ui组件:从一个action转发到另一个jsp页面时,可以直接显示上一个action中属性值。
		文本框:
			<s:textField/>
			<s:password/>
		下拉列表
			语法
			<s:select list="" listKey="" listValue="" value="" label=""/>
				list:代表数据来源于一个集合
				listKey:显示的值
				listValue:真正的值
				value:如果listValue中的值与value中的值相等,则对应项会选中
				label:显示标签名
			实例:
				1、常数
				<s:select list="#{1:'a1',2:'a2',3:'a3'}" listKey="key"
					listValue="value" value="{'a1','a2'}"
				2、可以取在application、session、request中的对象
				<s:select list="#request.sexes" listKey="name" listValue="code"
					value="{'01'}"/>
		复选框:
			1、普通集合
				<s:checkboxlist name="skills1" 
	                        label="Skills 1" 
	                        list="{ 'Java', '.Net', 'RoR', 'PHP' }" 
	                        value="{ 'Java', '.Net' }" />
	                 2、hashMap
			        <s:checkboxlist name="skills2" 
	                        label="Skills 2" 
	                        list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }" 
	                        listKey="key" 
	                        listValue="value" 
	                        value="{ 1, 2, 3 }"/>
	        <s:token/>:保证一个请求只被执行一次
		 	1、在jsp中加入标签 
		 		<s:token/>
			3、若用token在对应的action中加入拦截器,内容如下:
				<action name="Token" class="tutorial.CoolTagAction">
			            <interceptor-ref name="defaultStack" />
			            <interceptor-ref name="token" />
			            <result name="invalid.token">/token.jsp</result>                        
			            <result>/token.jsp</result>
			        </action>
			4、返回jsp页面时将唯一的序号写入到jsp页面的form中,
			   提交表单到服务端时
			   struts2的拦截器会取出唯一的序号,与系统内部已提交的序号比较,
			   若没有找到证明当前页面没有提交过,执行。若找到了证明提交
			   过,系统报错。
		datatimepicket:时间选择器
			引入struts2的css及javaScript脚本
				< s:head />
			<s:datatimerpicker>:时间选择器
				<s:datetimepicker name="birthday" label="Birthday" />:显示时间
	        两个组合框,第一个组合框发生改变时,自动更新第二个组合框。
	        	 1、代码中直接构造集合
			   <s:doubleselect
			            tooltip="Choose Your State"
			            label="State"
			            name="region" list="{'North', 'South'}"
			            value="'South'"
			            doubleValue="'Florida'"
			            doubleList="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}" 
			            doubleName="state"
			            headerKey="-1"
			            headerValue="---------- Please Select ----------"
			            emptyOption="true" />
			 2、 取已有集合中的值
			 	 <s:set name="foobar" 
               				value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
        				<s:doubleselect list="#foobar.keySet()"
		                          doubleName="technology" 
		                          doubleList="#foobar[top]" 
		                          label="Technology" />
		 
		<s:updownselect>:可以上下移动的列表项
			<s:updownselect
		            label = "Favourite Countries"
		            list="#{'england':'England', 'america':'America', 'germany':'Germany'}"
		            name="prioritisedFavouriteCountries"
		            headerKey="-1"
		            headerValue="--- Please Order Them Accordingly ---"
		            emptyOption="true" />
		<s:optiontransferselect/>:可以左右交换,上下移动的选择信息
		        <s:optiontransferselect            
		            label="Favourite Cartoons Characters"
		            name="leftSideCartoonCharacters" 
		            leftTitle="Left Title"
		            rightTitle="Right Title"
		            list="{'Popeye', 'He-Man', 'Spiderman'}" 
		            multiple="true"
		            headerKey="headerKey"
		            headerValue="--- Please Select ---"
		            emptyOption="true"
		            doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}" 
		            doubleName="rightSideCartoonCharacters"
		            doubleHeaderKey="doubleHeaderKey"
		            doubleHeaderValue="--- Please Select ---" 
		            doubleEmptyOption="true"
		            doubleMultiple="true" />		
		导入一个文件并加入参数:
			<s:include value="/condition.jsp">
	            		<s:param name="name">Max</s:param>
				<s:param name="name" value="">Max</s:param>
	        	</s:include>
			s:param的属性列表:
				name 否  String 参数名 
				value 否  String value表达式 
				id 否  Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
6、OGNL
	作用:显示对象的属性值

⌨️ 快捷键说明

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