• myeclipse中ssm的搭建


    项目框架

    首先配置spring的application.xml文件,配置内容如下:

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     3        xmlns:tx="http://www.springframework.org/schema/tx"  xsi:schemaLocation="http://www.springframework.org/schema/beans 
     4        http://www.springframework.org/schema/beans/spring-beans.xsd 
     5        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">  
     6      
     7     <!-- 引入配置文件 -->  
     8     <bean id="propertyConfigurer"  
     9         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    10         <property name="location" value="classpath:jdbc.properties" />  
    11     </bean>  
    12   <!-- 配置数据源:此处要注意使用数据库连接池引入的类一定要属于导入的jar包,另外每个连接池的参数也有可能不一样 -->
    13     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  
    14         destroy-method="close">  
    15         <property name="driverClassName" value="${datasource.driverClassName}" />  
    16         <property name="url" value="${datasource.url}" />  
    17         <property name="username" value="${datasource.username}" />  
    18         <property name="password" value="${datasource.password}" />  
    19         <!-- 初始化连接大小 -->  
    20         <!--  <property name="initialSize" value="${datasource.initialSize}"></property>  
    21         --><!-- 连接池最大数量   -->
    22         <property name="maxActive" value="${datasource.maxActive}"></property>  
    23         <!-- 连接池最大空闲   -->
    24         <property name="maxIdle" value="${datasource.maxIdle}"></property>  
    25         <!-- 连接池最小空闲   -->
    26         <!-- <property name="minIdle"><value>1</value></property>  
    27         获取连接最大等待时间  
    28         <property name="maxWait" value="${datasource.maxWait}"></property>  --> 
    29     </bean> 
    30   
    31     <!-- spring和MyBatis整合 -->  
    32     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    33         <property name="dataSource" ref="dataSource" />  
    34         <!--mybatis的配置文件 ,在此文件中,可以为每个类配置别名,这样在mapper.xml文件中,写resultType时就不需要写类的全路径了-->  
    35         <!-- <property name="configLocation" value="classpath:mybatis-config.xml" /> -->
    36         <!-- 自动扫描mapping.xml文件 -->  
    37         <property name="mapperLocations" value="classpath:com/cn/mapping/*.xml"></property>  
    38     </bean>  
    39   
    40     <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    41     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    42         <property name="basePackage" value="com.cn.dao" />  
    43         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    44     </bean>  
    45   
    46     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    47     <bean id="transactionManager"  
    48         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    49         <property name="dataSource" ref="dataSource" />  
    50     </bean>  
    51   <!--开启事务注解扫描-->  
    52     <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>  
    53 </beans>

    接下来配置jdbc.properties文件

     1 ###############################        MySQLu6570u636eu5e93u914du7f6eu4fe1u606f        ###############################
     2 ##############################################################################################
     3 datasource.driverClassName=com.mysql.jdbc.Driver
     4 datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true
     5 datasource.username=root
     6 datasource.password=123
     7 #datasource.datasource=java:comp/env/jdbc/ceiba
     8 #hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
     9 ##############################################################################################
    10 ################################        u4ee5u4e0bu662fu516cu5171u914du7f6eu4fe1u606f        ################################
    11 ##############################################################################################
    12 #最大连接数
    13 datasource.maxActive=100
    14 #最大空闲数
    15 datasource.maxIdle=30
    16 #最大等待时间
    17 datasource.maxWait=1200
    18 #初始加载数
    19 datasource.initialSize=10;
    20 #datasource.defaultAutoCommit=true
    21 #datasource.defaultAutoCommit=false

    然后配置spring-mvc的配置文件spring-mvc.xml

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
     4     xmlns:context="http://www.springframework.org/schema/context"  
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"  
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans    
     7                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
     8                         http://www.springframework.org/schema/context    
     9                         http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    10                         http://www.springframework.org/schema/mvc    
    11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
    12                         
    13     <!-- 告知Spring,我们启用注解驱动 -->  
    14     <mvc:annotation-driven/>  
    15     <!-- org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,  
    16         它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,  
    17         就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。 -->  
    18     <mvc:default-servlet-handler/>  
    19     <!-- 自动扫描该包 -->  
    20     <context:component-scan base-package="com.cn" />   
    21     <!-- 对静态资源文件的访问,因为Spring MVC会拦截所有请求,导致jsp页面中对js和CSS的引用也被拦截,配置后可以把对资源的请求交给项目的  
    22     默认拦截器而不是Spring MVC-->  
    23     <mvc:resources mapping="/static/**" location="/WEB-INF/static/" />    
    24     <!-- 定义跳转的文件的前后缀 ,视图模式配置-->  
    25     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    26         <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
    27         <property name="prefix" value="/WEB-INF/jsp/" />  
    28         <property name="suffix" value=".jsp" />  
    29     </bean>     
    30     <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->  
    31     <bean id="multipartResolver"    
    32         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
    33         <!-- 默认编码 -->  
    34         <property name="defaultEncoding" value="utf-8" />    
    35         <!-- 文件大小最大值 -->  
    36         <property name="maxUploadSize" value="10485760000" />    
    37         <!-- 内存中的最大值 -->  
    38         <property name="maxInMemorySize" value="40960" />    
    39     </bean>   
    40   
    41 </beans>

    最后配置web.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     3     xmlns="http://java.sun.com/xml/ns/javaee"  
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
     5     version="3.0">
     6     
     7     <!-- Spring监听器 -->  
     8     <listener>  
     9         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    10     </listener>  
    11      <!-- 防止Spring内存溢出监听器 -->  
    12     <listener>  
    13         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    14     </listener>
    15     
    16     <!-- Spring容器加载所有的配置文件的路径 -->  
    17     <context-param>  
    18         <param-name>contextConfigLocation</param-name>  
    19         <param-value>classpath*:applicationContext.xml</param-value>  
    20     </context-param> 
    21     <!-- 配置SpringMVC核心控制器,将所有的请求(除了刚刚Spring MVC中的静态资源请求)都交给Spring MVC -->  
    22     <servlet>  
    23         <servlet-name>springMvc</servlet-name>  
    24         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    25         <init-param>  
    26             <param-name>contextConfigLocation</param-name>  
    27             <param-value>classpath*:spring-mvc.xml</param-value>  
    28         </init-param>  
    29         <!--用来标记是否在项目启动时就加在此Servlet,0或正数表示容器在应用启动时就加载这个Servlet,  
    30         当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载.正数值越小启动优先值越高  -->  
    31         <load-on-startup>1</load-on-startup>  
    32     </servlet>
    33     
    34     <!--为DispatcherServlet建立映射-->  
    35     <servlet-mapping>  
    36         <servlet-name>springMvc</servlet-name>  
    37         <!-- 拦截所有请求,千万注意是(/)而不是(/*) --> 
    38         <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
    39         <url-pattern>/</url-pattern>  
    40     </servlet-mapping>
    41       
    42     <!-- 编码过滤器 -->  
    43     <filter>  
    44         <filter-name>encodingFilter</filter-name>  
    45         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    46         <async-supported>true</async-supported>  
    47         <init-param>  
    48             <param-name>encoding</param-name>  
    49             <param-value>UTF-8</param-value>  
    50         </init-param>
    51         <init-param>  
    52             <param-name>forceEncoding</param-name>  
    53             <param-value>true</param-value>  
    54         </init-param>   
    55     </filter>  
    56     <filter-mapping>  
    57         <filter-name>encodingFilter</filter-name>  
    58         <url-pattern>/*</url-pattern>  
    59     </filter-mapping>  
    60     
    61     <welcome-file-list>  
    62         <welcome-file>/index.jsp</welcome-file>  
    63     </welcome-file-list>  
    64   
    65 </web-app>  

    忘了,还有日志参数的配置

     1 #设置日志的级别
     2 log4j.rootLogger=INFO,Console,File  
     3 #输出信息到控制台
     4 log4j.appender.Console=org.apache.log4j.ConsoleAppender  
     5 log4j.appender.Console.Target=System.out  
     6 #u53EFu4EE5u7075u6D3Bu5730u6307u5B9Au65E5u5FD7u8F93u51FAu683Cu5F0FuFF0Cu4E0Bu9762u4E00u884Cu662Fu6307u5B9Au5177u4F53u7684u683Cu5F0F  
     7 log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
     8 log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  
     9   
    10 #日志类型配置
    11 log4j.appender.File = org.apache.log4j.RollingFileAppender  
    12 log4j.appender.File.File = logs/ssm.log  
    13 log4j.appender.File.MaxFileSize = 10MB    
    14 log4j.appender.File.Threshold = ALL  
    15 log4j.appender.File.layout = org.apache.log4j.PatternLayout  
    16 log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n  
    17 
    18 #### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
    19 #log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    20 #log4j.appender.D.File = E://logs/log.log
    21 #log4j.appender.D.Append = true
    22 #log4j.appender.D.Threshold = DEBUG 
    23 #log4j.appender.D.layout = org.apache.log4j.PatternLayout
    24 #log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    25 #
    26 #### 输出ERROR 级别以上的日志到=E://logs/error.log ###
    27 #log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    28 #log4j.appender.E.File =E://logs/error.log 
    29 #log4j.appender.E.Append = true
    30 #log4j.appender.E.Threshold = ERROR 
    31 #log4j.appender.E.layout = org.apache.log4j.PatternLayout
    32 #log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    下面开始写java类

    1.实体类(IFiled接口是我用来实现快速填充创建人,创建时间,修改人,修改时间,版本号,以及单据状态的接口,这个接口不是必须实现的)

      1 package com.cn.entity;
      2 
      3 import com.cn.util.IFiled;
      4 
      5 import java.util.Date;
      6 
      7 /**
      8  * @Author zhanghl
      9  * @Date 2018/4/26 13:08
     10  * @Description 请输入一句话用来描述
     11  **/
     12 public class PrintField  implements IFiled {
     13     
     14     private Integer id;
     15 
     16     private String fieldName;
     17 
     18     private Integer sortNumber;
     19 
     20     private double size;
     21 
     22     // 1有效,0无效
     23     private Integer isValid;
     24 
     25     // 创建人
     26     private String creator;
     27 
     28     // 创建时间
     29     private Date createTime;
     30 
     31     // 版本
     32     private String version;
     33 
     34     // 修改人
     35     private String modifier;
     36 
     37     // 修改时间
     38     private Date modifyTime;
     39     public Integer getId() {
     40         return id;
     41     }
     42 
     43     public void setId(Integer id) {
     44         this.id = id;
     45     }
     46 
     47     public String getFieldName() {
     48         return fieldName;
     49     }
     50 
     51     public void setFieldName(String fieldName) {
     52         this.fieldName = fieldName;
     53     }
     54 
     55     public Integer getSortNumber() {
     56         return sortNumber;
     57     }
     58 
     59     public void setSortNumber(Integer sortNumber) {
     60         this.sortNumber = sortNumber;
     61     }
     62 
     63     public double getSize() {
     64         return size;
     65     }
     66 
     67     public void setSize(double size) {
     68         this.size = size;
     69     }
     70 
     71     public Integer getIsValid() {
     72         return isValid;
     73     }
     74 
     75     public void setIsValid(Integer isValid) {
     76         this.isValid = isValid;
     77     }
     78 
     79     public String getCreator() {
     80         return creator;
     81     }
     82 
     83     public void setCreator(String creator) {
     84         this.creator = creator;
     85     }
     86 
     87     public Date getCreateTime() {
     88         return createTime;
     89     }
     90 
     91     public void setCreateTime(Date createTime) {
     92         this.createTime = createTime;
     93     }
     94 
     95     public String getVersion() {
     96         return version;
     97     }
     98 
     99     public void setVersion(String version) {
    100         this.version = version;
    101     }
    102 
    103     public String getModifier() {
    104         return modifier;
    105     }
    106 
    107     public void setModifier(String modifier) {
    108         this.modifier = modifier;
    109     }
    110 
    111     public Date getModifyTime() {
    112         return modifyTime;
    113     }
    114 
    115     public void setModifyTime(Date modifyTime) {
    116         this.modifyTime = modifyTime;
    117     }
    118     
    119     
    120     
    121 }

    2.控制层

     1 package com.cn.controller;
     2 
     3 import java.util.List;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 import org.springframework.web.servlet.ModelAndView;
     9 
    10 import com.cn.entity.PrintField;
    11 import com.cn.service.IPrintFieldService;
    12 
    13 @Controller
    14 @RequestMapping(value = "/printfield")
    15 public class PrintFieldController {
    16 
    17     //@Resource(name = "printFieldService“)
    18     @Autowired
    19     IPrintFieldService printFieldService;
    20     
    21     
    22     @RequestMapping(value = "/list")  
    23     public ModelAndView list()  
    24     {  
    25         ModelAndView mv=new ModelAndView();  
    26         List<PrintField>  userList = printFieldService.getUser();  
    27         mv.addObject("userList",userList);  
    28         mv.setViewName("/show");  
    29         return mv;  
    30     }  
    31     
    32     
    33 }

    3.业务逻辑层

     1 package com.cn.service;
     2 
     3 import java.util.List;
     4 
     5 import com.cn.entity.PrintField;
     6 
     7 public interface IPrintFieldService {
     8 
     9     public List<PrintField> getUser(); 
    10 }
     1 package com.cn.service.impl;
     2 
     3 import java.util.List;
     4 
     5 import javax.annotation.Resource;
     6 
     7 import org.springframework.stereotype.Service;
     8 
     9 import com.cn.dao.IPrintFieldDao;
    10 import com.cn.entity.PrintField;
    11 import com.cn.service.IPrintFieldService;
    12 @Service("printFieldService") 
    13 public class PrintFieldServiceImpl implements IPrintFieldService {
    14     @Resource(name = "printfielDao")  
    15     private IPrintFieldDao printFieldDao;  
    16       
    17     @Override
    18     public List<PrintField> getUser() {
    19         return printFieldDao.selectAllUser();  
    20     }
    21 
    22 }

    4.dao层

     1 package com.cn.dao;
     2 
     3 import java.util.List;
     4 
     5 import org.springframework.stereotype.Repository;
     6 
     7 import com.cn.entity.PrintField;
     8 
     9 @Repository("printfielDao") 
    10 public interface IPrintFieldDao {
    11       
    12     List<PrintField> selectAllUser();  
    13 }

    5.PrintFieldMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>  
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
     3 <!--namespace就是与此文件对应的Dao接口的全路径-->  
     4 <mapper namespace="com.cn.dao.IPrintFieldDao" >  
     5   <resultMap id="BaseResultMap" type="com.cn.entity.PrintField" >
     6       <!-- jdbcType的值可以通过对照表进行查询 -->  
     7     <id column="ID" property="id" jdbcType="INTEGER" />  
     8     <result column="field_name" property="fieldName" jdbcType="VARCHAR" />  
     9     <result column="sort_number" property="sortNumber" jdbcType="INTEGER" />  
    10     <result column="size" property="size" jdbcType="DECIMAL" />  
    11     <result column="is_valid" property="isValid" jdbcType="INTEGER" />
    12     <result column="creator" property="creator" jdbcType="VARCHAR" />  
    13     <result column="create_time" property="createTime" jdbcType="DATE" />
    14     <result column="modifier" property="modifier" jdbcType="VARCHAR" />  
    15     <result column="modify_time" property="modifyTime" jdbcType="DATE" />
    16     <result column="version" property="version" jdbcType="VARCHAR" />  
    17     
    18   </resultMap>  
    19 <!--自己配置的查询表所有数据的sql-->  
    20 <!--如下type的PrintField就是mybatis-config.xml中配置的PrintField-->  
    21 <!-- <select id="selectAllUser"  resultType="PrintField">  -->
    22 <!-- resultMap是上面resultMap的id -->
    23   <select id="selectAllUser"  resultMap="BaseResultMap">  
    24     select * FROM print_field;  
    25   </select>  
    26 </mapper>

     源码:https://github.com/zhanghouli/ssm.git

  • 相关阅读:
    Windows Socket编程简介
    IIS7.0 Appcmd 命令详解
    VC显示网页验证码、模拟CSDN网页登录
    c++对象初始化中 ZeroMemory、memset、直接赋0的区别
    在MFC程序中显示 JPG/GIF图像
    开始学习WTL——(1)关于STL/ATL/WTL之间的区别
    可编辑子项的CListCtrl类
    VC添加自定义消息
    VC调用JavaScript函数--处理QQ网页登录密码加密(空间、农场、WEB QQ等)
    VC创建定时关闭的MessageBox
  • 原文地址:https://www.cnblogs.com/zhlblogs/p/8994863.html
Copyright © 2020-2023  润新知