整理ssm框架搭建(源码下载可用),添加图片服务器搭建,异步上传图片,回显功能,添加oscache缓存(使用jersy服务器进行跨服务器上传)

0.源码下载链接:https://download.csdn.net/download/qq_36856975/12594639

1.环境:JDK1.8, eclipse, spring4.2.5,mybatis3,mysql

2.整合思路:

        a. 新建web项目:version 2.5 和 3.0 其实都可以,区别就是要不要自己去点击生成web.xml。 这个version默认选项结果是根据你的jdk tomcat来推荐的。自己再新建一个resources存放配置文件资源等。

        b. web.xml 里面配置:
            <welcome-list>...欢迎页
            <context-param>...里面预存spring.xml等配置文件的存放路径
            <listener >...ContextLoaderListener
            <filter CharacterEncodingFilter>...编码设置
            <servlet DispatcherServlet>... 里面还要预存springmvc配置文件的存放路径

        c. spring.xml 里面的配置:
            <context:component-scan ..>    配置扫描包dao,service等,排除controller扫描,把controller留给springmvc去扫描,父容器。
            <context:property-placeholder ...> 配置读取 db的配置文件
            <bean dataSource ...> 配置数据源
            <bean sqlsession ...> 配置sqlsessionTemplte
            <bean sqlsessionFatory ...> 配置mybatis,里面要配置mybatis的配置文件位置,mapper.xml的sql语句文件位置。
                mybatis的配置文件,一般是sqlMapConfig.xml,里面根据你的需要进行配置,如:缓存开启、实体类别名等
            <bean MapperScannerConfigurer ...>配置DAO接口所在包
            <事物配置...> 注解方式/xml方式

        d. springmvc.xml 里面的配置:
            <mvc:annotation-driven/> mvc的注解
            <context:component-scan ...> 配置扫描包controller,子容器。
            <bean xxxViewResolver ...> 配置视图解析器
            <bean CommonsMultipartResolver ...> 上传拦截设置
            <mvc:interceptors ...> 访问拦截器等
            <mvc:resources ...> 静态文件配置,推荐使用<mvc:default-servlet-handler/>

3.整合,图文并茂。

        a. 新建web项目:version 我这里选择的是 3.0 

生成好了之后的项目层次,jar包图就不放了,源码里面都有,或许会存在个别没用的包,不需要你就删除吧。

        b. web.xml 里面配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
						http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>ssmDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 加载spring配置文件 -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
	  <param-name>contextConfigLocation</param-name>
	  <param-value>classpath:spring.xml</param-value>
  </context-param>
  
  <!-- DispatcherServlet -->
  <servlet>
	  <servlet-name>springmvc</servlet-name>
	  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	  <init-param>
		  <param-name>contextConfigLocation</param-name>
		  <param-value>classpath:springmvc.xml</param-value>   
	  </init-param>
  </servlet>
  <servlet-mapping>
	  <servlet-name>springmvc</servlet-name>
	  <url-pattern>/</url-pattern>
  </servlet-mapping>
  
  <!-- 编码 -->
  <filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!-- 静态文件一种配置方式,我用的是springmvc.xml 里面的配置方式。
  <servlet-mapping>
	  <servlet-name>default</servlet-name>
	  <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
	  <servlet-name>springmvc</servlet-name>
	  <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
	  <servlet-name>springmvc</servlet-name>
	  <url-pattern>*.css</url-pattern>
  </servlet-mapping> -->
</web-app>

        c. spring.xml 里面的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd 
						http://www.springframework.org/schema/mvc 
						http://www.springframework.org/schema/mvc/spring-mvc.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">
	
	<!-- 配置spring、springmvc父子容器:此处是spring父容器。有疑问自己百度去补充知识。
		spring是父容器,扫描dao和service
		springmvc是自容器,扫描controller -->
	<context:component-scan base-package="com.demo">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
	<!-- 配置数据源 我这边使用的是alibaba的DruidDataSource,注意下面的name里面的值,
		别自己想当然,写什么name="jdbcUrl",driver,user等等,不同的数据库配置,这边的值是不一样的,写错你就等着报错吧!!! -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
		<property name="url" value="${jdbc.url}"></property>
		<property name="driverClassName" value="${jdbc.driver}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>		
		<property name="maxActive" value="10"/>
		<property name="maxIdle" value="5"/>
	</bean>
	<!-- 创建sqlSessionFactory。生产sqlSession -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:sqlMapConfig.xml" />
		<!-- mapper扫描 -->
		<!-- <property name="mapperLocations" value="classpath:mybatis/*/*.xml" /> -->
		<property name="mapperLocations" value="classpath:com/demo/dao/*.xml" />
	</bean>
	<!-- 配置DAO接口所在包 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.demo.dao"></property>
	</bean>
	<!-- 事物管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 事务 注解配置方式, 开启事务	 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
	
</beans>

        d. springmvc.xml 里面的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd 
						http://www.springframework.org/schema/mvc 
						http://www.springframework.org/schema/mvc/spring-mvc.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">
	<!-- 自容器,只扫描controller -->					
	<context:component-scan base-package="com.demo.controller"/>
	<!-- 注解驱动 -->
	<mvc:annotation-driven/>
	<!-- 静态文件配置方式二,不喜欢的用自己喜欢的方式 -->
	<mvc:default-servlet-handler/>
	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsps/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	<!-- 还有上传拦截配置也在这,不用就不配。我没配置,需要的自己去找。 -->
</beans>

        e. sqlMapConfig.xml  这个是mybatis的配置,设置什么别名等等。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<settings>
		<!-- 开启延迟加载 ,默认值为true-->
		<setting name="lazyLoadingEnabled" value="true"/>
		<!-- 设置积极的懒加载,默认是true -->
		<setting name="aggressiveLazyLoading" value="false"/>
		<!-- 二级缓存的总开关 -->
		<setting name="cacheEnabled" value="true" />
	</settings>
	
	<!-- 自定义别名 -->
	<typeAliases>
		<package name="com.demo.po"/>
	</typeAliases>
</configuration>

        f. jdbc.properties  和  log4j.properties

jdbc.url = jdbc:mysql://localhost:13306/mybatis?useUnicode=true&characterEncoding=utf8
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username= root
jdbc.password= 654321
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=debug, stdout

4.整合好了,写点业务代码去访问吧。  写之前来一张最后的项目层次图。

5.添加图片服务器搭建和上传功能(图片上传到服务器回显)

a.最终效果图,忽略页面简陋:

b.创建图片服务器:

建议:创建好图片服务器之后,本地运行一下,访问localhost:8003/ssmDemoImage 检验服务本身是否成功。

c. ssmDemo里面添加图片上传功能

d.提醒:

    -运行的时候,别忘了运行图片服务器项目。

    -form表单提交,访问不到后台controller,报400错误:
        有可能对象属性不一致, 问题可能出在createTime 这个字段上,按道理我在jsp页面上进行了<fmt:formatDate>标签转换不会有问题才对,但实际还是有问题。
        解决:在实体类Date字段上面添加了一个注解@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 这个格式和jsp那转换的保持一致。

    -图片服务器中上传的图片位置:不是看项目里面那个upload文件夹,在: XX盘workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\ssmDemoImage\upload

6.添加oscache缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值