zoukankan      html  css  js  c++  java
  • 自搭建项目笔记Spring+Struts2+Hibernate《一》

    SSHM 
     
     
     
     
    SSHM
    一:
    1、建数据库
    2、建maven项目
    3、添加web.xml:新建一个web项目,默认生成web.xml复制过来 再删除web项目。
    4、基本ssh框架pom.xml配置
        
    <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <spring.version>4.2.4.RELEASE</spring.version>
         <struts2.version>2.3.15.1</struts2.version>
        <Hibernate .version>4.3.11.Final</Hibernate .version>
    </properties>
     
       <!--  struts2依赖 -->
        <dependency >
           <groupId >org.apache.struts </groupId>
           <artifactId >struts2-core </artifactId>
           <version >${struts2.version} </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>

    添加Log4J(日志)、SSH依赖。
     
    Javassist是一个开源的分析、编辑和创建Java字节码的类库
     
    二:maven webproject 整合struts2
    1、web.xml 加入中心拦截器配置
        
    编辑web应用的web.xml配置文件,配置struts2的核心Filter,这个可以从Struts2官网(http://struts.apache.org/development/2.x/docs/webxml.html)找到示例。
    2前面我们提到Maven构建web项目时资源文件存放在src/main/resources目录下,但是Struts2的配置文件struts.xml默认要放在类路径下,也就是src下。
    这个位置可以修改(http://www.cnblogs.com/surge/p/3581954.html),就是在web.xml中的struts2的<filter>里加入以下内容:
    <init-param>   
       <param-name>config</param-name>   
       <param-value>../../resources/struts.xml</param-value>   
    </init-param> 
     
    配置完成后web.xml内容如下:
    1. <!DOCTYPE web-app PUBLIC  
    2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
    3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
    4.   
    5. <web-app>  
    6.   <display-name></display-name>  
    7.     
    8.       
    9.     <filter>  
    10.         <filter-name>struts2</filter-name>  
    11.         <filter-class>  
    12.             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
    13.         </filter-class>
      • <init-param>  
      •         <param-name>config</param-name>  
      •         <param-value>../../resources/struts.xml</param-value>  
      •     </init-param>  
    14.   
    15.     </filter>  
    16.     <filter-mapping>  
    17.         <filter-name>struts2</filter-name>  
    18.         <url-pattern>/*</url-pattern>  
    19.     </filter-mapping>  
    20.   
    21.     <welcome-file-list>  
    22.         <welcome-file>login.jsp</welcome-file>  
    23.     </welcome-file-list>  
    24. </web-app>  
     
    2、加入log4j.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration PUBLIC "-//Apache//DTD Log4j 1.2//EN"
    "http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd">
    <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>
     
    3、引入struts2.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>  
             <!-- 所有匹配*.do的请求都由struts2处理 -->
            <constant name="struts.action.extension" value="do" /> 
            <constant name="struts.i18n.reload" value="false" />  
            <constant name="struts.devMode" value="false" />  
            <include file="struts-default.xml" />  
            <package name="default" extends="struts-default" namespace="/">  
                   <action name="login" class="com.carson.demo.action.UserAction" method="login">                                                                        <result name="success">index.jsp</result>  
                        <result name="login">login.jsp</result>
                    </action>
             </package>  
    </struts>  
     
     
     
    (暂时注释掉pom.xml中的struts2-spring-plugin

    因为还没有整合spring,如果加入struts2-spring-plugin将会报空指针异常,整合spring后需要加入此jar包,下面将不再提及。)

    使用struts2注解在pom.xml里配置:

    <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-convention-plugin</artifactId>
          <version>${struts2.version}</version>
    </dependency>

    <dependency>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-json-plugin</artifactId>
         <version>${struts2.version}</version>
    </dependency>

    4、配置jetty运行环境:在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> /*</ 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.8</ source>
                        <target> 1.8</ 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 >
     
     
    三、整合spring
    1、在pom.xml 加入spring依赖
        
    <!-- 添加Spring依赖 -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
    </dependency>
     
    2、web.xml加入spring监听
     
    <!-- spring路径 -->
    <context-param>
        <param-name>contextConfigLocation </param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!-- Spring Listener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
    3、添加spring配置文件 applicationContext.xml 在spring里配置bean,把bean转给spring管理
    <?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:jee="http://www.springframework.org/schema/jee"
            xmlns:tx="http://www.springframework.org/schema/tx"         xmlns:context="http://www.springframework.org/schema/context"
            xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee         http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-2.5.xsd">
     
    <bean id="loginController" class="test.t1.user.action.LoginController">
    </bean>
    </beans>
     
    Struts.xml:
    <package name="test" namespace="/" extends="struts-default">
        <action name="user" class="loginController">
            <result name="success">/jsp/index.jsp</result>
        </action>
    </package>
     
    strust2整合spring时要在pom.xml中的加入struts2-spring-plugin,在运行项目测试

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>${struts2.version}</version>
    </dependency>
     
     

    四、spring再整合hibernate 

    1、在pom.xml 加入hibernate、mysql依赖

    <!--添加Hibernate依赖 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${Hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <!-- 添加mysql依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    2、建立Hibenate.properties 属性配置文件

    3、建立spring-hibernate.xml文件

    4、在web.xml 加入spring-hibernate.xml

    5、在applicationContext.xml 加入Hibenate.properties 属性配置文件,并加入spring-hibernate.xml内容,并bean配置改为扫描注解文件:

     

    6、写modeldaoserviceaction 并配置注解

    1)用sessionFactory.getCurrentSession()遇到问题:

    org.hibernate.HibernateException: Could not obtain transaction-synchronized

    解决:在applicationContext.xml中配置事物:

    <!-- 配置事务管理器 -->
    <bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 注解方式配置事物 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    并在DAO实现类上标注:@Transactional

    2)@Resource不能注入

    原因:
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>${struts2.version}</version>
    </dependency>
     
    被注释 解除注释即可
     
     
     
     
     
     
     
     
     
    http://blog.csdn.net/chenleixing/article/details/44353491
     
     
     
     
     
     
     
    导出EXCEL:
     
     
     
     
     
     
     
     
     
     
     
     
     








     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    hbase删除标记和注意事项
    马上拥有一台自己的云服务器
    在 Ubuntu 开启 GO 程序编译之旅
    在 Ubuntu 上安装 Protobuf 3
    功能设计中技术人员之惑
    关于数据可视化页面制作
    快速响应请求浅谈
    自定义一个代码耗时计数工具类
    一种极简的异步超时处理机制设计与实现(C#版)
    百度地图API图标、文本、图例与连线
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/6298354.html
Copyright © 2011-2022 走看看