一、创建maven+springMVC+Hibernate+mysql框架
1、准备开发环境,参照http://hawkist.iteye.com/blog/978886
2、创建maven project:
项目类型--maven archetype webapp
group id/artifact id/package(不写就是默认)
创建好后进行配置
添加source folder--src/main/java src/test/java src/test/resources
在java build path 中修改四个文件class文件输出路径
src/main/java src/java/resources 选择target/classes
src/test/java src/test/resources 选择target/test-classes
修改项目jdk以及compiler
把项目转换成dynamic web--右键项目,选择project facets--配置project facets
设置部署程序集--右键项目,选择deployment assembly,并进行相关配置
3、添加springMVC
pom.xml文件添加spring-web/spring-webmvc/javax.servlet:jstl/javax.servlet:servlet-api等依赖,参照http://hawkist.iteye.com/blog/1042020 ,注意jar版本一致,不然会造成冲突。
配置web.xml文件,并在src/java/resources下创建applicationContext.xml,在/WEB-INF/conf下创建springMVC-config.xml文件
配置applicationContext.xml文件
配置springMVC-config.xml文件
4、写登录实例
编写login.jsp/main.jsp
编写loginController
5、添加i18n支持
在src/main/resources下创建messages文件夹,并创建messages.properties、messages_en.properties、messages_zh_CN.properties文件
编写i18n配置文件springI18n-config.xml
将页面元素换成<spring:message code="message.login.email"/>模式
6、添加log支持
pom添加log4j包
web.xml添加咯个配置
在相应的位置创建log4j.properties文件
在类中运用
7、添加hibernate、mysql
添加jar
添加配置属性文件:
添加hibernate配置文件springHibernate-config.xml:
加入applicationContext.xml文件
创建实体类
创建BaseDao.java
编写dao实例
注意:实体类--@Entity,数据仓储--@Repository,服务类--@Service,控制层--@Controller,注入bean--@Autowired
自此,一个简单的框架搭建完成,下面是pom文件
8、搭建框架中遇到的exception
Missing artifact javax.transaction:jta:jar:1.0.1B:compile
在导入hibernate包时候,需要jta包(Java Transaction API (JTA)规范的包,是指定事务处理管理和分布式事务处理系统之间的标准Java接口),但是maven仓库没有这个包,需要下载并安装到maven仓库中,下载后用下面命令安装
mvn install:install-file -Dfile=D:\jta-1_0_1B-classes.zip -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar
安装后导入jta包即可
java.lang.NoSuchFieldError: APPLICATION_CONTEXT_ID_PREFIX
使用spring2.5.6整体包带来的jar冲突,spring包版本一致,不要使用整体包
org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
缺少aspectjweaver.jar
1、准备开发环境,参照http://hawkist.iteye.com/blog/978886
2、创建maven project:
项目类型--maven archetype webapp
group id/artifact id/package(不写就是默认)
创建好后进行配置
添加source folder--src/main/java src/test/java src/test/resources
在java build path 中修改四个文件class文件输出路径
src/main/java src/java/resources 选择target/classes
src/test/java src/test/resources 选择target/test-classes
修改项目jdk以及compiler
把项目转换成dynamic web--右键项目,选择project facets--配置project facets
设置部署程序集--右键项目,选择deployment assembly,并进行相关配置
3、添加springMVC
pom.xml文件添加spring-web/spring-webmvc/javax.servlet:jstl/javax.servlet:servlet-api等依赖,参照http://hawkist.iteye.com/blog/1042020 ,注意jar版本一致,不然会造成冲突。
配置web.xml文件,并在src/java/resources下创建applicationContext.xml,在/WEB-INF/conf下创建springMVC-config.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>notepad</display-name> <!-- 默认页面 --> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- servlet上下文初始化参数 --> <!-- applicationContext.xml --> <context-param> <param-name>contextConfigLocation</param-name> <!-- 启动容器就会加载此处配置的配置文件 第一种写法,配置文件放在src/main/resources下 第二种写法,配置文件放在/WEB-INF/conf/spring下,个人倾向第二种 --> <!-- <param-value>classpath:applicationContext.xml</param-value> --> <param-value>/WEB-INF/conf/spring/applicationContext.xml</param-value> </context-param> <!-- log4j.properties --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/conf/log/log4j.properties</param-value> </context-param> <!-- listener --> <!-- log4j监听器 应放在spring监听器之前,因为spring也会加载log4j.properties,放在后面会抛出两个警告 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- filter --> <!-- 字符过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- servlet --> <!-- springMVC的servlet,加载/WEB-INF/conf/spring/springMVC-config.xml文件,启动springMVC 如果没有contextConfigLocation参数,则在/WEB_INF下去找springMVC-servlet.xml文件 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- <param-value></param-value> --> <param-value>/WEB-INF/conf/spring/springMVC-config.xml</param-value> </init-param> <!-- 值大于等于0表示容器启动应用时候加载该servlet,数值越小优先级越高 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
配置applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- xmlns 声明默认的命名空间 xmlns:context 声明context命名空间 xmlns:p 声明p命名空间,用于简化spring配置文件中属性声明的写法 xmlns:mvc 声明mvc命名空间 xmlns:xsi 声明XML Schema实例名称空间,并将xsi前缀与该命名空间绑定 xsi:schemaLocation 引入Schema模式文档,解析器使用文档对xml进行校验,它的值是成对出现的, 第一个表示命名空间,第二个表示该命名空间模式文档位置,中间用空格隔开 如果抛出Failed to read schema document异常,是因为无法访问网址,需要在pom中添加相关依赖 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jaxws="http://cxf.apache.org/jaxws" 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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 需要扫描的包,@Repository、@Service等 --> <context:component-scan base-package="com.cpkf.notpad"> <!-- 启用了对类包进行扫描以实施注释驱动 Bean 定义的功能, 启用了注释驱动自动注入的功能,隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor,就可以将 <context:annotation-config/>移除了 --> </context:component-scan> <!-- 引入别的配置文件 --> <!-- 引入springI18n-config.xml --> <import resource="springI18n-config.xml"/> <!-- 引入springHibernate-config.xml --> <import resource="springHibernate-config.xml"/> </beans>
配置springMVC-config.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- springMVC配置 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 对指定包中所有类进行扫描,完成bean的创建和自动依赖注入功能 --> <context:component-scan base-package="com.cpkf.notpad.controller" ></context:component-scan> <!-- 启动springMVC注解功能,完成请求和注解POJO的映射 mvc:annotation-driven代替了AnnotationMethodHandlerAdapter、DefaultAnnotationHandlerMapping单独注册 在WebApplicationContext中注册下面两个类 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 支持数据绑定过程中的类型转换服务 支持数字、日期、时间等数据的格式化 支持使用JSR-303的数据验证功能 支持XML和JSON的读写 --> <mvc:annotation-driven /> <!-- 对模型视图名称进行解析,在模型视图名称上添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/webs/" p:suffix=".jsp"></bean> <!-- 这个default-servlet-handler 可以使用DispatcherServlet的url-pattern 是/*, 如果springmvc找不到handler来处理请求, 会自动放过,让serlvet container处理 --> <mvc:default-servlet-handler/> <!-- 该tag方便请求根view,这个view一般是静态的 --> <mvc:view-controller path="/about" view-name="ablot"/> <!-- 这个tag是方便重定向路径 --> <mvc:resources location="/media/**" mapping="/media/"/> <!-- json支持,依赖jackson-core-lgpl.jar、jackson-mapper-asl.jar、jackson-mapper-lgpl.jar --> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> <!-- 注解验证,依赖validation-api.jar,hibernate-validator.jar --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"></bean> <!-- file上传,依赖commons-fileupload.jar --> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean> <!-- exception处理 --> <beans:bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="common/error"> <beans:property name="exceptionMappings"> <beans:props> <beans:prop key="java.lang.RuntimeException">common/error</beans:prop> </beans:props> </beans:property> </beans:bean> </beans>
4、写登录实例
编写login.jsp/main.jsp
编写loginController
package com.cpkf.notpad.controller.account; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.cpkf.notpad.commons.constants.DateFormatConstants; import com.cpkf.notpad.commons.utils.DateUtil; /** * Filename: LoginController.java * Description: 登录控制层,以springMVC注解的方式实现 * Company: * @author: Jiang.hu * @version: 1.0 * Create at: May 6, 2011 2:14:20 PM * modified: */ @Controller public class LoginController { /* * @RequestMapping 方法的返回类型 * ModelAndView * Model * A Map object for exposing a model * View * String 指定view name * void if the method handles the response itself * If the method is annotated with @ResponseBody,the return type is written to the response HTTP body * redirect, forward跳转 * 使用"redirect:"前缀,如 "redirect:/view" * 相应地使用"forward:"前缀表示servlet内部跳转 * Handling a file upload in a form * 使用@RequestParam("file") MultipartFile file获取上传的文件 */ @RequestMapping(value="/login.do",method={RequestMethod.GET,RequestMethod.POST}) public ModelAndView login(HttpServletRequest request,HttpServletResponse response){ String email = request.getParameter("email"); String passWord = request.getParameter("passWord"); String nowTime = DateUtil.dateFormat(new Date(), DateFormatConstants.DAY_MONTH_YEAR_HOUR_MIN_SEC); Map<String, Object> modelMap = new HashMap<String, Object>(); modelMap.put("email", email); modelMap.put("passWord", passWord); modelMap.put("nowTime", nowTime); ModelMap modelMap2 = new ModelMap(); modelMap2.addAttribute("email", email); modelMap2.addAttribute("passWord",passWord); modelMap2.addAttribute("nowTime", nowTime); /* * 返回ModelAndView对象,常见的几种方式 * view-返回网页名称,在springMVC文件中已经配置了前缀和后缀 * model数据可以直接用键值对,也可用hashmap、modelmap以及addobject的方式 * */ // return new ModelAndView("index","nowTime",nowTime); // return new ModelAndView("index",modelMap); // return new ModelAndView("index",modelMap2); return new ModelAndView("index").addObject("email", email).addObject("passWord", passWord).addObject("nowTime", nowTime); } }
5、添加i18n支持
在src/main/resources下创建messages文件夹,并创建messages.properties、messages_en.properties、messages_zh_CN.properties文件
编写i18n配置文件springI18n-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 国际化配置 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 配置资源文件 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <!-- 国际化文件通用名 --> <value>messages/messages</value> </list> </property> <!-- JSP渲染器为JSTL支持的,JSP文件中可使用fmt标记 --> <property name="useCodeAsDefaultMessage" value="true"></property> </bean> <!-- 配置resolve 基于session org.springframework.web.servlet.i18n.SessionLocaleResolver 基于request org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver 基于cookieorg.springframework.web.servlet.i18n.CookieLocaleResolver --> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> </bean> <!-- 配置拦截器 --> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang"></property> </bean> </beans>
将页面元素换成<spring:message code="message.login.email"/>模式
6、添加log支持
pom添加log4j包
<!-- logger --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> <type>jar</type> <scope>compile</scope> </dependency>
web.xml添加咯个配置
<!-- log4j.properties --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/conf/log/log4j.properties</param-value> </context-param> <!-- log4j监听器 应放在spring监听器之前,因为spring也会加载log4j.properties,放在后面会抛出两个警告 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
在相应的位置创建log4j.properties文件
#指定根logger,以及日志输出级别,大于该级别的日志被输出(DEBUG INFO WARN ERROR FATAL) OFF为关闭 #A1,A2为两个输出目的地 log4j.rootLogger=INFO,A1,A2 #指定A1为每日输出一个日志文件 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender #文件输出地址 #系统把web目录的路径压入一个叫webapp.root的系统变量 #log4j.appender.A1.File=${webapp.root}/WEB-INF/logs/myfuse.log #相对路径,在tomcat中与webapps同级 log4j.appender.A1.File=../notepadLog/notepad.log #设置文件编码格式 log4j.appender.A1.encoding=UTF-8 #新日志文件名在原有基础上加上日期 log4j.appender.A1.DatePattern='.'yyyyMMdd #指定日志的布局格式 log4j.appender.A1.layout=org.apache.log4j.PatternLayout #设置格式参数 log4j.appender.A1.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n #指定A2为控制台 log4j.appender.A2=org.apache.log4j.ConsoleAppender log4j.appender.A2.encoding=UTF-8 log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=[notepad] %r %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n
在类中运用
private static Logger logger = Logger.getLogger(LoginController.class); …… logger.info("******");
7、添加hibernate、mysql
添加jar
<!-- DB --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.2.7.ga</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.4.0.GA</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.0.2.GA</version> </dependency>
添加配置属性文件:
<value>/WEB-INF/conf/db/jdbc-parms.properties</value> <value>/WEB-INF/conf/db/pool-parms.properties</value> <value>/WEB-INF/conf/db/hibernate-parms.properties</value>
添加hibernate配置文件springHibernate-config.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- hibernate配置 --> <beans xmlns="http://www.springframework.org/schema/beans" 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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 加载配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/conf/db/jdbc-parms.properties</value> <value>/WEB-INF/conf/db/pool-parms.properties</value> <value>/WEB-INF/conf/db/hibernate-parms.properties</value> </list> </property> </bean> <!-- 配置c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="acquireIncrement" value="${pool.acquireIncrement}" /> <property name="initialPoolSize" value="${pool.initialPoolSize}" /> <property name="minPoolSize" value="${pool.minPoolSize}" /> <property name="maxPoolSize" value="${pool.maxPoolSize}" /> <property name="autoCommitOnClose" value="${pool.autoCommitOnClose}" /> </bean> <!-- hibernate的annotation会话管理,依赖hibernate、hibernate-annotations、persistence-api包 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- packagesToScan可以自动搜索某个package的全部标记@Entity class --> <property name="packagesToScan"> <list> <value>com.cpkf.notpad.entity</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop> </props> </property> </bean> <!-- 引入hibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="upd*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="log*" propagation="REQUIRED" /> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <!--给aop切面加入事务,依赖aspectjweaver.jar --> <aop:config> <aop:pointcut id="allServiceMethod" expression="execution(* com.cpkf.notpad.server.**.*(..))" /> <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" /> </aop:config> </beans>
加入applicationContext.xml文件
<!-- 引入springHibernate-config.xml --> <import resource="springHibernate-config.xml"/>
创建实体类
package com.cpkf.notpad.entity; import javax.persistence.*; /** * Filename: Account.java * Description: account实体类 * Company: * @author: * @version: 1.0 * Create at: May 10, 2011 1:44:50 PM * modified: */ @Entity @Table(name="account") public class Account { /** * @Id:该类中独特标志 * @Column:对应表中的列 * @GeneratedValue:主键生成策略-自增长 */ @Id @Column(name="account_id") @GeneratedValue(strategy=GenerationType.IDENTITY) private Long accountId; @Column(name="email") private String email; @Column(name="passWord") private String passWord; public Long getAccountId() { return accountId; } public void setAccountId(Long accountId) { this.accountId = accountId; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } }
创建BaseDao.java
package com.cpkf.notpad.dao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Repository; /** * Filename: BaseDao.java * Description: 数据操作基础类,注入hibernateTemplate * Company: * @author: * @version: 1.0 * Create at: May 10, 2011 2:50:47 PM * modified: */ @Repository public abstract class BaseDao { @Autowired private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } }
编写dao实例
package com.cpkf.notpad.dao.impl; import java.util.List; import org.springframework.stereotype.Repository; import com.cpkf.notpad.dao.BaseDao; import com.cpkf.notpad.dao.IAccountDao; import com.cpkf.notpad.entity.Account; @Repository public class AccountDaoImpl extends BaseDao implements IAccountDao { public Account getAccountByEmailAndPwd(String email, String pwd) { List list = getHibernateTemplate().find( "from Account where email=? and passWord=?",new String[]{email,pwd}); if(list != null && list.size() > 0){ return (Account) list.get(0); } return null; } }
注意:实体类--@Entity,数据仓储--@Repository,服务类--@Service,控制层--@Controller,注入bean--@Autowired
自此,一个简单的框架搭建完成,下面是pom文件
<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>com.thornBird.think</groupId> <artifactId>notpad</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>notpad Maven Webapp</name> <url>http://maven.apache.org</url> <build> <finalName>notpad</finalName> </build> <dependencies> <!-- commons --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.0.5.RELEASE</version> </dependency> <!-- spring+springMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.5.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.0.5.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- javax --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.0.GA</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- logger --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- DB --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> <type>jar</type> <scope>compile</scope> </dependency> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.2.7.ga</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.4.0.GA</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.0.2.GA</version> </dependency> <!-- other --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.8.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>1.8.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.10</version> <type>jar</type> <scope>compile</scope> </dependency> </dependencies> </project>
8、搭建框架中遇到的exception
Missing artifact javax.transaction:jta:jar:1.0.1B:compile
在导入hibernate包时候,需要jta包(Java Transaction API (JTA)规范的包,是指定事务处理管理和分布式事务处理系统之间的标准Java接口),但是maven仓库没有这个包,需要下载并安装到maven仓库中,下载后用下面命令安装
mvn install:install-file -Dfile=D:\jta-1_0_1B-classes.zip -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar
安装后导入jta包即可
java.lang.NoSuchFieldError: APPLICATION_CONTEXT_ID_PREFIX
使用spring2.5.6整体包带来的jar冲突,spring包版本一致,不要使用整体包
org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
缺少aspectjweaver.jar
评论
1 楼
国产希特勒
2011-07-17
楼主下面的在\WEB-INF\conf\springMVC-config.xml里数据库的配置文件可否贴出来啊,看不到效果啊
<!-- 加载配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/conf/db/jdbc-parms.properties</value> <value>/WEB-INF/conf/db/pool-parms.properties</value> <value>/WEB-INF/conf/db/hibernate-parms.properties</value> </list> </property> </bean>
相关推荐
这是构建基于Maven的SSH原型项目视频文件,初学者可以进行参考
Springboot整合dubbo构建maven多模块项目 - 集成 mybatis
ssm框架是spring,spring mvc,mybatis三大框架的整合,是现在主流的框架。使用maven构建工具整合这三个框架非常容易,如果大家下载后有什么问题或错误欢迎留言评论,谢谢
spring mvc、apache shiro、mysql 框架搭建,基于maven构建
依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中...
基于maven构建 spring mvc + apache shiro + mysql 框架搭建;有任何不懂的技术问题都可以联系我共同讨论
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性...
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
Ecplise+Maven搭建SSH框架
java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven视频教程云盘下载链接
最近在研究分布式,先研究一下maven创建的pom工程、war工程、jar工程,用maven构建一个web的小demo,记录自己的点点滴滴,这只是学习的开始,和大家一起分享,学艺不精,不断学习
最近群里经常有人会问到关于maven构建Appium测试项目以及使用testNG生成测试报告的问题,试着搭建了一下,下面是过程: jdk安装过程我这里就不说了 一、下载eclipse,推荐下载Eclipse Luna java EE版本,自带maven...
使用maven 搭建springMVC+spring+mybatis框架
本资源是Springboot+maven的项目框架搭建结果,具体搭建步骤与https://xiaoyao.blog.csdn.net/article/details/89512968内容匹配
Spring IoC简单示例,使用XML配置依赖注入,使用Maven构建项目 Maven使用及Spring IoC教程参考我的Blog:http://blog.csdn.net/boyazuo
SpringMVC+Spring+JPA+Maven的框架搭建的详细说明文档。具体包括项目整体结构,及如何使用Maven构建
- 项目管理构建:maven 3.6 - 项目框架:springboot 2.1.7RELEASE - 文档数据库:mongodb 3.6 - 缓存数据库:redis - Api文档:swagger2 - 对象存储空间:七牛云 - 跨域认证:jwt ## 项目构建
蚂蚁课堂-第四期-基于SpringCloud构建微服务电商项目 (无密) |____035-自动化运维-基于Docker+Jenkins实现自动化部署.rar |____034-秒杀系统设计-基于责任链设计模式与网关实现限流.rar |____033-秒杀系统设计-基于...
背景:jenkins作为中央调度器,...git源码管理,maven构建; 1、软件安装步骤略;jenkins需要安装框架所需要的插件; 2、准备测试代码上传到github,jenkins配置maven、git插件; 3、直接上图配置,一个步骤一步来:
Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911