用myeclipse搭建S2SH struts2 spring hibernate

step1: 在myeclipse上新建一个web项目

step2: 加入struts2所需的包

freemarker-2.3.16

ognl-3.0

struts2-core-2.2.1

struts2-dojo-plugin-2.2.1

struts2-json-plugin-2.2.1

struts2-spring-2.2.1

xwork-core-2.2.1 

step3:加入spring2.5

 右键点击工程名称,MyEclipse->Add Spring Capabilities。 

选择Spring version为Spring 2.5,选中Spring 2.5 AOP Libraries、Spring 2.5 Core Libraries、Spring 2.5 Persistence Core Libraries、Spring 2.5 Persistence JDBC Libraries、Spring 2.5 Web Libraries共5个包。选中Copy checked Library contents to project folder (TLDs always copied),点击Next。 

点击Next,点击Folder文本框后的Browse,在弹出对话框中选择spring配置文件存储位置为WebRoot/WEB-INF,点击Finish。至此已经完成加载Spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。 

step4: 在data browser中新建一个connection

step5: hibernate

右键点击工程名称,MyEclipse->Add Hibernate Capabilities。 
选择Hibernate Specification为Hibernate 3.2,选中所有包,选中Copy checked Library Jars to project folder and add to build-path,点击Next。 
选择Spring configuration file (applicationContext.xml),点击Next。 
选择Existing Spring configuration file,点击Next 
只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大,采用默认设置即可。然后在DB Driver下拉列表中,选择上一步在MyEclipse中创建好的数据库源SQL Server 2005,其他信息将自动填写,点击Next。 
在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击Finish完成。 

创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,选择Keep Existing即可。 

6. Delete Conflictive Jars 
手动删除三个重复的jar包(不能在build-path里面删除,在build-path里面删除无效): 
  asm-2.2.3.jar 
  cglib-2.1.3.jar 
  xerces-2.6.2.jar

 

7. Create struts.xml 
在src包下新建一个struts.xml文件,该文件内容如下: 

Struts.xml代码
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "
http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <constant name="struts.objectFactory" value="spring" />
 <include file="struts-default.xml"></include>
 <package name="default" extends="struts-default">
  <action name="userInfoLogin" class="userInfoAction" method="login">
   <result name="FAILURE">/MainWeb/failure.jsp </result>
   <result name="SUCCESS">/MainWeb/success.jsp</result>
  </action>
 </package>
</struts>
8. 配置web.xml 
配置web.xml文件,其内容如下: 
Web.xml代码
<?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.ng.filter.StrutsPrepareAndExecuteFilter</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>
9. 使用Myeclipse反向生成dao层

将前面数据源dataSource所示数据库SSH中的UserInfo表反向生成Hibernate实体类文件。 
UserInfo.java 
UserInfoDaoImpl.java 
UserInfo.hbm.xml 
不要生成abstract class,然后一路点击Next即可。 
在com.shawnqiu.bean下生成三个文件UserInfo.java、UserInfoDAO.java、UserInfo.hbm.xml。将UserInfoDAO.java 更名为UserInfoDaoImpl.java,置于com.shawnqiu.dao.impl,将UserInfo.hbm.xml置于dbConfig下。 

10. 创建UserInfoServiceImpl.java 
Java代码
package com.shawnqiu.service.impl;
import java.util.*;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.shawnqiu.bean.UserInfo;
public class UserInfoServiceImpl extends HibernateDaoSupport {
 //普通用户登录验证
 @SuppressWarnings("unchecked")
 public boolean checkUser(String userName,String userPassword){
    boolean flag = false;
    String hql = "from UserInfo as userInfo where userInfo.userName = '"+userName+"' and userInfo.userPassword = '"+userPassword+"'";
    List<UserInfo> userInfoList = this.getHibernateTemplate().find(hql);
    if(userInfoList.size()>0){
     flag = true;
    }
    return flag;
 }
}
11. 创建UserInfoService.java 
右键点击UserInfoServiceImpl.java,选择Refactor->Extract Interface。 
设置Interface name为UserInfoService,同时选择Select All即可,点击OK。 
如上图所示,UserInfoService.java和UserInfoServiceImpl.java在同一package中。右键点击UserInfoService.java,选择Refactor->Move 
选择com.shawnqiu.service,点击OK即可。 

12. 创建UserInfoAction.java 
Java代码
package com.shawnqiu.action;
import com.opensymphony.xwork2.ActionSupport;
import com.shawnqiu.service.UserInfoService;
public class UserInfoAction extends ActionSupport{
 private String userName;
 private String userPassword;
 public UserInfoService getUserInfoService() {
  return userInfoService;
 }
 public void setUserInfoService(UserInfoService userInfoService) {
  this.userInfoService = userInfoService;
 }
 private UserInfoService userInfoService;

 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 String execute(){
//    String page = "FAILURE";
//    boolean flag = false;
//    flag = personManage.checkUser(userName, userPassword);
//    if(flag){
//     page = "SUCCESS";
//    }
//    return page;
  return "";
 }
 public String login(){
     String page = "FAILURE";
     boolean flag = false;
     flag = userInfoService.checkUser(userName, userPassword);
     if(flag){
      page = "SUCCESS";
     }
     return page;
 }
}
13. 创建Jsp Pages 
首先在WebRoot下新建一个MainWeb文件夹,并同时创建3个文件,分别是login.jsp、success.jsp、failure.jsp,源代码如下。 
login.jsp 
Jsp代码
<%@ page language="java" pageEncoding="utf-8"%>
<
%@tagliburi="/struts-tags" prefix="s"%>
<html>
<head>
   <title>用户登录</title>
</head>
<body>
<center>
   <div id="login">
    <s:form action="userInfoLogin">
     <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>
 
success.jsp 
Jsp代码
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Failure</title>
  </head>
  <body>
    登录成功!<br>
  </body>
</html>

failure.jsp
Jsp代码
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Failure</title>
  </head>
  <body>
    登录失败!<br>
  </body>
</html>


14. 配置applicationContext.xml 
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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=SSH">
</property>
<property name="username" value="sa"></property>
<property name="password" value="Wxzy!@%&amp;"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>dbConfig/UserInfo.hbm.xml</value>

</list>
</property>
</bean>

<bean id="userInfoServiceImpl" class="com.shawnqiu.service.impl.UserInfoServiceImpl" abstract="false"
   lazy-init="default" autowire="default" dependency-check="default" scope="prototype">
   <property name="sessionFactory" >
    <ref local="sessionFactory"/>
   </property>
</bean>
<bean id="userInfoAction" class="com.shawnqiu.action.UserInfoAction" scope="prototype">
       <property name="userInfoService">
           <ref bean="userInfoServiceImpl" />
       </property>
</bean>

</beans>


15. 创建log4j.properties 
Log4j.properties代码
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=INFO, CONSOLE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

原文地址:https://www.cnblogs.com/kevinge/p/2051886.html