一、创建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原型项目"这个主题,旨在帮助初学者理解和掌握如何使用这些技术搭建一个基础的Web应用。 首先,Maven是Apache开发的一个项目管理工具,它通过一个项目对象模型(Project Object Model,POM)来...
Maven Archetype Webapp 1.0.jar 是一个重要的工具,它属于Java开发领域中的Maven生态系统,主要用于快速搭建Java Web应用程序的基础框架。这个压缩包文件提供了一个预定义的项目结构,使得开发者能够快速地开始一个...
通过以上步骤,我们就成功地使用Maven搭建了一个基本的SSM框架项目。当然,实际项目中还需要考虑异常处理、安全控制、国际化、日志管理等多个方面,这些都可以通过引入相应的Spring或第三方库来实现。总的来说,SSM...
在本教程中,我们将深入探讨如何利用Maven构建一个基于SSH的Web应用程序。 首先,Struts2作为MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求并管理视图与控制器之间的交互。它的核心是Action类,它...
Spring Boot是一个基于Spring框架的快速开发工具,它简化了初始化配置,提供了自动配置功能,使得开发者可以更快地搭建应用。而Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,主要用于实现服务的发布、...
### Spring Boot 框架与 Maven 项目的搭建详解 ...通过上述步骤,我们不仅成功搭建了一个基于Spring Boot的Maven项目,还深入了解了Spring Boot和Maven的核心特性及其优势。这对于开发者来说是非常宝贵的实践经验。
本项目"Springboot整合dubbo构建maven多模块项目"旨在教你如何使用这两个技术来创建一个高效、可扩展的分布式系统。 首先,Spring Boot是Spring框架的一个扩展,它通过自动配置和起步依赖简化了Spring应用的初始...
Apache Maven 是一个强大的Java项目管理工具,它遵循约定优于配置的原则,使得构建过程标准化并简化了项目的生命周期管理。Maven通过使用一个项目对象模型(Project Object Model,POM)来描述项目,并自动处理构建...
在这个基于Maven的SSH框架搭建实例中,我们将探讨如何利用这些框架以及Maven构建工具来搭建一个完整的Web项目。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的功能,以实现松耦合和更好...
通过上述步骤,你就可以在Maven下成功地搭建一个基于注解的SSH项目框架。这个框架的配置文件已包含了详细的注释,方便初学者理解。下载提供的webFrame文件,你可以直接参考其中的代码和配置,进行学习和实践。
在Java开发领域,Maven是一个不可或缺的工具,它是一个项目管理和综合工具体,用来构建、管理和部署Java项目。`maven-archetype-quickstart-1.4.jar.zip` 是一个包含Maven快速启动模板的压缩包,版本为1.4。这个模板...
SpringBoot是基于Spring框架的快速开发工具,它简化了Spring应用的初始搭建以及开发过程。 1. Maven的安装与配置: - Maven的最新版本为apache-maven-3.8.1,可以从Apache官网下载。 - 安装完成后,需要将Maven的...
3. **Maven聚合项目**:在Maven中,聚合项目(Aggregator)用于管理多个子项目的构建过程,它并不包含任何代码,只是定义了一组子模块的组织结构。 4. **服务提供者(Provider)**:在Dubbo中,服务提供者是实现...
【标题】"基于SpringMVC Hibernate Maven搭建的项目框架"是一个经典的Java企业级应用开发架构,它整合了三个强大的开源框架,旨在简化开发流程、提高代码质量和可维护性。SpringMVC作为控制层,负责处理HTTP请求并...
m2eclipse 是一个针对 Eclipse IDE 的 Maven 插件,它允许用户在 Eclipse 环境下无缝地管理和构建 Maven 项目。m2eclipse 提供了诸如自动配置项目、依赖管理、生命周期映射等功能,使得开发者无需离开 Eclipse 就能...
总之,通过Maven搭建SSH框架项目,关键在于正确配置pom.xml文件中的依赖,编写合理的配置文件,以及理解各框架之间的协作机制。这个过程有助于提升开发者对Java Web开发的理解和实践能力。希望提供的源码能对学习者...
在这个项目中,我们关注的是如何使用Maven构建一个基础的Java Web项目框架。Maven是一个流行的项目管理和综合工具,它帮助开发者管理项目的构建、依赖关系以及文档生成。通过Maven,我们可以简洁地定义项目结构和...
Apache Maven 是一个强大的项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念,可以帮助开发者管理和构建Java项目。Maven 3.2.2是Maven的一个特定版本,发布于2014年,它在前一版本的基础上进行...
总的来说,Maven项目基础框架的搭建涉及到了项目管理、依赖管理、构建自动化、以及Java Web开发中的核心框架集成。熟练掌握这些知识点,不仅能帮助开发者快速地构建和管理项目,还能提高团队协作的效率和代码质量。...
- **MyEclipse与Maven的兼容性问题**:文章提到使用MyEclipse构建Maven项目可能会遇到一些问题,比如资源文件没有被正确发布到Tomcat服务器,这可能是由于MyEclipse对Maven的支持不够完善所致。 #### 标签解析与...