SSM整合+demo

来源:互联网 发布:淘宝宝贝展现词为0 编辑:程序博客网 时间:2024/06/06 01:09

WEB.XML配置

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"     xmlns="http://java.sun.com/xml/ns/javaee"     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_3_0.xsd">  <display-name></display-name>   <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <!-- 指定Spring Bean的配置文件所在目录               在web.xml中通过contextConfigLocation配置spring,       contextConfigLocation参数定义了要装入的 Spring 配置文件。   -->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext-*.xml</param-value>    </context-param>     <!-- spring字符编码过滤器start-->    <filter>        <!--① Spring 编码过滤器 -->      <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>     <!-- ② 过滤器的匹配 URL -->       <filter-mapping>            <filter-name>encodingFilter</filter-name>           <url-pattern>/*</url-pattern>       </filter-mapping>    <!-- spring字符编码过滤器end-->        <!-- Spring MVC配置 -->    <!-- 配置DispatcherServlet -->    <servlet>        <servlet-name>spring</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc-servlet.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>spring</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>         <!-- Spring配置 -->    <!-- 当系统启动的时候,spring需要进行一些资源加载或者配置,都需要使用此监听去做 -->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>        <!-- log4j配置start -->    <context-param>        <param-name>log4jConfigLocation</param-name>        <param-value>classpath:log4j.properties</param-value>    </context-param>    <context-param>    <!-- 指定系统根目录路径 -->        <param-name>webAppRootKey</param-name>        <param-value>SMBMMVC.root</param-value>       </context-param>    <!-- Spring 加载 Log4j 的监听 -->    <listener>        <listener-class>            org.springframework.web.util.Log4jConfigListener        </listener-class>    </listener>    <!-- log4j配置end --></web-app>

log4j配置

log4j.rootLogger=debug,CONSOLE,file#log4j.rootLogger=ERROR,ROLLING_FILElog4j.logger.cn.smbms=debuglog4j.logger.org.apache.ibatis=debuglog4j.logger.org.mybatis.spring=debuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debuglog4j.logger.java.sql.ResultSet=debug####################################################################################### Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e######################################################################################log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.Threshold=debuglog4j.appender.CONSOLE.DatePattern=yyyy-MM-ddlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n####################################################################################### Rolling File  \u6587\u4ef6\u5927\u5c0f\u5230\u8fbe\u6307\u5b9a\u5c3a\u5bf8\u7684\u65f6\u5019\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6#######################################################################################log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender#log4j.appender.ROLLING_FILE.Threshold=INFO#log4j.appender.ROLLING_FILE.File=${baojia.root}/logs/log.log#log4j.appender.ROLLING_FILE.Append=true#log4j.appender.ROLLING_FILE.MaxFileSize=5000KB#log4j.appender.ROLLING_FILE.MaxBackupIndex=100#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout#log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n####################################################################################### DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11######################################################################################log4j.appender.file=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.DatePattern=yyyy-MM-ddlog4j.appender.file.File=${AppInfoSystem.root}/logs/log.loglog4j.appender.file.Append=truelog4j.appender.file.Threshold=debuglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n#DWR \u65e5\u5fd7#log4j.logger.org.directwebremoting = ERROR#\u663e\u793aHibernate\u5360\u4f4d\u7b26\u7ed1\u5b9a\u503c\u53ca\u8fd4\u56de\u503c#log4j.logger.org.hibernate.type=DEBUG,CONSOLE #log4j.logger.org.springframework.transaction=DEBUG#log4j.logger.org.hibernate=DEBUG#log4j.logger.org.acegisecurity=DEBUG#log4j.logger.org.apache.myfaces=TRACE#log4j.logger.org.quartz=DEBUG#log4j.logger.com.opensymphony=INFO  #log4j.logger.org.apache.struts2=DEBUG  log4j.logger.com.opensymphony.xwork2=debug

database.propertis配置

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/appinfodb?useUnicode=true&characterEncoding=utf-8user=rootpassword=rootminIdle=45maxIdle=50initialSize=5maxActive=100maxWait=100removeAbandonedTimeout=180removeAbandoned=true

spring+mybatis整合配置

<?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:aop="http://www.springframework.org/schema/aop"              xmlns:p="http://www.springframework.org/schema/p"              xmlns:tx="http://www.springframework.org/schema/tx"              xmlns:context="http://www.springframework.org/schema/context"              xsi:schemaLocation="                   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd                   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd                   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd                 http://www.springframework.org/schema/context                 http://www.springframework.org/schema/context/spring-context.xsd">      <!-- 使用注解的情况下,扫描包下的实体类  交给IOC容器进行管理 -->    <context:component-scan base-package="cn.appsys.service"/>     <context:component-scan base-package="cn.appsys.dao"/>     <!-- 自动声明注解所需要的bean -->    <context:annotation-config />    <!-- 获取database文件 -->   <context:property-placeholder location="classpath:database.properties"/>    <!-- JNDI获取数据源(使用dbcp连接池) -->       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" scope="singleton">    <property name="driverClassName" value="${driver}"/>    <property name="url" value="${url}"/>    <property name="username" value="${user}"/>    <property name="password" value="${password}"/>    <property name="initialSize" value="${initialSize}"/><property name="maxActive" value="${maxActive}"/><property name="maxIdle" value="${maxIdle}"/><property name="minIdle" value="${minIdle}"/><property name="maxWait" value="${maxWait}"/><property name="removeAbandoned" value="${removeAbandoned}"/><property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/><property name= "testWhileIdle" value="true"/><property name= "timeBetweenEvictionRunsMillis" value="60000"/><property name= "testOnBorrow" value="false"/><property name= "testOnReturn" value="false"/><property name= "validationQuery" value="select 1"/><property name= "numTestsPerEvictionRun" value="${maxActive}"/> </bean> <!-- 配置mybatis SqlSessionFactoryBean --> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 引用上面配置的dataSource --> <property name="dataSource" ref="dataSource"/> <!-- 引入mybatis文件配置 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean>  <!-- 事务管理   -->    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">          <property name="dataSource" ref="dataSource"/>      </bean> <aop:aspectj-autoproxy/>      <aop:config proxy-target-class="true">      <aop:pointcut expression="execution(* *cn.appsys.service..*(..))" id="transService"/>      <aop:advisor advice-ref="myAdvice" pointcut-ref="transService"/>      </aop:config>       <tx:advice id="myAdvice" transaction-manager="txManager">      <tx:attributes>          <tx:method name="appsys*"  propagation="REQUIRED" rollback-for="Exception"  />        <tx:method name="*" />    </tx:attributes>   </tx:advice>    <!-- 自动生成dao包  接口的实现类 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">    <property name="basePackage" value="cn.appsys.dao"/>    </bean>       </beans>

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>           <!-- changes from the defaults -->           <setting name="lazyLoadingEnabled" value="false" />       </settings>       <typeAliases>           <!--这里给实体类取别名,方便在mapper配置文件中使用-->          <package name="cn.appsys.pojo"/>     </typeAliases> </configuration>  

SpringMVC 配置

<?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:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd">   <!-- 扫描 启用注解 -->   <context:component-scan base-package="cn.appsys.controller"/>   <!-- 配置响应json -->   <mvc:annotation-driven>   <mvc:message-converters>   <bean class="org.springframework.http.converter.StringHttpMessageConverter">   <property name="supportedMediaTypes">   <list>   <value>application/json;charset=UTF-8</value>   </list>   </property>   </bean>   <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">   <property name="supportedMediaTypes">   <list>   <value>text/html;charset=UTF-8</value>   <value>application/json</value>   </list>   </property>   <property name="features">   <list>   <value>WriteDateUseDateFormat</value>   </list>   </property>   </bean>   </mvc:message-converters>   </mvc:annotation-driven>   <!-- 加载静态文件 -->   <mvc:resources location="/statics/" mapping="/statics/**"></mvc:resources>        <!-- 配置多视图解析器 -->    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">        <property name="favorParameter" value="true"/>         <property name="defaultContentType" value="text/html" />         <property name="mediaTypes">            <map>            <entry key="html" value="text/html; charset=UTF-8"/>                <entry key="json" value="application/json; charset=UTF-8"/>                <entry key="xml" value="application/xml; charset=UTF-8"/>            </map>        </property>        <property name="viewResolvers">            <list>                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   <property name="prefix" value="/WEB-INF/jsp/"/>   <property name="suffix" value=".jsp"/>   </bean>            </list>        </property>    </bean> <!-- 配置拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/end/backend/**"/><mvc:mapping path="/dev/flatform/**"/><bean class="cn.appsys.interceptor.SysInterceptor"/></mvc:interceptor></mvc:interceptors><!-- 配置文件上传  MultipartResolver--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="500000000"/><property name="defaultEncoding" value="UTF-8"/></bean></beans>   


项目结构图:



依赖jar包




POJO

package cn.appsys.pojo;import java.util.Date;public class DevUser {private Integer id;private String devCode;private String devName;private String devPassword;private String devEmail;private String devInfo;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getDevCode() {return devCode;}public void setDevCode(String devCode) {this.devCode = devCode;}public String getDevName() {return devName;}public void setDevName(String devName) {this.devName = devName;}public String getDevPassword() {return devPassword;}public void setDevPassword(String devPassword) {this.devPassword = devPassword;}public String getDevEmail() {return devEmail;}public void setDevEmail(String devEmail) {this.devEmail = devEmail;}public String getDevInfo() {return devInfo;}public void setDevInfo(String devInfo) {this.devInfo = devInfo;}public Integer getCreatedBy() {return createdBy;}public void setCreatedBy(Integer createdBy) {this.createdBy = createdBy;}public Date getCreationDate() {return creationDate;}public void setCreationDate(Date creationDate) {this.creationDate = creationDate;}public Integer getModifyBy() {return modifyBy;}public void setModifyBy(Integer modifyBy) {this.modifyBy = modifyBy;}public Date getModifyDate() {return modifyDate;}public void setModifyDate(Date modifyDate) {this.modifyDate = modifyDate;}}


DAO

package cn.appsys.dao;import java.util.List;import cn.appsys.pojo.DevUser;public interface TestMapper {public List<DevUser> getList();}

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.appsys.dao.TestMapper">    <select id="getList"  resultType="DevUser">        select u.* from dev_user u    </select></mapper>

service 和实现类

package cn.appsys.service;import java.util.List;import cn.appsys.pojo.DevUser;public interface TestService {public List<DevUser> getList();}

package cn.appsys.service;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import cn.appsys.dao.TestMapper;import cn.appsys.pojo.DevUser;@Servicepublic class TestServiceImpl implements TestService{@Resourceprivate TestMapper mapper;
@Overridepublic List<DevUser> getList() {return mapper.getList();}}

Controller

package cn.appsys.controller;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import cn.appsys.pojo.DevUser;import cn.appsys.service.TestService;@RequestMapping(value="/test")@Controllerpublic class TsetController {@Resourceprivate TestService service;@RequestMapping(value="/list")public String getList(Model model){List<DevUser> list = service.getList();model.addAttribute("list",list);return "test/testList";}}


测试代码

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- Meta, title, CSS, favicons, etc. --><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>测试</title></head><body class="login">   <a href="test/list">获取用户列表</a></body></html><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- Meta, title, CSS, favicons, etc. --><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>测试</title></head><body class="login">   <a href="test/list">获取用户列表</a></body></html>


在工程WebRoot/WEB-INF/jsp/test/中建立一个testList.jsp页面  方便看测试结果

页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- Meta, title, CSS, favicons, etc. --><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>test</title></head><body class="nav-md"><table border="1px solid black"><tr><td>账号</td><td>用户名</td><td>密码</td><td>创建日期</td></tr><c:forEach items="${list }" var="user"><tr><td>${user.devCode }</td><td>${user.devName }</td><td>${user.devPassword }</td><td>${user.creationDate }</td></tr></c:forEach></table></body></html>

Mysql数据库:

-- ------------------------------ Table structure for dev_user-- ----------------------------DROP TABLE IF EXISTS `dev_user`;CREATE TABLE `dev_user` (  `id` bigint(30) NOT NULL AUTO_INCREMENT COMMENT '主键id',  `devCode` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '开发者帐号',  `devName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '开发者名称',  `devPassword` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '开发者密码',  `devEmail` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '开发者电子邮箱',  `devInfo` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '开发者简介',  `createdBy` bigint(30) DEFAULT NULL COMMENT '创建者(来源于backend_user用户表的用户id)',  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',  `modifyBy` bigint(30) DEFAULT NULL COMMENT '更新者(来源于backend_user用户表的用户id)',  `modifyDate` datetime DEFAULT NULL COMMENT '最新更新时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;-- ------------------------------ Records of dev_user-- ----------------------------INSERT INTO `dev_user` VALUES ('1', 'test001', '测试账户001', '123456', null, null, '1', '2016-08-20 00:13:41', null, null);INSERT INTO `dev_user` VALUES ('2', '2', '2', '2', null, null, null, null, null, null);INSERT INTO `dev_user` VALUES ('3', '3', '3', '3', null, null, null, null, null, null);INSERT INTO `dev_user` VALUES ('4', '4', '4', '4', null, null, null, null, null, null);

测试页面:



测试结果:


原创粉丝点击