ssm框架首次搭建记录
来源:互联网 发布:概念式建筑设计知乎 编辑:程序博客网 时间:2024/06/05 11:59
首先放上整个ssm整合的基本结构:
整个spring所需要的jar包文件pom.xml:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.gson.springmvc</groupId> <artifactId>springmvc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>springmvc</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.1.RELEASE</version></dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-expression --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.3.3.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.3.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.3.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.3.RELEASE</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.4.Final</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.20</version></dependency><!-- MyBatis的核心 库 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><!-- MyBatis与Spring的整合库 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><!-- MyBatis的分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.6</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.10.4.RELEASE</version></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.2.2.Final</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.22</version></dependency> </dependencies> <build><sourceDirectory>src/main/java</sourceDirectory><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><warSourceDirectory>WebContent</warSourceDirectory><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build></project>配置文件:
tr17-servlet.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" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> --><!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> --><context:component-scan base-package="cn.gson.springmvc" /><mvc:default-servlet-handler /><mvc:annotation-driven /><!-- 指定静态资源的路径映射 --><mvc:resources location="/WEB-INF/images/" mapping="/images/**"/><!-- 视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean><!-- 配置拦截器 --><mvc:interceptors><!-- 默认拦截所有请求 --><bean class="cn.gson.springmvc.interceptor.NatureInterceptor" /><mvc:interceptor><mvc:mapping path="/hc" /><mvc:mapping path="/hc/*"/><bean class="cn.gson.springmvc.interceptor.TestInterceptor"></bean></mvc:interceptor></mvc:interceptors><!-- 集成自定义的转换器 --><bean id="conversionService1"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><!-- 自定义的类型转换器 --><bean class="cn.gson.springmvc.converter.PhoneConverter" /><bean class="cn.gson.springmvc.converter.DateConverter" /></list></property></bean><!-- 指定消息资源文件 --><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><property name="basename" value="classpath:ValidationMessages"></property><property name="fileEncodings" value="utf-8"></property><property name="cacheSeconds" value="120" /></bean><!-- 验证框架 --><bean id="validator"class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator" /><property name="validationMessageSource" ref="messageSource"></property></bean><!-- 为mvc注册类型转换器和验证器 --><mvc:annotation-driven validator="validator"conversion-service="conversionService1" /><!-- 文件上传 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 文件最大上传大小100M->104857600 --><property name="maxUploadSize" value="104857600" /><property name="maxInMemorySize" value="4096" /><property name="defaultEncoding" value="UTF-8" /><property name="resolveLazily" value="true" /></bean><!-- 继承fastjson输出 --><mvc:annotation-driven><mvc:message-converters register-defaults="true"><!-- 配置Fastjson支持 --><beanclass="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property><property name="features"><list><value>WriteMapNullValue</value><value>QuoteFieldNames</value></list></property></bean></mvc:message-converters></mvc:annotation-driven><!-- SqlSessionFactoryBean --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 指定数据源 --><property name="dataSource" ref="dataSource_druid" /><!-- 指定Mybatis核心配置文件地址 --><property name="configLocation" value="classpath:mybaties-config.xml"/><!-- 自动扫描mapping.xml文件,注意这里的classpath后面的*是必须的 --><property name="mapperLocations" value="classpath*:mapper/*.xml" /><!-- pojo所在包 --><property name="typeAliasesPackage" value="cn.gson.springmvc.entity" /><!-- 整合PageHelper分页插件 --><property name="plugins"><array><bean class="com.github.pagehelper.PageHelper"><property name="properties"><value>dialect=oracle</value></property></bean></array></property></bean><!-- MapperScannerConfigurer --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 指定Session工厂 --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property><!-- 指定需要自动扫描的DAO所在的包 --><property name="basePackage" value="cn.gson.springmvc.dao.mybaties"></property></bean><!-- MyBatis事务 --><bean id="transactionManager_mybatis"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource_druid"></property></bean><tx:annotation-driven transaction-manager="transactionManager_mybatis" /><!-- druid配置 --><bean id="dataSource_druid"class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"><property name="targetDataSource"><bean class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/><property name="username" value="scott" /><property name="password" value="123456" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="5" /><property name="maxActive" value="30" /></bean></property></bean><!-- JPA --><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource_druid"></property></bean><!-- 定义DAO所在的包,以便自动扫描 --><jpa:repositories base-package="cn.gson.springmvc.dao.jpa"></jpa:repositories><!-- 配置jpa事务管理器 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"></property></bean><!-- JPA的事务管理器 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>
mybaties-config.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 指定映射的mapper文件 --><mappers><mapper resource="mappers/SqlMapper.xml"/></mappers></configuration>
wen.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>mvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <servlet><servlet-name>tr17</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定配置文件的位置 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:tr17-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>tr17</servlet-name><url-pattern>/</url-pattern></servlet-mapping><filter><filter-name>encode</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></filter><filter-mapping><filter-name>encode</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
persistence.xml
<?xml version="1.0" encoding="UTF-8" ?><persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"><persistence-unit name="todos" transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.jpa.HibernatePersistenceProvider</provider><properties><property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> </properties></persistence-unit></persistence>在这个目录下,不然会报错。
log4j.propo'erties:
log4j.rootLogger=debug,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppender#log4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayoutlog4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUGlog4j.logger.org.hibernate=warnlog4j.logger.org.hibernate.transaction=warn log4j.logger.org.hibernate.jdbc=warn log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=tracelog4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
接下来我把对应的什么转换器、拦截器、控制器、jpaDao、mybatiesDao格局一个例子供参考。
SqlMapper.xml(Mapper文件示例):
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.gson.springmvc.dao.mybaties.BookDao"><resultMap id="book" type="cn.gson.springmvc.entity.Book"><id property="id" column="id"/><result property="bookName" column="book_name"/><result property="bookPrice" column="book_price"/><result property="bookNum" column="book_num"/><result property="bookIsbn" column="book_isbn"/></resultMap><select id="getBookList" resultMap="book">select * from book where 1 = 1<choose><when test="bookName != null">and book_name like #{bookName}</when><otherwise><if test="bookPrice != null">and book_price like #{bookPrice}</if></otherwise></choose><if test="bookNum != null">and book_num = #{bookNum}</if></select></mapper>
JpTestController.java
package cn.gson.springmvc.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import cn.gson.springmvc.dao.jpa.AccountDao;@Controller@RequestMapping("/jpa")public class JpTestController {@Autowiredprivate AccountDao acDao;@RequestMapping("/show")public String index(Model m){m.addAttribute("acList", acDao.findAll());return "jpa";}@RequestMapping("/add")public String add(Model m){m.addAttribute("acList", acDao.findAll());return "jpa";}}
DateConverter.java
package cn.gson.springmvc.converter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.core.convert.converter.Converter;import org.springframework.util.StringUtils;public class DateConverter implements Converter<String, Date> {//这个转换器能转换的所有时间格式private String[] datePatterns = {"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm","yyyy-MM-dd","yyyy-MM"};@Overridepublic Date convert(String source) {Date date = null;if (!StringUtils.isEmpty(source)) {SimpleDateFormat sdf;for (String pattern : datePatterns) {sdf = new SimpleDateFormat(pattern);//在这里将source转换为date类型try {date = sdf.parse(source);break;} catch (ParseException e) {}}}return date;}public DateConverter() {// TODO Auto-generated constructor stub}public DateConverter(String... datePatterns) {this.datePatterns = datePatterns;}}
AccountDao.java
package cn.gson.springmvc.dao.jpa;import java.util.List;import org.springframework.data.repository.CrudRepository;import org.springframework.stereotype.Repository;import cn.gson.springmvc.entity.Account1;@Repositorypublic interface AccountDao extends CrudRepository<Account1, Integer> {List<Account1> findByAcnameAndGender(String acname,String gender);List<Account1> findByAcnameOrGenderOrderByIdDesc(String acname,String gender);List<Account1> findByDealsNotNull();}
BookDao.java
package cn.gson.springmvc.dao.mybaties;import java.util.List;import cn.gson.springmvc.entity.Book;public interface BookDao {int insertBook(Book b);List<Object> getBookList();int updateBook(Book b);int deleteBook(int i);List<Object> queryStudentAndBook();List<Object> queryBook();}
性能监控(拦截器 )
Nature Interceptor.java
package cn.gson.springmvc.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;/** * 性能监控 * * @author gson * */public class NatureInterceptor extends HandlerInterceptorAdapter {private Long start;private String uri;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {start = System.currentTimeMillis();uri = request.getRequestURI();return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println(uri + ":请求执行完成耗时:" + (System.currentTimeMillis() - start));}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {System.out.println(uri + ":请求最终完成总耗时:" + (System.currentTimeMillis() - start));}}
大致的内容就是这样的了,期间虽然遇到了很多异常,但是通过调试和努力解决了问题。首先考虑是否是jar包冲突,其次考虑beanid是否重复,最后的话就注意数据库连接池的配置了。
1 0
- ssm框架首次搭建记录
- 搭建SSM框架所遇到的问题记录
- ssm框架整合记录
- SSM框架的搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- 初学搭建SSM框架
- MyEclipse2014搭建SSM框架
- ssm框架搭建
- Maven搭建SSM框架
- SSM框架搭建
- SSM 框架 搭建
- SSM框架快速搭建
- ssm框架的搭建
- Python爬虫实现验证码登录
- CodeForces 527B - Error Correct System 哈希
- windows下的动态库
- 多继承与纯虚函数接口
- CodeForces 527C - Glass Carving set multiset 二分
- ssm框架首次搭建记录
- View的优化
- 软考总结
- JSPatch-实现原理详解
- Linux-Shell基础
- S5PV210外部中断
- C语言-余弦
- Maven3 安装使用(二)
- Spring4.3.3 WebSocket-STOMP协议集成 (2.1)-WebSocket-stomp子协议通讯小栗子