zoukankan      html  css  js  c++  java
  • Maven项目整合SSH框架

    ---------------------siwuxie095

       

       

       

       

       

       

       

       

       

       

    Maven 项目整合 SSH 框架

       

       

    创建 Maven 项目 maven-ssh,项目目录结构如下:

       

       

       

       

    src/main/java 展开如下:

       

       

       

       

       

       

    具体实现如下:

       

    1、在 Maven 项目的核心配置文件中进行配置

       

    pom.xml:

       

    <project xmlns="http://maven.apache.org/POM/4.0.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation=

    "http://maven.apache.org/POM/4.0.0

    http://maven.apache.org/xsd/maven-4.0.0.xsd">

     

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.siwuxie095.maven</groupId>

    <artifactId>maven-ssh</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>war</packaging>

     

    <!-- 归类依赖 -->

    <properties>

    <struts.version>2.3.33</struts.version>

    <spring.version>4.3.7.RELEASE</spring.version>

    <hibernate.version>5.0.12.Final</hibernate.version>

    </properties>

     

     

    <dependencies>

     

    <!-- +++++++ (1) Struts2 相关 +++++++ -->

     

    <!-- Struts2 相关的基本依赖 -->

    <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>${struts.version}</version>

    <!--

    由于 Struts2 Hibernate 中都有 javassist

    为避免冲突,留下高版本,排除低版本即可

     

    这里,Struts2 中的 javassist 版本更低

    -->

    <exclusions>

    <exclusion>

    <groupId>javassist</groupId>

    <artifactId>javassist</artifactId>

    </exclusion>

    </exclusions>

    </dependency>

     

     

    <!-- +++++++ (2) Spring 相关 +++++++ -->

     

    <!-- Spring 相关的基本依赖 -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context</artifactId>

    <version>${spring.version}</version>

    </dependency>

     

    <!-- Spring AOP 相关的依赖 -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-aspects</artifactId>

    <version>${spring.version}</version>

    </dependency>

     

    <!-- Spring 单元测试相关的依赖 -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-test</artifactId>

    <version>${spring.version}</version>

    </dependency>

     

     

    <!-- +++++++ (3) Hibernate 相关 +++++++ -->

     

    <!-- Hibernate 相关的基本依赖 -->

    <dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-core</artifactId>

    <version>${hibernate.version}</version>

    </dependency>

     

     

    <!-- +++++++ (4) SSH 整合相关 +++++++ -->

     

    <!-- Struts2 整合 Spring 相关的依赖 -->

    <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-spring-plugin</artifactId>

    <version>${struts.version}</version>

    </dependency>

     

    <!-- Spring 整合 Web 项目相关的依赖 -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>${spring.version}</version>

    </dependency>

     

    <!-- Spring 整合 Hibernate 相关的依赖 -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-orm</artifactId>

    <version>${spring.version}</version>

    </dependency>

     

     

    <!-- +++++++ (5) 数据库连接相关 +++++++ -->

     

    <!-- JDBC 驱动相关的依赖 -->

    <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.43</version>

    <scope>runtime</scope>

    </dependency>

     

    <!-- C3P0 连接池相关的依赖 -->

    <dependency>

    <groupId>c3p0</groupId>

    <artifactId>c3p0</artifactId>

    <version>0.9.1.2</version>

    </dependency>

     

     

    <!-- +++++++ (6) 日志相关 +++++++ -->

     

    <!-- 日志相关的依赖 -->

    <dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-log4j12</artifactId>

    <version>1.7.25</version>

    </dependency>

     

     

    <!-- +++++++ (7) 其它相关 +++++++ -->

     

    <!-- JUnit 相关的依赖 -->

    <dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

    <scope>test</scope>

    </dependency>

     

    <!-- JSTL 相关的依赖 -->

    <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>jstl</artifactId>

    <version>1.2</version>

    </dependency>

     

    <!-- servlet-api 相关的依赖 -->

    <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>2.5</version>

    <scope>provided</scope>

    </dependency>

     

    <!-- jsp-api 相关的依赖 -->

    <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>jsp-api</artifactId>

    <version>2.0</version>

    <scope>provided</scope>

    </dependency>

     

    </dependencies>

     

     

    </project>

       

       

       

    2、在 src/main/webapp 目录下创建 JSP 页面

       

    add.jsp:

       

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>添加用户</title>

    </head>

    <body>

     

    <form action="${pageContext.request.contextPath }/user_add.action" method="post">

    用户名:<input type="text" name="username" />

    地址:<input type="text" name="address" />

    <input type="submit" name="提交" />

    </form>

     

    </body>

    </html>

       

       

       

    succ.jsp:

       

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>添加成功</title>

    </head>

    <body>

     

    <h1>添加成功!<a href="${pageContext.request.contextPath }/add.jsp">继续添加</a></h1>

     

    </body>

    </html>

       

       

       

    3、在 src/main/java 目录下创建实体类,同时创建其

    Hibernate 映射配置文件

       

    User.java:

       

    package com.siwuxie095.entity;

       

    public class User {

     

    Integer uid;

    String username;

    String address;

     

    public Integer getUid() {

    return uid;

    }

    public void setUid(Integer uid) {

    this.uid = uid;

    }

     

    public String getUsername() {

    return username;

    }

    public void setUsername(String username) {

    this.username = username;

    }

     

    public String getAddress() {

    return address;

    }

    public void setAddress(String address) {

    this.address = address;

    }

     

    @Override

    public String toString() {

    return "User [uid=" + uid + ", username=" + username +

    ", address=" + address + "]";

    }

     

    }

       

       

       

    User.hbm.xml:

       

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

     

    <hibernate-mapping>

       

    <class name="com.siwuxie095.entity.User" table="t_user">

     

    <id name="uid" column="uid">

    <generator class="native"></generator>

    </id>

     

    <property name="username" column="username"></property>

    <property name="address" column="address"></property>

     

    </class>

     

    </hibernate-mapping>

       

       

       

    4、在 src/main/resources 目录下创建 Hibernate 核心配置文件

       

    hibernate.cfg.xml:

       

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-configuration PUBLIC

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>

    <session-factory>

     

     

    <property name="hibernate.show_sql">true</property>

    <property name="hibernate.format_sql">true</property>

    <!-- 注意:只有配置 hibernate.hbm2ddl.auto update,才能自动创建表 -->

    <property name="hibernate.hbm2ddl.auto">update</property>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <!--

    原来的配置:

    <property name="hibernate.current_session_context_class">thread</property>

     

    SSH 框架整合中会报错,要么将这个配置删了,要么改成如下配置

     

    参考链接:http://blog.csdn.net/maoyuanming0806/article/details/61417995

    -->

    <property name="hibernate.current_session_context_class">

    org.springframework.orm.hibernate5.SpringSessionContext

    </property>

    <!--

    如果没有如下配置,控制台将有如下异常信息:

    Disabling contextual LOB creation as createClob() method threw error :

    java.lang.reflect.InvocationTargetException

     

    * 配置 *

    <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

     

    其实该配置加不加都无所谓,并不影响什么

     

    参考链接:http://blog.csdn.net/jiong_long/article/details/51340685

    -->

    <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

     

     

    <mapping resource="com/siwuxie095/entity/User.hbm.xml"/>

     

     

    </session-factory>

    </hibernate-configuration>

       

       

       

    5、在 src/main/java 目录下创建 Action 类

       

    UserAction.java:

       

    package com.siwuxie095.action;

       

    import com.opensymphony.xwork2.ActionSupport;

    import com.opensymphony.xwork2.ModelDriven;

    import com.siwuxie095.entity.User;

    import com.siwuxie095.service.UserService;

       

    public class UserAction extends ActionSupport implements ModelDriven<User> {

       

    private User user=new User();

     

    @Override

    public User getModel() {

    return user;

    }

     

    private UserService userService;

     

    public void setUserService(UserService userService) {

    this.userService = userService;

    }

     

    public String add() {

    userService.add(user);

    return "add";

    }

       

    }

       

       

       

    6、在 src/main/java 目录下创建 Service 类

       

    UserService.java:

       

    package com.siwuxie095.service;

       

    import org.springframework.transaction.annotation.Transactional;

       

    import com.siwuxie095.dao.UserDao;

    import com.siwuxie095.entity.User;

       

    @Transactional

    public class UserService {

     

    private UserDao userDao;

     

    public void setUserDao(UserDao userDao) {

    this.userDao = userDao;

    }

       

    public void add(User user) {

    userDao.add(user);

    }

     

    }

       

       

       

    7、在 src/main/java 目录下创建 DAO 接口及其实现类

       

    UserDao.java:

       

    package com.siwuxie095.dao;

       

    import com.siwuxie095.entity.User;

       

    public interface UserDao {

       

    void add(User user);

     

    }

       

       

       

    UserDaoImpl.java:

       

    package com.siwuxie095.dao.impl;

       

    import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

       

    import com.siwuxie095.dao.UserDao;

    import com.siwuxie095.entity.User;

       

    /**

    * DAO 接口实现类继承 HibernateDaoSupport 类,直接获取 HibernateTemplate

    */

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

     

    @Override

    public void add(User user) {

     

    // 直接通过 this 获取 HibernateTemplate,调用 save() 方法保存

    this.getHibernateTemplate().save(user);

     

    /*

    * 此时,也可以获取 SessionFactory

    *

    * 法一:this.getSessionFactory()

    * 法二:this.getHibernateTemplate().getSessionFactory()

    *

    *

    * 此时,也可以获取 Session

    *

    * 法一:this.getSessionFactory().getCurrentSession()

    * 法二:...

    */

    }

     

    }

       

       

       

    8、在 src/main/resources 目录下创建 Struts2 核心配置文件

       

    struts.xml:

       

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

       

    <struts>

     

    <package name="demo" extends="struts-default" namespace="/">

     

    <action name="user_*" class="userAction" method="{1}">

    <result name="add">/succ.jsp</result>

    </action>

     

    </package>

       

    </struts>

       

       

       

    9、在 src/main/resources 目录下创建 Spring 核心配置文件

       

    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:aop="http://www.springframework.org/schema/aop"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="

    http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans.xsd

    http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop/spring-aop.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context.xsd

    http://www.springframework.org/schema/tx

    http://www.springframework.org/schema/tx/spring-tx.xsd">

     

     

    <!-- (1) -->

    <!-- 配置 C3P0 连接池 -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <property name="driverClass" value="com.mysql.jdbc.Driver"/>

    <!--

    jdbc:mysql:///maven_db jdbc:mysql://localhost:3306/maven_db 的简写

    -->

    <property name="jdbcUrl" value="jdbc:mysql:///maven_db"/>

    <property name="user" value="root"/>

    <property name="password" value="8888"/>

    </bean>

     

     

    <!-- SessionFactory 对象的创建交给 Spring 进行管理 -->

    <bean id="sessionFactory"

    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

    <!--

    因为在 Hibernate 核心配置文件中,没有数据库配置,

    而是在 Spring 的核心配置文件中进行配置,所以需要

    注入 dataSource

    LocalSessionFactoryBean 中有相关属性,所以可以

    注入

    -->

    <property name="dataSource" ref="dataSource"></property>

    <!-- 指定 Hibernate 核心配置文件的位置 -->

    <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>

    </bean>

     

     

     

    <!-- (2) -->

    <!-- 配置 Action 对象 -->

    <!--

    注意:由于 Action 对象是多实例的,所以服务器启动时,

    不会被创建,只有在访问时,才会被创建

    -->

    <bean id="userAction" class="com.siwuxie095.action.UserAction" scope="prototype">

    <property name="userService" ref="userService"></property>

    </bean>

       

    <!-- 配置 Service 对象 -->

    <bean id="userService" class="com.siwuxie095.service.UserService">

    <property name="userDao" ref="userDaoImpl"></property>

    </bean>

       

    <!-- 配置 Dao 实现类对象 -->

    <bean id="userDaoImpl" class="com.siwuxie095.dao.impl.UserDaoImpl">

    <!-- 注入 SessionFactory 对象 -->

    <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

       

     

     

    <!-- (3) -->

    <!-- 配置事务管理器 HibernateTransactionManager -->

    <bean id="transactionManager"

    class="org.springframework.orm.hibernate5.HibernateTransactionManager">

    <!--注入 SessionFactory 对象 -->

    <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

     

    <!-- 开启事务注解 -->

    <tx:annotation-driven transaction-manager="transactionManager"/>

     

     

    </beans>

       

       

       

    10、在部署描述文件中进行配置

       

    web.xml:

       

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

    <display-name>maven-ssh</display-name>

    <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

    </welcome-file-list>

     

    <!-- 配置 Struts2 的核心过滤器 -->

    <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>

     

    <!-- 配置 Spring 的监听器 ContextLoaderListener -->

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

     

    <!-- 配置 Spring 核心配置文件的位置(路径) -->

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

    </context-param>

     

    </web-app>

       

       

       

    11、访问路径

       

    http://localhost:8080/maven-ssh/add.jsp

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    固定思维的可怕(转)
    Javascript模块化编程:require.js的用法
    js中将字符串转为JSON的三种方式
    cf 55D 数位dp 好题
    fzu 2113 数位dp
    uestc 250 数位dp(水)
    hdu 3652数位dp
    数位dp 3943 二分法
    hdu 3943 经典数位dp好题
    hdu 4871 树的分治+最短路记录路径
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/7573971.html
Copyright © 2011-2022 走看看