sequence;maven工程建立也就是jar包的引入
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>lzq</groupId> <artifactId>lzq</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>lzq Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.3.12.RELEASE</spring.version> <hibernate.version>4.1.2</hibernate.version> <struts2.version>2.5.13</struts2.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>2.1_3</version> </dependency> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <!-- struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> </dependency> <!--config-browser-plugin插件,使用了这个插件之后,就可以很方便的浏览项目中的所有action及其与 jsp view的映射 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-junit-plugin</artifactId> <version>${struts2.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts2.version}</version> </dependency> <!-- 添加对数据库的支持 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency> <!-- 添加对数据源的支持 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> </dependencies> <build> <finalName>lzq</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <webResources> <resource> <directory>src\main\resource</directory> </resource> </webResources> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> </project>
如果上面出现无法加载jdbc.propereties原因是
<directory>src\main\resource</directory>修改目录加载指定目录下的资源
2struts的配置 web。xml struts。xml头标签的内容最好去官网copy一份
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml</param-value> </context-param>
3spring的配置 web.xml application.xml 头标签的内容最好去官网copy一份否会出现莫名奇妙错误,比如struts验证框架不起作用
<struts> <constant name="struts.devMode" value="true"/> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> <constant name="struts.objectFactory" value="spring" /> <package name="l" extends="struts-default" namespace="/"> </package> </struts>
jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/ssh jdbc.user = root jdbc.password =htjhsth
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" >4hibernate的配置 外部属性的引入jdbc.properties
<!-- 引入外部属性文件--> <context:property-placeholder location="jdbc.properties"/>配置连接池即引用jdbc中的属性用的是csp0连接池
<!-- 配置链接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean>hibernate相关信息即sesssionFactory注入连接池和什么方言之类的
<!-- hibernate相关信息--> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 注入连接池--> <property name="dataSource" ref="dataSource"/> <!-- 配置hibernate其他属性--> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true </prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.connection.autocommit">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property>
<!-- 配置hibernate映射文件--> </bean>配置事物管理用注解式比较简单
<!-- 事物管理--> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!--开启注解事物--> <tx:annotation-driven tra
前言:ideamyeclipse比较,myeclipse对ssh集成比较好,比较傻瓜式,nextnext即可完成,无奈破解不了只好用idea来做,一步一坑,一步一错,在此详细记下,供自己以及别人
查阅,下载配置tomcat,maven不用就用自带的就行,
首先,还是用maven吧,直接网上搜个pom就行,不用自己去找包解决jar包依赖,刚开始我没用maven,又得找这个又得找哪个,找东西这种活还是交给maven去做吧
create new project maven 2 webapp next next 黄色右下角configuration
edit tomcat configuration 选择 exploded就是展开的意思,便于后期调试,回来热部署,updateclassand 热部署就是当你界面变化的时候不用去重启tomcat,节省时间
apply
添加pom 直接复制会把左边的行数也会复制不知道怎么回事,我觉得肯定是csdn的程序员偷懒le
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ss</groupId>
<artifactId>xx</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>xx Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.12.RELEASE</spring.version>
<hibernate.version>4.1.2</hibernate.version>
<struts2.version>2.5.13</struts2.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</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-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.1_3</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency>
<!--config-browser-plugin插件,使用了这个插件之后,就可以很方便的浏览项目中的所有action及其与 jsp view的映射 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>${struts2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<build>
<finalName>xx</finalName>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webResources>
<resource>
<directory>src\main\webapp</directory>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</project>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 数据连接信息 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/learn"/>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="user" value="root"/>
<property name="password" value="Lzq15666"/>
<!-- 其他配置 -->
<!-- 初始化获取三个连接,取值应该在minPoolSize和maxPoolSize之间 -->
<property name="initialPoolSize" value="3"/>
<!-- 连接池中保留的最小连接数 -->
<property name="maxPoolSize" value="3"/>
<!-- 连接池中保留的最大连接数 -->
<property name="minPoolSize" value="15"/>
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->
<property name="acquireIncrement" value="3"/>
<!-- 控制数据源加载的数量,若maxStatements和maxStatementsPerConnection均为0,则缓存被关闭 -->
<property name="maxStatements" value="8"/>
<!-- maxStatementsPerConnection定义了连接池中的单个连接所拥有的最大缓存statements数。 -->
<property name="maxStatementsPerConnection" value="5"/>
<!--最大空闲时间,1800秒未使用则连接被丢弃。若为0则永不丢弃 -->
<property name="maxIdleTime" value="1800"/>
</bean>
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource">
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="format_sql">true</prop> <prop key="hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>entity.CartEntity</value>
<value>entity.OrdersEntity</value>
<value>entity.ProductinfoEntity</value>
<value>entity.ProductsortEntity</value>
<value>entity.UserEntity</value>
</list>
</property>
<property name="mappingLocations">
<list>
<value>classpath:entity/CartEntity.hbm.xml</value>
<value>classpath:entity/OrdersEntity.hbm.xml</value>
<value>classpath:entity/ProductinfoEntity.hbm.xml</value>
<value>classpath:entity/ProductsortEntity.hbm.xml</value>
<value>classpath:entity/UserEntity.hbm.xml</value>
</list>
</property>
<!-- 配置事务管理器 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 配置Hibernate事务策略 -->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDAO" class="dao.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<property name="userDAO" ref="userDAO"/>
</bean>
<property name="userService" ref="userService"/>
</bean>
<property name="userService" ref="userService"/>
</bean>
千万不要采取提示的的在多方设置insert=false,update=false,如果一方设置了inverse=true,那么从表的外键就是空值;
如果设置了inverse=false,那么就会多出两条update语句,两种方法均不合适,况且问题也不是出在这里
应该把<columnname="petsId"/>改成<columnname="pets_id"/>外键
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.objectFactory" value="spring" />
<package name="lzq" extends="struts-default" namespace="/">
- <!-- 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容器配置 -->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>