Struts2框架与Spring框架初解二

Struts2框架

使用Struts框架的执行过程:

发送一个请求 -> 先经过web.xml根文件 -> 有Struts2的核心过滤器

-> 到struts.xml -> 找到package -> package下的action -> 找方法

-> 先找class -> 找到method -> 根据返回值 匹配result

-> 如果result需要转发/重定向 -> 再去找网页资源

Struts2中的常量配置:

<!-- 动态请求激活 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	
	<!-- 返回值response 和 本地编码格式 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!-- 控制请求后缀 能否以 .action结尾
		 value的值 决定能以什么结尾
	 -->
	<constant name="struts.action.extension" value="action"></constant>
	<!-- 热加载 不需要重启服务器 就能让配置文件生效 -->
	<constant name="struts.devMode" value="true"></constant>

Struts2中的动态请求:

<!-- 动态请求 -->
	<package name="cal" namespace="/cal" extends="struts-default">
		<!-- *是通配符 -->
		<!-- struts2.5必须加上这句话 才能使用通配符 -->
		<global-allowed-methods>regex:.*</global-allowed-methods>
		<action name="cal_*" class="com.lanou.controller.CalAction"
			method="{1}">
			<!-- 首先访问 cal_xxx这个请求路径
				 然后根据xxx 匹配{1}
				 如果 找到了xxx方法 就会运行xxx方法的代码
				 如果返回值 匹配 也会跳转到 xxx.html
			 -->
			
				<result name="success">/{1}.html</result>
		</action>
	</package>

struts.xml中可以引入其他包里面的struts.xml的配置文件

相当于 将action分包写

<!-- 引入 引入其他包里面的配置文件 -->
<include file="com/lanou/entity/struts2.xml">	</include>

注: 只有将其他包的struts.xml配置文件引入src下的struts.xml配置文件,这个配置文件才会生效

struts请求参数获取

是通过在类里面写属性 并且需要get/set方法

那么 只需要统一页面的请求参数和属性名 

就可以自动获取参数

Spring框架
spring的 IOC(控制反转) 和 DI(依赖注入)
详解原文地址:http://jinnianshilongnian.iteye.com/blog/1413846

IOC - Inversion of Control "控制反转", 不是什么技术,而是一种设计思想.

从思想上发生了"主从换位"的变化,程序需要获取什么资源时不再主动出击,

而是被动的等待IOC容器来创建并注入它所需要的资源.

在Java开发中, IOC意味着将设计好的对象交给容器控制,而不是传统的在对象内部直接控制

控制 --- IOC容器控制了对象的创建,主要是控制了外部资源获取

反转 --- 容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象. 获取依赖对象的方式反转了

你需要什么,别自己创建,我来给你

即由IOC容器帮对象找相应的依赖对象,并注入,而不是由对象自己创建,避免了每次需要new创建对象时的浪费性能

DI - Dependency Injection "依赖注入",由容器动态的将某个依赖关系注入到组件之中.

依赖注入的目的并不是为软件系统带来更多功能,而是为了提升组件重用的频率,

为系统搭建一个灵活、可扩展的平台.

依赖 --- 应用程序依赖于IOC容器(配置依赖对象)

应用程序需要IOC容器来提供对象需要的外部资源

注入 --- IOC在应用程序需要的时候注入应用程序的依赖对象

注入的是所需要的外部资源(包括对象、资源、常量数据)

Spring不但可以创建普通对象,还可以创建List Map对象

<bean id="users" class="com.lanou.entity.User">
	<property name="name" value="aaa"></property>
	<property name="orders" >
		<!-- list -->
		<list>
		    <!-- 集合内部生成的对象 不能够被外界使用 -->
		    <bean id="order2" class="com.lanou.entity.Order">
			    <property name="orderName" value="lna"></property>
			    <property name="price" value="666"></property>
		    </bean>
		    <!-- 指向外部的对象 -->
		    <ref bean="order1"/>
		 </list>
	</property>
        <property name="info">
	         <map>
			<entry key="idcard" value="123456"></entry>
			<entry key="parent" value-ref="user1"></entry>
		 </map>
	</property>
		
	<property name="properties">
		<props>
			<prop key="nickname">yyy</prop>
			<prop key="age">5</prop>
		</props>
	</property>
</bean>

外部的集合内的对象

<bean id="order1" class="com.lanou.entity.Order">
	<property name="orderName" value="大黄蜂"></property>
	<property name="price" value="100"></property>
</bean>

 得到IOC容器

ApplicationContext ac = new ClassPathXmlApplicationContext("application2.xml");




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值