凌雪
2018-10-11
来源 :网络
阅读 1294
评论 0
摘要:本文将带你了解WEBAPP开发教程SSM(一)框架的整合,希望本文对大家学WEBAPP有所帮助。
本文将带你了解WEBAPP开发教程SSM(一)框架的整合,希望本文对大家学WEBAPP有所帮助。
开发环境:系统:window7IDE:Myeclipse2014JDK版本:1.8tomcat:8maven:3.3新建SSM项目:myeclipse配置maven方式请自行百度,新建maven项目,选择webapp。新建的项目目录基本机构修改pom.xml文件这里主要是整合过程,maven的讲解就不细说了。<project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="//maven.apache.org/POM/4.0.0 //maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.w3cjava</groupId> <artifactId>W3cJavaSSM</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>W3cJavaSSM</name> <url>//www.w3cjava.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.1.4.RELEASE</spring.version> <jackson.version>2.5.0</jackson.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!-- 使用SpringMVC需配置 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 关系型数据库整合时需配置 如hibernate jpa等 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.4</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- mysql连接 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- aop --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.4</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <!-- 上传文件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> </dependencies> <build> <finalName>W3cJavaSSM</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>Spring配置spring-context.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="//www.springframework.org/schema/beans" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:context="//www.springframework.org/schema/context" xmlns:jdbc="//www.springframework.org/schema/jdbc" xmlns:jee="//www.springframework.org/schema/jee" xmlns:tx="//www.springframework.org/schema/tx" xmlns:util="//www.springframework.org/schema/util" xmlns:task="//www.springframework.org/schema/task" xsi:schemaLocation=" //www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans-4.0.xsd //www.springframework.org/schema/context //www.springframework.org/schema/context/spring-context-4.0.xsd //www.springframework.org/schema/jdbc //www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd //www.springframework.org/schema/jee //www.springframework.org/schema/jee/spring-jee-4.0.xsd //www.springframework.org/schema/tx //www.springframework.org/schema/tx/spring-tx-4.0.xsd //www.springframework.org/schema/util //www.springframework.org/schema/util/spring-util-4.0.xsd //www.springframework.org/schema/task //www.springframework.org/schema/task/spring-task-4.0.xsd" default-lazy-init="true"> <!-- 加载配置属性文件 --> <context:property-placeholder ignore-unresolvable="true" location="classpath:w3cjava.properties" /> <!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。 --> <context:component-scan base-package="com.w3cjava"><!-- base-package 如果多个,用“,”分隔 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- 使用import的方式导入数据库模块配置文件 --> <import resource="mybatis.xml"/></beans>Mybatis配置mybatis.xmlmybatis.xml在spring-context.xml中已公国import引入,之所以分开配置,主要是考虑到这个文件配置的主要是数据库相关的信息。一些文件配置的细节说明都在xml文件里有说明,就不细说了。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="//www.springframework.org/schema/beans" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:context="//www.springframework.org/schema/context" xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans-3.1.xsd //www.springframework.org/schema/context //www.springframework.org/schema/context/spring-context-3.1.xsd"> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 指定连接数据库的驱动 --> <property name="driverClassName" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="3" /> <property name="minIdle" value="3" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 'x'" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --> <property name="filters" value="stat" /> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.w3cjava.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean></beans>数据源Properties文件:w3cjava.properties#Mysql驱动jdbc.driverClass=com.mysql.jdbc.Driver#数据源jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf8jdbc.user=rootjdbc.password=123456Log日志配置:log4j.propertieslog4j.rootLogger=debug, stdout, logfilelog4j.logger.com.ibatis=DEBUGlog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUGlog4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUGlog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUGlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUGlog4j.logger.org.springframework=DEBUGlog4j.logger.org.compass=DEBUGlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%t] [%c] - %m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=empi.logweb.xml配置:最后一步,就是web.xml配置了<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns="//java.sun.com/xml/ns/javaee" xmlns:web="//java.sun.com/xml/ns/javaee" xsi:schemaLocation="//java.sun.com/xml/ns/javaee //java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>W3cJavaSSM</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-context*.xml</param-value> </context-param> <!-- Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring MVC配置 --> <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:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>SQL语句:-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', '1', '1');INSERT INTO `user` VALUES ('2', '2', '2');POJO层:package com.w3cjava.pojo; public class User{ private String id; private String name; private Integer age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }UserMapper层,即Dao层:package com.w3cjava.dao; import java.util.List; import org.springframework.stereotype.Component; import com.w3cjava.pojo.User; @Componentpublic interface UserMapper { public List<User> getAllUsers(); public User findById(String id);}UserMapper对应的映射文件:UserMapper.xml映射文件UserMapper.xml所在位置在mybatis.xml文件中有配置,一般会选择配置在resources下建立mapping目录下。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "//mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.w3cjava.dao.UserMapper" > <resultMap id="BaseResultMap" type="com.w3cjava.pojo.User" > <id column="id" property="id" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="age" property="age" jdbcType="INTEGER" /> </resultMap> <sql id="Base_Column_List" > id, name, age </sql> <select id="findById" parameterType="String" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from user where id=#{id} </select> <select id="getAllUsers" resultMap="BaseResultMap" parameterType="Map" > select <include refid="Base_Column_List" /> from user </select> </mapper>Service层:package com.w3cjava.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import com.w3cjava.dao.UserMapper;import com.w3cjava.pojo.User; @Servicepublic class UserService { @Autowired private UserMapper userMapper; public List<User> getAllUsers(){ return userMapper.getAllUsers(); } public User findById(String id){ return userMapper.findById(id); }}Controller层:package com.w3cjava.controller; import java.util.List; 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 com.w3cjava.pojo.User;import com.w3cjava.service.UserService; @Controller@RequestMapping("/user")public class UserController { @Autowired private UserService userService; @RequestMapping(value={"list",""}) public String index(Model model){ List<User> allUsers = userService.getAllUsers(); model.addAttribute("allUsers", allUsers); return "user/userList"; } @RequestMapping(value={"add"}) public String add(){ return "user/userAdd"; } @RequestMapping(value={"edit"}) public String edit(User user){ User user2 = userService.findById(user.getId()); return "user/userEdit"; } @RequestMapping(value={"delete"}) public String delete(User user){ userService.findById(user.getId()); return "user/userList"; } }页面userList.jsp<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ include file="/static/include/taglib.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>w3cjava</title></head><body> <a type="button" href="${ctx}/user/add">新增</a> <table style="border: 1px solid black"> <thead> <tr> <td style="border: 1px solid black">ID</td> <td style="border: 1px solid black">登录名</td> <td style="border: 1px solid black">工号</td> <td style="border: 1px solid black">编辑</td> <td style="border: 1px solid black">删除</td> </tr> </thead> <c:forEach var="user" items="${allUsers}" varStatus="status"> <tr> <td style="border: 1px solid black">${user.id}</td> <td style="border: 1px solid black">${user.name}</td> <td style="border: 1px solid black">${user.age}</td> <td style="border: 1px solid black"><a href="${ctx}/user/edit?id=${user.id}">编辑</a></td> <td style="border: 1px solid black"><a href="${ctx}/user/delete?id=${user.id}">删除</a></td> </tr> </c:forEach> </table></body></html>userAdd.jsp<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ include file="/static/include/taglib.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>新增</title></head><body> 新增</body></html>userEdit.jsp<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ include file="/static/include/taglib.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>新增</title></head><body> 编辑</body></html>页面中通过include引入taglib.jsp,主要作用是把常用的页面所需配置项放到这里。<%@ taglib prefix="c" uri="//java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="//java.sun.com/jsp/jstl/fmt" %><%@ taglib prefix="fn" uri="//java.sun.com/jsp/jstl/functions" %><c:set var="ctxStatic" value="${pageContext.request.contextPath}/static"/><c:set var="ctx" value="${pageContext.request.contextPath}"/>至此,SSM框架已经完成整合,完整的目录机构:下面通过Tomcat启动项目,访问//localhost:8080/user截图如下SSM整合源码:Github,这篇整合的源码在bak文件夹下
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号