Eclipse + SSH +Tomcat +Mysql 项目搭建

1、安装Maven,下载地址:http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip,下载后,解压缩到D:盘,系统变量中添加M2_HOME=D:\apache-maven-3.3.9,编辑PATH变量,在末尾添加%M2_HOME%\bin。

在%M2_HOME%下创建repo文件夹,编辑%M2_HOME%\conf\settings.xml,添加配置

 

[html]  view plain  copy
  1. <localRepository>D:/apache-maven-3.3.9/repo</localRepository>  

 

2、打开Eclipse,选择Help - Install New Software,在Work with输入框中输入:http://mirror.bit.edu.cn/eclipse/technology/m2e/releases/,这是国内的mirror,速度稍微快点,Pending后,选择安装Maven Integration for Eclipse,一路Next,漫长的安装结束后,重启Eclipse。

 

3、选择Window - Preferences - Maven - Installations - add,选择Maven安装目录,保存结果。

 

4、File - New - Project,选择Maven Project,Next,Next,漫长的Retrieving archetypes后,Catalog选择Maven Central,Filter输入:maven-archetype-webapp,Next,Group Id输入:com.moapp,Artifact Id输入工程名:mavenSSH,点击Finish。

 

5、编辑pom.xml

[html]  view plain  copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.moapp</groupId>  
  5.     <artifactId>mavenSSH</artifactId>  
  6.     <version>1.0</version>  
  7.     <name>mavenSSH</name>  
  8.     <url>http://maven.apache.org</url>  
  9.     <packaging>war</packaging>  
  10.     <properties>  
  11.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  12.         <spring.version>4.3.0.RELEASE</spring.version>  
  13.         <hibernate.version>5.2.0.Final</hibernate.version>  
  14.         <struts2.version>2.5.1</struts2.version>  
  15.         <jackson.version>2.7.5</jackson.version>  
  16.         <log4j.version>2.5</log4j.version>  
  17.     </properties>  
  18.     <dependencies>  
  19.         <dependency>  
  20.             <groupId>junit</groupId>  
  21.             <artifactId>junit</artifactId>  
  22.             <version>4.12</version>  
  23.             <scope>test</scope>  
  24.         </dependency>  
  25.         <dependency>  
  26.             <groupId>org.apache.struts</groupId>  
  27.             <artifactId>struts2-core</artifactId>  
  28.             <version>2.5.1</version>  
  29.             <exclusions>  
  30.                 <exclusion>  
  31.                     <groupId>javax.servlet</groupId>  
  32.                     <artifactId>servlet-api</artifactId>  
  33.                 </exclusion>  
  34.             </exclusions>  
  35.         </dependency>  
  36.         <dependency>  
  37.             <groupId>org.springframework</groupId>  
  38.             <artifactId>spring-core</artifactId>  
  39.             <version>${spring.version}</version>  
  40.         </dependency>  
  41.         <dependency>  
  42.             <groupId>org.springframework</groupId>  
  43.             <artifactId>spring-beans</artifactId>  
  44.             <version>${spring.version}</version>  
  45.         </dependency>  
  46.         <dependency>  
  47.             <groupId>org.springframework</groupId>  
  48.             <artifactId>spring-context</artifactId>  
  49.             <version>${spring.version}</version>  
  50.         </dependency>  
  51.         <dependency>  
  52.             <groupId>org.springframework</groupId>  
  53.             <artifactId>spring-tx</artifactId>  
  54.             <version>${spring.version}</version>  
  55.         </dependency>  
  56.         <dependency>  
  57.             <groupId>org.springframework</groupId>  
  58.             <artifactId>spring-web</artifactId>  
  59.             <version>${spring.version}</version>  
  60.         </dependency>  
  61.         <dependency>  
  62.             <groupId>org.springframework</groupId>  
  63.             <artifactId>spring-test</artifactId>  
  64.             <version>${spring.version}</version>  
  65.         </dependency>  
  66.         <dependency>  
  67.             <groupId>org.springframework</groupId>  
  68.             <artifactId>spring-orm</artifactId>  
  69.             <version>${spring.version}</version>  
  70.         </dependency>  
  71.         <dependency>  
  72.             <groupId>org.hibernate</groupId>  
  73.             <artifactId>hibernate-core</artifactId>  
  74.             <version>${hibernate.version}</version>  
  75.         </dependency>  
  76.         <dependency>  
  77.             <groupId>org.hibernate.javax.persistence</groupId>  
  78.             <artifactId>hibernate-jpa-2.0-api</artifactId>  
  79.             <version>1.0.1.Final</version>  
  80.         </dependency>  
  81.         <dependency>  
  82.             <groupId>org.hibernate</groupId>  
  83.             <artifactId>hibernate-c3p0</artifactId>  
  84.             <version>${hibernate.version}</version>  
  85.         </dependency>  
  86.         <dependency>  
  87.             <groupId>org.apache.struts</groupId>  
  88.             <artifactId>struts2-spring-plugin</artifactId>  
  89.             <version>${struts2.version}</version>  
  90.         </dependency>  
  91.         <dependency>  
  92.             <groupId>org.apache.struts</groupId>  
  93.             <artifactId>struts2-convention-plugin</artifactId>  
  94.             <version>${struts2.version}</version>  
  95.         </dependency>  
  96.         <dependency>  
  97.             <groupId>org.mortbay.jetty</groupId>  
  98.             <artifactId>servlet-api</artifactId>  
  99.             <version>3.0.20100224</version>  
  100.         </dependency>  
  101.         <dependency>  
  102.             <groupId>log4j</groupId>  
  103.             <artifactId>log4j</artifactId>  
  104.             <version>1.2.17</version>  
  105.         </dependency>  
  106.         <dependency>  
  107.             <groupId>org.apache.logging.log4j</groupId>  
  108.             <artifactId>log4j-core</artifactId>  
  109.             <version>${log4j.version}</version>  
  110.         </dependency>  
  111.         <dependency>  
  112.             <groupId>org.apache.logging.log4j</groupId>  
  113.             <artifactId>log4j-api</artifactId>  
  114.             <version>${log4j.version}</version>  
  115.         </dependency>  
  116.         <dependency>  
  117.             <groupId>org.apache.logging.log4j</groupId>  
  118.             <artifactId>log4j-web</artifactId>  
  119.             <version>${log4j.version}</version>  
  120.         </dependency>  
  121.         <dependency>  
  122.             <groupId>mysql</groupId>  
  123.             <artifactId>mysql-connector-java</artifactId>  
  124.             <version>6.0.3</version>  
  125.         </dependency>  
  126.         <dependency>  
  127.             <groupId>com.alibaba</groupId>  
  128.             <artifactId>fastjson</artifactId>  
  129.             <version>1.2.13</version>  
  130.         </dependency>  
  131.         <dependency>  
  132.             <groupId>com.alibaba</groupId>  
  133.             <artifactId>druid</artifactId>  
  134.             <version>1.0.21</version>  
  135.         </dependency>  
  136.         <dependency>  
  137.             <groupId>com.fasterxml.jackson.core</groupId>  
  138.             <artifactId>jackson-annotations</artifactId>  
  139.             <version>${jackson.version}</version>  
  140.         </dependency>  
  141.         <dependency>  
  142.             <groupId>com.fasterxml.jackson.core</groupId>  
  143.             <artifactId>jackson-core</artifactId>  
  144.             <version>${jackson.version}</version>  
  145.         </dependency>  
  146.         <dependency>  
  147.             <groupId>com.fasterxml.jackson.core</groupId>  
  148.             <artifactId>jackson-databind</artifactId>  
  149.             <version>${jackson.version}</version>  
  150.         </dependency>  
  151.         <dependency>  
  152.             <groupId>org.aspectj</groupId>  
  153.             <artifactId>aspectjweaver</artifactId>  
  154.             <version>1.8.9</version>  
  155.         </dependency>  
  156.         <dependency>  
  157.             <groupId>javax.servlet</groupId>  
  158.             <artifactId>jstl</artifactId>  
  159.             <version>1.2</version>  
  160.         </dependency>  
  161.     </dependencies>  
  162.     <build>  
  163.         <finalName>mavenSSH</finalName>  
  164.         <plugins>  
  165.             <!-- Run the JUnit unit tests in an isolated classloader -->  
  166.             <plugin>  
  167.                 <groupId>org.apache.maven.plugins</groupId>  
  168.                 <artifactId>maven-surefire-plugin</artifactId>  
  169.                 <version>2.19.1</version>  
  170.                 <configuration>  
  171.                     <skipTests>true</skipTests>  
  172.                 </configuration>  
  173.             </plugin>  
  174.             <plugin>  
  175.                 <groupId>org.apache.maven.plugins</groupId>  
  176.                 <artifactId>maven-war-plugin</artifactId>  
  177.                 <version>2.6</version>  
  178.                 <configuration>  
  179.                     <webXml>src/main/webapp/WEB-INF/web.xml</webXml>  
  180.                 </configuration>  
  181.             </plugin>  
  182.             <plugin>  
  183.                 <groupId>org.apache.maven.plugins</groupId>  
  184.                 <artifactId>maven-javadoc-plugin</artifactId>  
  185.                 <version>2.10.4</version>  
  186.                 <configuration>  
  187.                     <javadocDirectory>target/javadoc</javadocDirectory>  
  188.                     <reportOutputDirectory>target/javadoc</reportOutputDirectory>  
  189.                     <charset>UTF-8</charset>  
  190.                     <encoding>UTF-8</encoding>  
  191.                     <docencoding>UTF-8</docencoding>  
  192.                     <show>private</show>  
  193.                 </configuration>  
  194.             </plugin>  
  195.             <plugin>  
  196.                 <groupId>org.codehaus.cargo</groupId>  
  197.                 <artifactId>cargo-maven2-plugin</artifactId>  
  198.                 <version>1.5.0</version>  
  199.                 <configuration>  
  200.                     <container>  
  201.                         <containerId>tomcat7x</containerId>  
  202.                         <home>D:\tomcat</home><!--Tomcat安装目录-->  
  203.                     </container>  
  204.                     <configuration>  
  205.                         <type>existing</type>  
  206.                         <home>D:\tomcat</home><!--Tomcat安装目录-->  
  207.                     </configuration>  
  208.                 </configuration>  
  209.             </plugin>  
  210.         </plugins>  
  211.     </build>  
  212. </project>  

保存pom.xml,系统自动下载jar及其依赖文件
 

6、编辑src/main/webapp/WEB-INF/web.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  5.     id="mavenSSH" version="3.0">  
  6.   
  7.     <display-name>mavenSSH</display-name>  
  8.   
  9.     <!-- spring 和  Hibernate的配置文件 -->  
  10.     <context-param>  
  11.         <param-name>contextConfigLocation</param-name>  
  12.         <param-value>  
  13.              classpath:spring.xml  
  14.              classpath:spring-hibernate.xml  
  15.         </param-value>  
  16.     </context-param>  
  17.   
  18.     <!-- 编码设置 -->  
  19.     <filter>  
  20.         <filter-name>encodingFilter</filter-name>  
  21.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  22.         <init-param>  
  23.             <param-name>encoding</param-name>  
  24.             <param-value>utf-8</param-value>  
  25.         </init-param>  
  26.         <init-param>  
  27.             <param-name>forceEncoding</param-name>  
  28.             <param-value>true</param-value>  
  29.         </init-param>  
  30.     </filter>  
  31.     <filter-mapping>  
  32.         <filter-name>encodingFilter</filter-name>  
  33.         <url-pattern>/*</url-pattern>  
  34.     </filter-mapping>  
  35.   
  36.     <!-- openSessionInView配置 作用是延迟session关闭到view层 -->  
  37.     <filter>  
  38.         <filter-name>openSessionInViewFilter</filter-name>  
  39.         <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>  
  40.         <init-param>  
  41.             <param-name>singleSession</param-name>  
  42.             <param-value>true</param-value>  
  43.         </init-param>  
  44.     </filter>  
  45.   
  46.     <!-- 监听servletContext,启动contextConfigLocation中的spring配置信息 -->  
  47.     <listener>  
  48.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  49.     </listener>  
  50.   
  51.     <!-- 防止spring内存溢出监听器 -->  
  52.     <listener>  
  53.         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  54.     </listener>  
  55.   
  56.     <!-- Struts2 filter -->  
  57.       
  58.     <filter>  
  59.         <filter-name>struts2</filter-name>  
  60.         <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  61.     </filter>  
  62.       
  63.     <filter-mapping>  
  64.         <filter-name>struts2</filter-name>  
  65.         <url-pattern>*.action</url-pattern>  
  66.     </filter-mapping>  
  67.   
  68.   
  69.     <filter-mapping>  
  70.         <filter-name>openSessionInViewFilter</filter-name>  
  71.         <url-pattern>*.action</url-pattern>  
  72.     </filter-mapping>  
  73.   
  74.     <!-- 配置session超时时间,单位分钟 -->  
  75.     <session-config>  
  76.         <session-timeout>30</session-timeout>  
  77.     </session-config>  
  78.   
  79.     <welcome-file-list>  
  80.         <welcome-file>/index.jsp</welcome-file>  
  81.     </welcome-file-list>  
  82. </web-app>  


7、新建src/main/java/spring.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.             http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
  6.             http://www.springframework.org/schema/context  
  7.             http://www.springframework.org/schema/context/spring-context-4.3.xsd">  
  8.     <!-- 加载配置文件 -->  
  9.       
  10.     <context:property-placeholder location="classpath:config.properties"/>  
  11.     <!-- 扫描service自动注入为bean -->  
  12.     <context:component-scan base-package="com.moapp.mavenSSH" />  
  13.   
  14. </beans>  


8、新建src/main/java/spring-hibernate.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xsi:schemaLocation="  
  6.         http://www.springframework.org/schema/beans   
  7.         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd   
  8.         http://www.springframework.org/schema/tx   
  9.         http://www.springframework.org/schema/tx/spring-tx-4.3.xsd  
  10.         http://www.springframework.org/schema/aop   
  11.         http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">  
  12.   
  13.     <!-- 配置数据源 使用的是Druid数据源 -->  
  14.     <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
  15.         <property name="driverClassName" value="${jdbc.driverClassName}" />  
  16.         <property name="url" value="${jdbc.url}" />  
  17.         <property name="username" value="${jdbc.username}" />  
  18.         <property name="password" value="${jdbc.password}" />  
  19.   
  20.         <!-- 初始化连接大小 -->  
  21.         <property name="initialSize" value="0" />  
  22.         <!-- 连接池最大使用连接数量 -->  
  23.         <property name="maxActive" value="20" />  
  24.           
  25.         <!-- 连接池最小空闲 -->  
  26.         <property name="minIdle" value="0" />  
  27.         <!-- 获取连接最大等待时间 -->  
  28.         <property name="maxWait" value="60000" />  
  29.         <property name="poolPreparedStatements" value="true" />  
  30.         <property name="maxPoolPreparedStatementPerConnectionSize" value="33" />  
  31.         <!-- 用来检测有效sql -->  
  32.         <property name="validationQuery" value="${validationQuery}" />  
  33.         <property name="testOnBorrow" value="false" />  
  34.         <property name="testOnReturn" value="false" />  
  35.         <property name="testWhileIdle" value="true" />  
  36.         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  37.         <property name="timeBetweenEvictionRunsMillis" value="60000" />  
  38.         <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  39.         <property name="minEvictableIdleTimeMillis" value="25200000" />  
  40.         <!-- 打开removeAbandoned功能 -->  
  41.         <property name="removeAbandoned" value="true" />  
  42.         <!-- 1800秒,也就是30分钟 -->  
  43.         <property name="removeAbandonedTimeout" value="1800" />  
  44.         <!-- 关闭abanded连接时输出错误日志 -->  
  45.         <property name="logAbandoned" value="true" />  
  46.         <!-- 监控数据库 -->  
  47.         <property name="filters" value="mergeStat" />  
  48.     </bean>  
  49.   
  50.     <!-- 配置hibernate的SessionFactory -->  
  51.     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">  
  52.         <!-- 注入数据源 相关信息看源码 -->  
  53.         <property name="dataSource" ref="dataSource" />  
  54.         <!-- hibernate配置信息 -->  
  55.         <property name="hibernateProperties">  
  56.             <props>  
  57.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
  58.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  59.                 <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  
  60.                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
  61.             </props>  
  62.         </property>  
  63.         <!-- 扫描hibernate注解配置的entity -->  
  64.         <property name="packagesToScan" value="com.moapp.mavenSSH.beans" />  
  65.     </bean>  
  66.   
  67.     <!-- 配置事务管理器 -->  
  68.     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">  
  69.         <property name="sessionFactory" ref="sessionFactory" />  
  70.     </bean>  
  71.   
  72.     <!-- 配置事务增强处理Bean,指定事务管理器 -->  
  73.     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">  
  74.         <!-- 配置详细事务处理语义 -->  
  75.         <tx:attributes>  
  76.             <tx:method name="insert*" propagation="REQUIRED" />  
  77.             <tx:method name="update*" propagation="REQUIRED" />  
  78.             <tx:method name="delete*" propagation="REQUIRED" />  
  79.   
  80.             <tx:method name="get*" propagation="SUPPORTS" read-only="true" />  
  81.             <tx:method name="find*" propagation="SUPPORTS" read-only="true" />  
  82.             <tx:method name="select*" propagation="SUPPORTS" read-only="true" />  
  83.             <tx:method name="load*" propagation="SUPPORTS" read-only="true" />  
  84.   
  85.             <!-- 其他采用默认事务方式 -->  
  86.             <tx:method name="*" />  
  87.   
  88.         </tx:attributes>  
  89.     </tx:advice>  
  90.   
  91.     <!-- Spring aop事务管理 -->  
  92.     <aop:config>  
  93.         <!-- 配置切入点 -->  
  94.         <aop:pointcut id="transactionPointcut" expression="execution(* com.moapp.mavenSSH.serviceImpl.*.*(..))" />  
  95.         <!-- 指定在txAdvice切入点应用txAdvice事务增强处理 -->  
  96.         <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />  
  97.     </aop:config>  
  98.   
  99. </beans>  


9、新建src/main/java/config.properties

[plain]  view plain  copy
  1. #application configs  
  2.   
  3. #jdbc druid config  
  4. validationQuery = SELECT 1  
  5. #mysql connect 6.x 使用com.mysql.cj.jdbc.Driver  
  6. jdbc.driverClassName = com.mysql.cj.jdbc.Driver  
  7. jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true  
  8. jdbc.username = devel  
  9. jdbc.password = 123456  
  10.   
  11. #hibernate config  
  12. hibernate.dialect = org.hibernate.dialect.MySQLDialect  
  13. hibernate.show_sql = true  
  14. hibernate.format_sql = false  
  15. hibernate.hbm2ddl.auto = update  

 

10、新建src/main/java/struts.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">  
  3. <struts>  
  4.     <!-- 指定由spring负责action对象的创建 -->  
  5.     <constant name="struts.objectFactory" value="spring" />  
  6.     <!-- 所有匹配*.action的请求都由struts2处理 -->  
  7.     <constant name="struts.action.extension" value="action" />  
  8.     <!-- 是否启用开发模式 -->  
  9.     <constant name="struts.devMode" value="true" />  
  10.     <!-- struts配置文件改动后,是aa否重新加载 -->  
  11.     <constant name="struts.configuration.xml.reload" value="true" />  
  12.     <!-- 设置浏览器是否缓存静态内容 -->  
  13.     <constant name="struts.serve.static.browserCache" value="false" />  
  14.     <!-- 请求参数的编码方式 -->  
  15.     <constant name="struts.i18n.encoding" value="utf-8" />  
  16.     <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->  
  17.     <constant name="struts.i18n.reload" value="true" />  
  18.     <!-- 文件上传最大值 -->  
  19.     <constant name="struts.multipart.maxSize" value="104857600" />  
  20.     <!-- 让struts2支持动态方法调用 -->  
  21.     <constant name="struts.enable.DynamicMethodInvocation" value="true" />  
  22.     <!-- Action名称中是否还是用斜线 -->  
  23.     <constant name="struts.enable.SlashesInActionNames" value="false" />  
  24.     <!-- 允许标签中使用表达式语法 -->  
  25.     <constant name="struts.tag.altSyntax" value="true" />  
  26.     <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->  
  27.     <constant name="struts.dispatcher.parametersWorkaround" value="false" />  
  28.   
  29.     <!-- 用于CRUD Action的parent package -->  
  30.     <package name="crud-default" extends="convention-default">  
  31.         <!-- 基于paramsPrepareParamsStack, 增加store interceptor保证actionMessage在redirect后不会丢失 -->  
  32.         <interceptors>  
  33.             <interceptor-stack name="crudStack">  
  34.                 <interceptor-ref name="store">  
  35.                     <param name="operationMode">AUTOMATIC</param>  
  36.                 </interceptor-ref>  
  37.                 <interceptor-ref name="paramsPrepareParamsStack" />  
  38.             </interceptor-stack>  
  39.         </interceptors>  
  40.         <default-interceptor-ref name="crudStack" />  
  41.     </package>  
  42.   
  43.     <!-- 使用Convention插件,实现约定大于配置的零配置文件风格. 特殊的Result路径在Action类中使用@Result设定. -->  
  44.   
  45. </struts>  


11、新建src/main/java/log4j.properties

[plain]  view plain  copy
  1. ### set log levels ###  
  2. log4j.rootLogger = INFO , C , D , E   
  3.   
  4. ### console ###  
  5. log4j.appender.C = org.apache.log4j.ConsoleAppender  
  6. log4j.appender.C.Target = System.out  
  7. log4j.appender.C.layout = org.apache.log4j.PatternLayout  
  8. log4j.appender.C.layout.ConversionPattern = [mavenSSH][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  9.   
  10. ### log file ###  
  11. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
  12. log4j.appender.D.File = ../logs/ssh_mavenSSH.log  
  13. log4j.appender.D.Append = true  
  14. log4j.appender.D.Threshold = INFO   
  15. log4j.appender.D.layout = org.apache.log4j.PatternLayout  
  16. log4j.appender.D.layout.ConversionPattern = [mavenSSH][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  17.   
  18. ### exception ###  
  19. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
  20. log4j.appender.E.File = ../logs/ssh_mavenSSH_error.log   
  21. log4j.appender.E.Append = true  
  22. log4j.appender.E.Threshold = ERROR   
  23. log4j.appender.E.layout = org.apache.log4j.PatternLayout  
  24. log4j.appender.E.layout.ConversionPattern = [mavenSSH][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  


 12、新建src/main/java/log4j2.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Configuration status="info">  
  3.     <Appenders>  
  4.         <Console name="Console" target="SYSTEM_OUT">  
  5.             <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />  
  6.         </Console>  
  7.     </Appenders>  
  8.     <Loggers>  
  9.         <Root level="info">  
  10.             <AppenderRef ref="Console" />  
  11.         </Root>  
  12.     </Loggers>  
  13. </Configuration>  

 

13、建立mysql数据库test,新建表user,新建用户devel,密码123456,赋予devel对test数据库的所有权限

[sql]  view plain  copy
  1. create database test default charset utf8 collate utf8_general_ci;  
  2. use test;  
  3. create table user (  
  4. id int auto_increment not null,  
  5. userName varchar(50) not null,  
  6. password char(32) not null,  
  7. gender tinyint not null,  
  8. primary key(id)  
  9. )ENGINE=MyISAM;  
  10. grant all privileges on test.* to 'devel'@'localhost' identified by '123456';  
  11. flush privileges;  


14、bean/dao/service/action文件

com.moapp.mavenSSH.beans.User.java
 

[java]  view plain  copy
  1. package com.moapp.mavenSSH.beans;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.Id;  
  8.   
  9. @Entity(name = "user")  
  10. public class User implements Serializable {  
  11.     private static final long serialVersionUID = 3834833794454172304L;  
  12.     private int id;  
  13.     private String userName;  
  14.     private String password;  
  15.     private int gender;  
  16.       
  17.     @Id  
  18.     @Column(name = "id", unique = true,  nullable = false, insertable = false, updatable = false)  
  19.     public int getId() {  
  20.         return id;  
  21.     }  
  22.       
  23.     public void setId(int id) {  
  24.         this.id = id;  
  25.     }  
  26.       
  27.     @Column(name = "userName", nullable = false)  
  28.     public String getUserName() {  
  29.         return userName;  
  30.     }  
  31.       
  32.     public void setUserName(String userName) {  
  33.         this.userName = userName;  
  34.     }  
  35.   
  36.     @Column(name = "password", nullable = false)  
  37.     public String getPassword() {  
  38.         return password;  
  39.     }  
  40.       
  41.     public void setPassword(String password) {  
  42.         this.password = password;  
  43.     }  
  44.   
  45.     @Column(name = "gender", nullable = false)  
  46.     public int getGender() {  
  47.         return gender;  
  48.     }  
  49.       
  50.     public void setGender(int gender) {  
  51.         this.gender = gender;  
  52.     }  
  53. }  


com.moapp.mavenSSH.dao.BaseDao.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.dao;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. public interface BaseDao <T, PK extends Serializable> {  
  7.     T load(PK id);  
  8.     T get(PK id);  
  9.     List<T> findAll();  
  10.     void persist(T entity);  
  11.     PK save(T entity);  
  12.     void saveOrUpdate(T entity);  
  13.     void delete(PK id);  
  14.     void flush();  
  15. }  


com.moapp.mavenSSH.dao.UserDao.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.dao;  
  2.   
  3. import com.moapp.mavenSSH.beans.User;  
  4. import com.moapp.mavenSSH.dao.BaseDao;  
  5.   
  6. public interface UserDao extends BaseDao<User, Integer> {  
  7. }  


com.moapp.mavenSSH.daoImpl.UserDaoImpl.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.daoImpl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.hibernate.Session;  
  6. import org.hibernate.SessionFactory;  
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.stereotype.Repository;  
  9.   
  10. import com.moapp.mavenSSH.beans.User;  
  11. import com.moapp.mavenSSH.dao.UserDao;  
  12.   
  13. @Repository("UserDao")  
  14. public class UserDaoImpl implements UserDao{  
  15.       
  16.     @Autowired  
  17.     private SessionFactory sessionFactory;  
  18.       
  19.     private Session getCurrentSession() {  
  20.         return sessionFactory.getCurrentSession();  
  21.     }  
  22.   
  23.     @Override  
  24.     public User load(Integer id) {  
  25.         return getCurrentSession().load(User.class, id);  
  26.     }  
  27.   
  28.     @Override  
  29.     public User get(Integer id) {  
  30.         return getCurrentSession().get(User.class, id);  
  31.     }  
  32.   
  33.     @SuppressWarnings("unchecked")  
  34.     @Override  
  35.     public List<User> findAll() {  
  36.         return getCurrentSession().createQuery("from user").getResultList();  
  37.     }  
  38.   
  39.     @Override  
  40.     public void persist(User entity) {  
  41.         getCurrentSession().persist(entity);  
  42.     }  
  43.   
  44.     @Override  
  45.     public Integer save(User entity) {  
  46.         return (Integer)getCurrentSession().save(entity);  
  47.     }  
  48.   
  49.     @Override  
  50.     public void saveOrUpdate(User entity) {  
  51.         getCurrentSession().saveOrUpdate(entity);  
  52.     }  
  53.   
  54.     @Override  
  55.     public void delete(Integer id) {  
  56.         getCurrentSession().delete(this.get(id));  
  57.     }  
  58.   
  59.     @Override  
  60.     public void flush() {  
  61.         getCurrentSession().flush();  
  62.     }  
  63.   
  64. }  

com.moapp.mavenSSH.service.UserManager.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.moapp.mavenSSH.beans.User;  
  6.   
  7. public interface UserManager {  
  8.     User load(Integer id);  
  9.     User get(Integer id);  
  10.     List<User> findAll();  
  11.     void persist(User entity);  
  12.     Integer save(User entity);  
  13.     void saveOrUpdate(User entity);  
  14.     void delete(Integer id);  
  15.     void flush();  
  16. }  


com.moapp.mavenSSH.serviceImpl.UserManagerImpl.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.serviceImpl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Service;  
  7.   
  8. import com.moapp.mavenSSH.beans.User;  
  9. import com.moapp.mavenSSH.dao.UserDao;  
  10. import com.moapp.mavenSSH.service.UserManager;  
  11.   
  12. @Service("userManager")  
  13. public class UserManagerImpl implements UserManager {  
  14.     @Autowired  
  15.     UserDao userDao;  
  16.   
  17.     @Override  
  18.     public User load(Integer id) {  
  19.         return null;  
  20.     }  
  21.   
  22.     @Override  
  23.     public User get(Integer id) {  
  24.         return userDao.get(id);  
  25.     }  
  26.   
  27.     @Override  
  28.     public List<User> findAll() {  
  29.         return userDao.findAll();  
  30.     }  
  31.   
  32.     @Override  
  33.     public void persist(User entity) {  
  34.         userDao.persist(entity);  
  35.     }  
  36.   
  37.     @Override  
  38.     public Integer save(User entity) {  
  39.         return userDao.save(entity);  
  40.     }  
  41.   
  42.     @Override  
  43.     public void saveOrUpdate(User entity) {  
  44.         userDao.saveOrUpdate(entity);  
  45.     }  
  46.   
  47.     @Override  
  48.     public void delete(Integer id) {  
  49.         userDao.delete(id);  
  50.     }  
  51.   
  52.     @Override  
  53.     public void flush() {  
  54.         userDao.flush();  
  55.     }  
  56.   
  57. }  


com.moapp.mavenSSH.action.UserAction.java

因为没有配置@Action,所以默认为user.action,访问地址:http://host:port/${context}/${namespace}/user.action,本例中的访问地址为:http://localhost:8080/mavenSSH/user/user.action

[java]  view plain  copy
  1. package com.moapp.mavenSSH.action;  
  2.   
  3. import com.moapp.mavenSSH.beans.User;  
  4. import com.moapp.mavenSSH.service.UserManager;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import com.opensymphony.xwork2.ModelDriven;  
  7. import com.opensymphony.xwork2.Preparable;  
  8.   
  9. import java.io.IOException;  
  10. import java.io.PrintWriter;  
  11. import java.util.List;  
  12.   
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. import org.apache.log4j.Logger;  
  16. import org.apache.struts2.ServletActionContext;  
  17. import org.apache.struts2.convention.annotation.Namespace;  
  18. import org.apache.struts2.convention.annotation.ParentPackage;  
  19. import org.apache.struts2.convention.annotation.Action;  
  20. import org.apache.struts2.convention.annotation.AllowedMethods;  
  21. import org.apache.struts2.convention.annotation.Result;  
  22. import org.springframework.beans.factory.annotation.Autowired;  
  23.   
  24. @ParentPackage("struts-default")  
  25. @Namespace("/user")  
  26. @AllowedMethods("detail")  
  27. @Results({  
  28.     @Result(name = "success", location = "/user/user.jsp")  
  29. })  
  30. public class UserAction extends ActionSupport implements ModelDriven<User>, Preparable {  
  31.     private static final long serialVersionUID = -4611010990125262639L;  
  32.     private static final Logger LOGGER = Logger.getLogger(UserAction.class);  
  33.     private Integer id;  
  34.     User user;  
  35.     List<User> userList;  
  36.       
  37.     @Autowired  
  38.     private UserManager userManager;  
  39.       
  40.     public Integer getId() {  
  41.         return id;  
  42.     }  
  43.       
  44.     public void setId(Integer id) {  
  45.         this.id = id;  
  46.     }  
  47.       
  48.     public User getUser() {  
  49.         return user;  
  50.     }  
  51.       
  52.     public void setUser(User user) {  
  53.         this.user = user;  
  54.     }  
  55.       
  56.     public List<User> getUserList() {  
  57.         return userList;  
  58.     }  
  59.       
  60.     public void setUserList(List<User> userList) {  
  61.         this.userList = userList;  
  62.     }  
  63.       
  64.     @Override  
  65.     public void prepare() throws Exception {  
  66.           
  67.     }  
  68.   
  69.     @Override  
  70.     public User getModel() {  
  71.         if (null != id) {  
  72.             user = userManager.get(id);  
  73.         } else {  
  74.             user = new User();  
  75.         }  
  76.         return user;  
  77.     }  
  78.       
  79.     @Override  
  80.     public String execute() throws Exception {  
  81.         LOGGER.info("查询所有用户");  
  82.         userList = userManager.findAll();  
  83.         return SUCCESS;  
  84.     }  
  85.   
  86.     public void detail() throws IOException {  
  87.         String id = ServletActionContext.getRequest().getParameter("id");  
  88.         LOGGER.info("查询用户详情:" + id);  
  89.         user = userManager.get(Integer.valueOf(id));  
  90.         //AjaxUtil.ajaxJSONResponse(user);  
  91.         HttpServletResponse response = ServletActionContext.getResponse();  
  92.         PrintWriter out = response.getWriter();  
  93.         out.println("Hello " + user.getUserName());  
  94.     }  
  95.   
  96. }  


src/main/webapp/user/user.jsp

[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>  
  4.   
  5. <%  
  6.     String path = request.getContextPath();  
  7.     String basePath = request.getScheme() + "://"  
  8.             + request.getServerName() + ":" + request.getServerPort()  
  9.             + path + "/";  
  10. %>  
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  12. <html>  
  13. <head>  
  14. <base href="<%=basePath%>" />  
  15. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  16. <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>  
  17. <title>userInfo</title>  
  18. </head>  
  19. <body>  
  20.     全部用户信息:  
  21.     <c:forEach items="${userList}" var="user">  
  22.         <div>姓名:${user.userName } 性别:${user.gender } <a target="_blank" href="user/user!detail.action?id=${user.id}">用户详情</a></div>  
  23.     </c:forEach>  
  24.   
  25. </body>  
  26. </html>  


15、JUnit测试文件

com.moapp.mavenSSH.service.TestUserManager.java

[java]  view plain  copy
  1. package com.moapp.mavenSSH.service;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.junit.Test;  
  5. import org.junit.runner.RunWith;  
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.test.context.ContextConfiguration;  
  8. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
  9.   
  10. import com.alibaba.fastjson.JSON;  
  11. import com.moapp.mavenSSH.beans.User;  
  12.   
  13. @RunWith(SpringJUnit4ClassRunner.class)  
  14. @ContextConfiguration(locations = {  
  15.         "classpath:spring.xml",  
  16.         "classpath:spring-hibernate.xml"  
  17. })  
  18. public class TestUserManager {  
  19.     private static final Logger LOGGER = Logger.getLogger(TestUserManager.class);  
  20.     @Autowired  
  21.     UserManager userManager;  
  22.       
  23.     @Test  
  24.     public void save() {  
  25.         User user = new User();  
  26.         user.setUserName("fengwusan");  
  27.         user.setPassword("123456");  
  28.         user.setGender(0);  
  29.         Integer id = userManager.save(user);  
  30.         JSON.toJSONString(id);  
  31.     }  
  32. }  

选择Debug-Debug as - JUnit Test,配置无误,则运行正常,不然需要自己调试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值