javascript
Struts2与Spring、Hibernate三者整合的过程示例
轉(zhuǎn)載地址:http://www.360doc.com/content/09/0416/09/61497_3148602.shtml#
原來spring配置文件自動生成數(shù)據(jù)源和整合先后有關(guān)系,留著做個提醒吧!
?
示例工具:MyEclipse 7.0、Tomcat 6.0、MySqlStruts2與Spring、Hibernate三者整合的過程示例:
步驟:
1.創(chuàng)建一個WEB工程,命名為BookShop(名字自己取,此處為示例工程名);
2.導(dǎo)入struts2的核心jar包,也就是在WEB-INF下的lib文件夾中放入jar包文件,如下圖(圖中jar包為示例版本):
3.加載spring,選中工程名,右擊并選擇【MyEclipse】選項下的【Add Spring Capabilities...】(或者在工具欄中選擇【MyEclipse】下的【Add Spring Capabilities...】),在彈出的對話框中進行如下圖所示操作:
?
點擊【Next】,點擊Folder文本框后的【Browse】,在彈出對話框中選擇spring配置文件存儲位置為WEB-INF文件夾,如下圖所示:
?
點擊【OK】后,再點擊【Finish】完成。至此,已經(jīng)完成加載spring,在WEB-INF文件夾下已經(jīng)生成了配置文件applicationContext.xml。
4.加載Hibernate,選擇【MyEclipse】下的【Add Hibernate Capabilities...】,在彈出對話框中進行如下圖所示操作:??
點擊【Next】后,選擇Existing Spring configuration file單選框,在SessionFactory Id文本框中填入"sessionFactory",如下圖所示 :
?
點擊【Next】,進行如下圖所示操作:
?
該操作中,只需在Bean Id文本框中輸入一個Id名,作為數(shù)據(jù)庫源的代用名,意義不大。然后在DB Driver下拉列表中,選擇MyEclipse中創(chuàng)建好的數(shù)據(jù)庫源xiaoqi,其他信息將自動填寫。點擊【Next】,在彈出對話框中去掉Create SessionFactory class?復(fù)選框,不創(chuàng)建該類,點擊【Finish】完成(創(chuàng)建過程中,加載的jar包文件可能有重復(fù),所以這個時候如果提示有某些jar包重復(fù),問全部保存【Keep Exiting】,還是替換掉【Replace】,可以選擇替換掉【Replace】)。
5.創(chuàng)建struts.xml文件,在src包下新建一個struts.xml文件,該文件內(nèi)容如下:
<!DOCTYPE struts PUBLIC
??????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
??????? "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!--下述語句是將struts2交給spring管理 -->
<constant name="struts.objectFactory" value="spring" />
<!--導(dǎo)入struts-default.xml文件 -->
<include file="struts-default.xml"></include>
<!--將action內(nèi)容放在package元素下,package元素的name值與extends值可以使用默認值,如下所示 -->
<package name="default" extends="struts-default">
<!--例如與用戶登錄相關(guān)的LoginAction,配置如下,其中,class值與applicationContext.xml文件中該action的id值相對應(yīng),name值作為標(biāo)識-->
?? <action name="loginAction" class="LoginAction">
<!--result元素設(shè)置頁面跳轉(zhuǎn)值,其中name值為目標(biāo)頁面的字符串標(biāo)識,如下,登錄失敗時回到login.jsp頁面,成功時,轉(zhuǎn)向success.jsp頁面 -->
??? <result name="fail">/login.jsp </result>
??? <result name="success">/success.jsp</result>
?? </action>
</package>
</struts>
6.配置web.xml文件,其內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"?
xmlns="http://java.sun.com/xml/ns/javaee"?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
?? org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
7.反向生成實體類文件
在src包下新建一個entity包,將前面數(shù)據(jù)源xiaoqi所示數(shù)據(jù)庫bookshop中的user表反向生成Hibernate實體類文件。
8.創(chuàng)建數(shù)據(jù)操作文件
在src包下創(chuàng)建dao包,在該包下新建類文件PersonManage.java,其內(nèi)容如下所示:
package dao;
import java.util.*;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import entity.*;
public class PersonManage extends HibernateDaoSupport {
//普通用戶登錄驗證
@SuppressWarnings("unchecked")
public boolean checkUser(String userName,String userPassword){
?? boolean flag = false;
?? String hql = "from User as user where user.userName = '"+userName+"' and user.userPassword = '"+userPassword+"'";
?? List<User> userList = this.getHibernateTemplate().find(hql);
?? if(userList.size()>0){
??? flag = true;
?? }
?? return flag;
}
}
9.創(chuàng)建Action
在src包下新建一個包,名為"com.xiaoqi.action"(名字僅為示例,只寫一個com也可以,示例寫法是采取struts中的action包名寫法),在該包下新建一個action類LoginAction.java,其內(nèi)容如下:
package com.xiaoqi.action;
import com.opensymphony.xwork2.ActionSupport;
import dao.PersonManage;
public class LoginAction extends ActionSupport{
private String userName;
private String userPassword;
private PersonManage personManage;
public String getUserName() {
?? return userName;
}
public void setUserName(String userName) {
?? this.userName = userName;
}
public String getUserPassword() {
?? return userPassword;
}
public void setUserPassword(String userPassword) {
?? this.userPassword = userPassword;
}
public void setPersonManage(PersonManage personManage) {
?? this.personManage = personManage;
}
public String execute(){
?? String page = "fail";
?? boolean flag = false;
?? flag = personManage.checkUser(userName, userPassword);
?? if(flag){
??? page = "success";
?? }
?? return page;
}
}
10.創(chuàng)建頁面,創(chuàng)建登錄頁面login.jsp,內(nèi)容如下:
<%@ page language="java" pageEncoding="gb2312"%>
<!-- 導(dǎo)入struts2標(biāo)簽庫 -->
<%@taglib?uri="/struts-tags" prefix="s"%>
<html>?
<head>
?? <title>用戶登錄</title>
</head>
<body>
<center>
?? <div id="login">
??? <s:form action="loginAction">
???? <s:textfield label="用戶名" name="userName"></s:textfield>
???? <s:password label="密碼" name="userPassword"></s:password>
???? <s:submit value="登錄"></s:submit>
??? </s:form>
?? </div>
</center>
</body>
</html>
頁面中,先導(dǎo)入struts2標(biāo)簽庫,用來創(chuàng)建form表單。form表單提交給與登錄相關(guān)的LoginAction.java文件,而LoginAction.java在struts.xml文件中相應(yīng)的name值為"loginAction”,所以這里的action值為"loginAction"。至于用戶名文本框與密碼文本框的name值則與LoginAction.java文件中的userName與userPassword完全匹配。
11.配置applicationContext.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--?? 以下為數(shù)據(jù)源配置,自動生成 -->
<bean id="candy" class="org.apache.commons.dbcp.BasicDataSource">
?? <property name="driverClassName"
??? value="com.mysql.jdbc.Driver">
?? </property>
?? <property name="url"
??? value="jdbc:mysql://localhost:3306/bookstore">
?? </property>
?? <property name="username" value="root"></property>
?? <property name="password" value="sa"></property>
</bean>
<!--?? 以下為sessionFactory配置,自動生成 -->
<bean id="sessionFactory"
?? class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
?? <property name="dataSource">
??? <ref bean="candy" />
?? </property>
?? <property name="hibernateProperties">
??? <props>
???? <prop key="hibernate.dialect">
????? org.hibernate.dialect.MySQLDialect
???? </prop>
??? </props>
?? </property>
?? <property name="mappingResources">
??? <list>
???? <value>entity/User.hbm.xml</value></list>
?? </property></bean>
<!--?? 配置PersonManage.java類文件 -->
<bean id="personManage" class="dao.PersonManage" abstract="false"
?? lazy-init="default" autowire="default" dependency-check="default">
?? <property name="sessionFactory" >
??? <ref local="sessionFactory"/>
?? </property>
</bean>
<!--?? 配置LoginAction.java類文件 -->
<bean id="LoginAction" class="com.xiaoqi.action.LoginAction" >
?????? <property name="personManage">
?????????? <ref bean="personManage" />
?????? </property>
</bean>
</beans>
總結(jié)
以上是生活随笔為你收集整理的Struts2与Spring、Hibernate三者整合的过程示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat中web.xml文件的详细说
- 下一篇: 编码设置导致了eclipse/myecl