基于maven的ssh框架一步一步搭建

jopen 10年前發布 | 335K 次閱讀 JEE框架 Maven

一、新建maven項目,配置ssh框架pom的最低支持

1、新建一個maven項目 

2、添加一個web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="

</web-app></pre>



3、基本ssh框架pom.xml配置


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

<groupId>com.winssage.fengshu</groupId> <artifactId>winssage</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>

<name>winssage</name> <url>http://maven.apache.org</url&gt;

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>

<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <!-- 添加SSH依賴 -->
<!-- Struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.1</version>
</dependency>

<dependency>  
    <groupId>org.apache.struts</groupId>  
    <artifactId>struts2-spring-plugin</artifactId>  
    <version>2.3.1</version>  
</dependency>  


 <!-- 添加Hibernate依賴 -->  
<dependency>  
    <groupId>org.hibernate</groupId>  
    <artifactId>hibernate-core</artifactId>  
    <version>3.6.5.Final</version>  
</dependency>  
<dependency>  
    <groupId>commons-dbcp</groupId>  
    <artifactId>commons-dbcp</artifactId>  
    <version>1.4</version>  
</dependency>  

<!-- 添加Log4J依賴 -->  
<dependency>  
    <groupId>log4j</groupId>  
    <artifactId>log4j</artifactId>  
    <version>1.2.16</version>  
</dependency>  

<dependency>  
  <groupId>org.slf4j</groupId>  
  <artifactId>slf4j-api</artifactId>  
  <version>1.6.1</version>  
</dependency>  

<dependency>  
    <groupId>org.slf4j</groupId>  
    <artifactId>slf4j-nop</artifactId>  
    <version>1.6.4</version>  
</dependency>  

<!-- 添加javassist -->  
<dependency>  
    <groupId>javassist</groupId>  
    <artifactId>javassist</artifactId>  
    <version>3.11.0.GA</version>  
</dependency>  

<!-- 添加Spring依賴 -->  
<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-core</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-beans</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-context</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-jdbc</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-orm</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-web</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>  

</dependencies> </project></pre>


二、maven webproject 整合struts2

1、web.xml 加入中心攔截器配置



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



2、加入log4j.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//Apache//DTD Log4j 1.2//EN"
                                    ";
<log4j:configuration>
    <appender class="org.apache.log4j.ConsoleAppender" name="RootConsoleAppender">
        <param name="Threshold" value="debug" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
        </layout>
    </appender>

<category name="com.fengshu.limanman.winssage">
    <priority value="debug" />
</category>

<category name="org.springframework">
    <priority value="warn" />
</category>

<category name="org.hibernate">
    <priority value="warn" />
</category>
<category name="org.dbunit">
    <priority value="warn" />
</category>

<category name="com.mchange.v2">
    <priority value="warn" />
</category>
<category name="org.apache">
    <priority value="warn" />
</category>
<category name="org.logicalcobwebs">
    <priority value="warn" />
</category>
<category name="com.opensymphony">
    <priority value="warn" />
</category>

<root>
    <level value="info" />
    <appender-ref ref="RootConsoleAppender" />
</root>

</log4j:configuration></pre>



3、引入struts2.xml 根據約定由于配置原則,將此配置文件放在更目錄即可


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    ";
<struts>
    <package name="fengshu" namespace="/user" extends="struts-default">

    <!--<action name="user"
        class="com.fengshu.limanman.winssage.controller.LoginController">
        <result name="success">/pages/index.jsp</result>
    </action>-->
</package>

</struts></pre>



4、建一個測試jsp在webapp/pages/index.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>Insert title here</title>
</head>
<body>hello limanman
</body>
</html>



5、寫一個controller


package com.fengshu.limanman.controller;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionSupport;

public class LoginController extends ActionSupport { private static final long serialVersionUID = 1L; private Logger log=Logger.getLogger(this.getClass());

public String  login() {
    log.info("hello  i am limanman");
    return "succerss";

}

}</pre>



6、配置struts2.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    ";
<struts>
    <package name="fengshu" namespace="/" extends="struts-default">

    <action name="user" class="com.fengshu.limanman.controller.LoginController">
        <result name="success">/pages/index.jsp</result>
    </action>
</package>

</struts></pre>


7、暫時注釋掉pom.xml中的struts2-spring-plugin

因為還沒有整合spring,如果加入struts2-spring-plugin將會報空指針異常,整合spring后需要加入此jar包,下面將不再提及。


8、配置jetty運行環境,開發的時候我們一般使用jetty服務器,而不用tomcat

在pom.xml中加入jetty插件,并且配置根目錄目錄

<build>
        <plugins>
            <!-- 配置加入jetty服務器,開發時我們一般使用jetty服務器 -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                    <!-- 設置掃描target/classes內部文件變化時間間隔 -->
                    <scanIntervalSeconds>2</scanIntervalSeconds>
                    <webApp>
                        <contextPath>/limanman</contextPath>
                    </webApp>
                </configuration>
            </plugin>
            <!-- compiler插件, 設定JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <showWarnings>true</showWarnings>
                </configuration>
            </plugin>

        <!-- war打包插件, 設定war包名稱不帶版本號 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <warName>winssage</warName>
            </configuration>
        </plugin>
        <!-- eclipse插件, 設定wtp版本 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>false</downloadJavadocs>
                <wtpversion>2.0</wtpversion>


            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>install</id>
                    <phase>install</phase>
                    <goals>
                        <goal>sources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- 用于支持跨模塊加載配置文件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>dll</nonFilteredFileExtension>
                    <nonFilteredFileExtension>so</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
        </plugin>
    </plugins>
</build></pre> 



9、第一個里程碑,第一次運行項目

(1)jetty:run -Djetty.port=9080 -Dmaven.test.skip=true 跑起項目

(2)效果截圖

基于maven的ssh框架一步一步搭建

三、將spring 整合進來

1、web.xml加入spring監聽

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/spring/ApplicationContext.xml</param-value>
    </context-param>
    <!-- Spring Listener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>



2、將strut2交給spring管理

(1)修改strut2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    ";
<struts>
    <package name="fengshu" namespace="/" extends="struts-default">

    <action name="user" class="loginController">
        <result name="success">/pages/index.jsp</result>
    </action>
</package>

</struts></pre>



(2)添加spring配置文件


 <bean id="loginController" class="com.fengshu.limanman.controller.LoginController">
    </bean>

(3)運行 it is aok!

四、spring再整合hibernate 

1、加入datasource


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver">
        </property>
        <property name="url" value="jdbc:mysql://localhost:3306/ddd">
        </property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>



2、加入sessionFactory



<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.winssage.bslogic.core.User</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Mysql5Dialect
                </prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>




3、運行項目后報錯 

經檢查發現是因為沒有mysql驅動,也沒有hibernate-anation 包

給改hibernate pom.xml 配置


<!-- 添加Hibernate依賴 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.6.ga</version>
            <type>jar</type>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <artifactId>jta</artifactId>
                    <groupId>javax.transaction</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.2.0.ga</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>ejb3-persistence</artifactId>
            <version>1.0.0</version>
        </dependency>

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency></pre>



4、再次啟動 


已自動更新了表,注意應該講hibernate.hbm2ddl.auto設置為create才能自動創建表

到此hibernate已經成功添加進來 




來自:http://my.oschina.net/fengshuzi/blog/291421


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!