1.struts2框架配置文件
struts2的配置以struts.xml为主要配置文件,该文件配置了URL和java类之间的对应关系,struts支持多个配置文件并存,所以某个模块的配置文件可以新建一个struts-模块名.xml,并在此文件中进行配置。
1.1.png
图 1.1
1.1 action的配置
如图1.1所示,该包下继承来自struts的默认配置文件。action节点的name和URL前缀名是相对应的。例如:
index.jsp中的index对应于
请注意:这里是严格区分大小写的
class是指定由哪个类来进行处理;method是指调用了该类的哪个方法,如果不写,则自动调用execute()方法;result则配置了执行方法后如何跳转,struts2已经内置了5种跳转方式:SUCCESS、ERROR、INPUT、NONE、LOGIN分别对应result的name属性为success、error、input、none、login的情况 ,如果想自定义返回名,只需要返回的字符串和这里的name属性相对应就可以了,如果不配置name属性默认为success;result的type属性规定了跳转方式,一般项目使用两种dipatcher和chain。dispatcher主要负责跳转jsp,chain主要负责跳转action。
1.2验证框架
在需要验证的action类的同一级目录增加校验文件,命名规范:类名-请求名-validation.xml,如图1.2所示:
图1.2
图中演示了如何通过配置来增加表单的非空校验。
1.3 struts2国际化
国际化配置文件在 src/main/resource/messageResource*.properties
命名规范:baseName_语言代码_国家代码.properties
Struts.xml中配置了baseName为messageResource
中文配置文件为messageResource_zh_CN.properties
英文配置文件为messageResource_en_US.properties
默认配置文件为messageResource.properties(当找不到对应语言配置文件或者在配置文件中找不到对应的key时,到此文件中找)
1、页面中使用国际化
<s:text name="loginPage"/>
2、action中使用国际化
getText(“loginPage”);
3、国际化的动态传参
getText(“loginPage”,new String[]{“烽火星空”});
动态传参需要先创建一个string数组,把这个数组作为参数传给getText方法,国际化配置文件中
loginPage = {0},您好!
程序会把{0}替换成数组中下标为0的字符串,{1}会获取数组中下标为1的字符串,以此类推。
2.struts2+spring框架配置文件
2.1spring框架的配置
在web.xml中配置以下代码,在项目启动时,就可将src目录下以applicationContext开头的spring配置文件加载进来。
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
applicationContext.xml负责系统级配置
applicationContext-aciton.xml负责struts2中的action层配置
applicationContext-service.xml负责具体逻辑层配置
applicationContext-dao.xml负责数据库连接层配置
如图2.1所示
图2.1
在applicationContext-action.xml配置文件中配置action层,同时引用service层,一个bean包含一个action文件,其id将在struts.xml文件中被引用。
在单独struts2框架里面我们的action文件代码如下:
<action name="login" class="com.fh.test.pojo.LoginAction" method="checkUser">
<result name="success">/welcome.jsp</result>
<result name="input">/index.jsp</result>
</action>
login所对应的class是Action类
而在struts2和spring整合里面,代码如下:
<action name="login" class="loginAction">
<result name="success">/welcome.jsp</result>
<result name="input">/index.jsp</result>
</action>
这里面的class代码的loginAction是applicationContext-action.xml中的同名bean,如下所示:
<bean name="loginAction" class="com.fh.test.action.LoginAction" scope="prototype">
<property name="loginService" ref="loginService"/>
</bean>
在上面这段代码中将loginAction和com.fh.test.action.LoginAction类对应了起来,其中的子property元素自动填充名为loginService的属性,即构造逻辑层的实例。
注意:spring的IOC(Inversion of Control)特性,是调用了属性的set方法
而ref="loginService"这里调用了名为loginService的bean,该bean是属于逻辑层代码,所以配置在applicationContext-service.xml中,如下:
<bean id="loginService" class="com.fh.test.service.impl.LoginService">
<property name="loginDAO" ref="loginDAOImpl"/>
</bean>
同样该逻辑层的bean自动填充dao层的实例,引入名为loginDAOImpl的bean,该bean配置在applicationContext-dao.xml中,如下:
<bean id="loginDAOImpl" class="com.fh.test.dao.impl.LoginDAO"/>
经过这一系列的配置,便完成了action类的调用。
3.spring+iBATIS框架配置文件
3.1数据源的配置
配置iBATIS数据源和第三方proxool连接池
利用spring读取配置文件,并利用配置文件的信息初始化连接池
如下:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
value元素中所指是读取src下的jdbc.properties配置文件。
<bean id="dataSource"
class="org.logicalcobwebs.proxool.ProxoolDataSource"
destroy-method="close">
<property name="driver">
<value>${jdbc.driver}</value>
</property>
<!-- sqlServer需要添加的字段 -->
<property name="delegateProperties">
<value>user=${jdbc.username},password=${jdbc.password}</value>
</property>
<property name="driverUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="alias">
<value>${jdbc.alias}</value>
</property>
<property name="houseKeepingSleepTime">
<value>${jdbc.houseKeepingSleepTime}</value>
</property>
<property name="prototypeCount">
<value>${jdbc.prototypeCount}</value>
</property>
<property name="maximumConnectionCount">
<value>${jdbc.maximumConnectionCount}</value>
</property>
<property name="minimumConnectionCount">
<value>${jdbc.minimumConnectionCount}</value>
</property>
</bean>
如上即是利用${}来读取配置文件中的配置项,从而对proxool连接池进行初始化。
<bean id="client" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="mappingLocations">
<value>classpath:sqlmap/sqlserver/*.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
如上所示,利用spring自带的iBATIS工厂类进行实例化,构造名为client的bean,该构造中指定了SqlMapConfig.xml为iBATIS配置文件,sqlmap/sqlserver下所有的xml文件为sql配置文件。数据源即是之前配置的proxool连接池。
3.2别名的使用
在sqlMapConfig.xml中配置了<sqlMap resource="common.xml"/>,即引用了common.xml文件,,在这个文件中定义别名和类的全限定名之间的映射关系,如下:
<typeAlias alias="User" type="com.fh.test.pojo.User" />
使用这个配置后,在sql配置文件中传参和出参就只需要写别名就行了,简化了开发
3.3sql配置文件
图3.1
在src /sqlmap目录下对应了各数据库的文件夹,每个文件夹下都是按模块划分的配置文件,新增一个模块时只需要在对应数据库的文件夹下新建一个配置文件,以模块名命名。
<sqlMap namespace="login">
<select id="getUser" parameterClass="java.lang.String"
resultClass="User">
SELECT PerAdd AS perAdd,
Posi_Name AS posiName,
Emp_Field AS empField,
PerName AS perName,
Telphone AS telephone,
IMSI,
Password AS password,
User_Group AS userGroup
FROM Login_Check
WHERE PerAdd = #userID#
</select>
</sqlMap>
id定义了这条语句的唯一标示符,parameterClass定义了传入的类型,这里使用的是java的基本类-字符串类。resultClass定义了返回类型,这里使用了别名,具体对应的类在common.xml中查询。这里有一个动态参数#userID#,即是传入的字符串对象,方法会把查询出的结果封装成对象返回,在方法调用处接收即可。
3.4使用iBATIS进行对象的持久化
spring中的applicationContext-dao.xml配置如下图:
<bean id="baseDAO" abstract="true" class="com.fh.test.dao.impl.BaseDAO">
<property name="client" ref="client"/>
</bean>
<bean id="loginDAOImpl" class="com.fh.test.dao.impl.LoginDAO" parent="baseDAO"/>
使用名为baseDAO的bean将applicationContext.xml中配置的client填充进去,并加上abstract="true",使其不能直接实例化,而是作为所有dao的父类,在其它dao的bean上加上parent="baseDAO"。
在原有dao的类中要继承baseDAO,利用client实例调用相应的sql语句,并将结果自动构造成User类的对象
user = (User)this.getClient().queryForObject("login.getUser",username);
login.getUser是指命名空间为login,id为getUser的配置信息。
- 大小: 18 KB
- 大小: 16.2 KB
- 大小: 5.4 KB
- 大小: 1.5 KB
- 大小: 1.5 KB
分享到:
相关推荐
### SSI框架搭建详解 #### 一、简介 在软件开发过程中,为了提高代码的复用性和维护性,开发者通常会采用不同的框架来构建应用程序。其中,“SSI框架”并不是一个通用的说法,根据提供的上下文来看,这里指的是...
在基础的SSI框架搭建中,已经实现了简单的功能验证。现在,我们将其扩展以支持用户登录验证。登录验证通常涉及用户输入的用户名和密码与数据库中的记录进行匹配。在这个过程中,我们需要在`com.user.dao`包下的`...
在"SSI框架搭建"中,我们需要创建Action类来处理各种CRUD操作,并通过Struts2配置文件定义这些Action与URL的映射。 其次,Spring框架主要负责管理对象的生命周期和依赖注入,使得代码更易于测试和维护。在本项目中...
**SSI框架搭建源码详解** SSI,即Struts2、Spring和iBatis的集成框架,是Java Web开发中常用的一种技术栈。这种框架组合利用了各组件的优势,提供了强大的模型视图控制器(MVC)架构支持,以及灵活的数据访问和依赖...
在这个"ssi框架搭建现成"的项目中,已经为你准备好了一个完整的SSI环境,可以直接进行业务代码的编写,省去了配置和调试的步骤。 首先,让我们详细了解一下SSI的工作原理。SSI主要通过在HTML文件中插入特殊的指令来...
【SSI框架搭建流程详解】 在Java Web开发中,SSI(Struts2、Spring、Ibatis)框架组合是一种常见的企业级应用架构,它整合了三个强大的框架:Struts2用于控制层,Spring作为全面的依赖注入容器和事务管理器,而...
关于"cgzx"这个文件名,可能是指"课程作业"或者"素材资源",在"SSI框架搭建"的上下文中,这可能是一个包含示例代码、配置文件或其他学习资料的文件夹。在实际项目中,这些文件可能包含: 1. Spring配置文件(如`...
【标题】"Maven+Jetty下SSI框架搭建"是一个关于如何在Java环境中结合Maven构建工具和Jetty服务器来搭建Server-Side Includes (SSI)框架的教程。SSI是一种简单的服务器端包含技术,允许HTML页面动态地引用其他文件或...
【SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)】 在软件开发中,集成多种框架可以提高应用程序的灵活性和可维护性。SSI框架是指Struts、Spring和iBatis的集成,这三种框架分别负责MVC模式中的...
在这个"SSI框架搭建实例"中,我们将探讨如何结合使用SSI和Struts1.2来实现分页查询以及其他基本功能。分页查询在大型Web应用中非常常见,因为它能提高用户体验,避免一次性加载大量数据导致页面响应慢或内存消耗过大...
**SSI框架搭建帮助文档** 在Java Web开发领域,SSI(Struts2、Spring、iBATIS)是一个常见的集成框架,它结合了三个强大的组件来构建高效、可维护的Web应用程序。Struts2作为MVC(Model-View-Controller)框架,...
总结来说,"部门树,使用SSI框架搭建的部门树功能"项目利用了Spring、Struts和iBatis这三大Java Web框架的强大力量,实现了高效、灵活的部门管理。从后端的数据库操作到前端的用户交互,每个环节都体现了软件工程的...
本指南将围绕MyBatis3用户指南中文版、SpringMVC+MyBatis编码规范以及SSI框架搭建这三个主题展开讨论。 首先,`MyBatis3用户指南中文版`是学习MyBatis的核心资料,它详细介绍了如何配置MyBatis、创建Mapper接口、...
ssi 框架搭建 功能上面不怎么完善 只能参考参考
### ssi框架搭建详解 #### 一、Struts2框架配置 ##### 1.1 Struts2 Action配置 Struts2框架的核心配置文件是`struts.xml`,它定义了应用中所有Action与用户请求之间的映射关系。Action配置项在`<package>`元素内...