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

📄 struts2.txt

📁 Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
💻 TXT
📖 第 1 页 / 共 2 页
字号:
一、struts2的请求处理过程
	通过url.action找到struts2的过滤器
	过滤器在src的在struts.xml中找到action标签的name属性,
		进而通过class属性确定真正的action,通过
		method属性确定action方法,如果不写method默认是
		execute方法
	被调用方法在执行结束前返回一个字符串通过这个字符串在struts.xml
	action标签中找到对应的页面转发。
二、struts2与strutx1.X的比较
	相同点:
		都是mvc
	struts2:
		没有form可以直接使用后台的pojo
		action是一个pojo,方法名可以随意给定
		核心配置文件是struts.xml在src的根目录下
		struts在与spring整合时更规范
	struts1.X:
		可要加载数据必须有form其form必须继承于ActionForm
		action不是一个pojo而是要继承于Action
		核心配置文件是struts-config.xml在/web-inf/目录下
		struts在与spring整合时不是很规范,通过struts1.x的
		插件将struts与spring整合在一起。
三、struts2如何实现
	1、引入struts2的相关类包
	2、修改web.xml加入一个监听器
	3、在src的根目下加入struts.xml
	4、写action,写jsp页面。	
四、在struts2中如何加载request、session对象
	实现RequestAware、SessionAware接口加入类型是Map有session或
	request属性及其set、get方法,通过put或get方法从map中取值。
	原理:
		1、调用方法之前将HttpServertRequest的值通过put方法注入
		   到Map中
		2、调用结束后将map中的值再写入到HttpServertRequest对象中。
五、如何确定到底调用action的那一个方法
	<action method="方法"/>
	在url处写"name!方法名.action"
六、struts2与spring整合
	1、在web.xml中加入一个监听器,加载applicationContext.xml
	2、修改struts.xml中action标签的class属性,其指的不是具体的action
	   而是applicationContext.xml中bean标签的id属性。
	3、在applicationContext.xml中加入一个bean标记,
	   id属性与struts.xml中的class属性值必须对应,class
	   属性说明具体的action
一、struts2的请求处理过程
	通过url.action找到struts2的过滤器
	过滤器在src的在struts.xml中找到action标签的name属性,
		进而通过class属性确定真正的action,通过
		method属性确定action方法,如果不写method默认是
		execute方法
	被调用方法在执行结束前返回一个字符串通过这个字符串在struts.xml
	action标签中找到对应的页面转发。

struts中可以有多个配置文件,一般是一个功能模板一个,不同团队不影响,实现如下:
	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该如何处理
	

struts2.0的特点
	1、form是一个pojo
	2、action是一个pojo,所以struts2.0与框架的藕合度非常低。
		实现Action时有时会继承于ActionSupport,
		覆盖execute方法,从而创建一个Action。
		因为ActionSupport提供了很多方法可以为开发提供方便。
	3、支持依赖注入,主要借助于spring来实现
	4、支持拦截处理,相当于是aop
	综上struts2.0吸了spring及webwork2的优点,是强强联合的产品。
struts2.0环境配置
	1、引入struts类包
	2、修改web.xml,说明加载struts的监听器,在启动tomcat容器时通过监听器
		加载struts2核心控制类。
		<filter>
			<filter-name>webwork</filter-name>
			<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    		</filter>
    		<filter-mapping>
			    <filter-name>webwork</filter-name>
			    <url-pattern>/*</url-pattern>
		</filter-mapping>
	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">
		<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.xml文件
	struts.xml不变
	在struts.xml中加入
	<include file="struts-1.xml"/>
struts2.0实现登陆
	1、写一个pojo
		public class UsersVO
		{
			private String userName;
			private String pwd;
			//get及set方法
		}
	2、写一个Action
		public class LoginAction
		{
			private UsersVO user;
			//get及set方法
			public String login()
			{
				if("accp".equals(user.getUserName) && "accp".equals(user.getPwd))
				{
					return "success";
				}
				return "error";
			}			
		}
	3、配置struts.xml文件
		<!DOCTYPE struts PUBLIC
		 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
		 "http://struts.apache.org/dtds/struts-2.0.dtd">
		<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>
	4、在jsp页面中调用action
		<s:form action="login">
			用户名<input name="user.userName" type="text">
			<s:passward name="user.pwd" label="密码"/>
			<s:submit/>
		</s:form>
struts2.0与spring2.0的结合
	1、在/WEB-INF/中加入applicationContext.xml文件并引入spring相关的类包
	2、applicaitonContext.xml中Action配置信息如下:
		<bean id="insert" class="struts.MakeAction">
			<property name="facade">
				<ref local="facadeProxy" />
			</property>
		</bean>	
	3、在web.xml文件中指定spring的监听器,加载applicationContext.xml文件
		<listener>   
     			<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   
    		</listener>
    	4、修改src根目下的struts.xml中的action标签,其class不再指向真正的Action类,而是spring的一个bean的ID名称
		<action name="insert" class="insert" method="insert">
			<result name="error">/error.jsp</result>
			<result name="success">/succ.jsp</result>
		</action>
九、ognl语言
	#:
		1、取request、application、session中的值
			<s:property value="#request.user.userName"/>
		2、定义一个Map
			<s:set name="list" value="#{1:'a',2:'b',3:'c'}"/>
十、将值直接映射到List集合中
	buies[0].buyID
	buies[1].buyName

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:property value=""/>
	ui组件
		下拉列表
			语法
			<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>
		引入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、 取已有集合中的值

⌨️ 快捷键说明

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