欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts2框架与Spring框架初解二

程序员文章站 2022-07-13 21:11:05
...

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");