jdk:1.8
Tomcat:7.0
本地mysql:8.0
Eclipse:Eclipse Jee Photon
Spring:4.3.8
AOP:1.8.0
mybatis:3.3.0
Mysql驱动:8.0.11
Druid:1.1.10
jstl:1.2
log4j:1.2.17
junit:3.8.1
https://download.csdn.net/download/badao_liumang_qizhi/10939695
1.下载Maven并配置好。
2.创建Maven项目时设置JDK,
eclipse创建maven项目时,显示的JDK默认版本为1.5,实际使用的JDK为1.8。
修改参照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86184775
1.使用Eclipse--File--New--Maven project
2.点击next
3.再点击next
4.选择maven-archetype-webapp,点击next
5.输入项目相关信息Group Id(组织名)、Artifact Id(项目名)点击Finish
建成后的目录
1.右击项目--Build Path--Configure Build Path
2.找到Libraries,可以看到此时JRE默认是1.5的.
JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品。
运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
3.点击JRE System Libray [J2SE-1.5] --点击Remove--Apply
4.移除完之后再点击Add Libray
5.然后选择JRE System Library,点击next
6.选择自己本地对应的JRE,这里是JRE1.8,点击Finish
7.这时可以看到已经将JRE改为1.8了,点击Apply and Close。
8.回来再点击Add Library,选择Server Runtime
9. 选中Tomcat并点击Finish
10.配置完之后应该为下面这样,点击Apply and Close
11.Eclipse设置Server好Tomcat,Windows--Preferences--Server--Runtime Environment,如果已经有了就选中后点击Edit,如果没有则点击Add。
12.这里点击编辑,选择本地Tomcat的目录,并将JRE修改过来。
12.查看项目信息
右击项目--Properties--Project Facets,可以看到此时的Dynamic Web Services为2.3,java为1.5 ,
Dynamic Web Services为3.0以上才有web.xml,而且如果想要使用Tomcat8.5的话,也要修改。
找到Eclipse的工作目录下的项目目录下的.settings文件夹下的org.eclipse.wst.common.project.facet.core.xml
用编辑器打开
修改之前
修改之后
返回Eclipse,刷新项目,右击项目,选择refresh
刷新之后再看到,已经自动更改过来了。
打开Eclipse下maven项目下的web.xml
修改之前
修改为
修改Maven项目的pom.xml
修改之前的pom.xml
4.0.0
com.badao
ssmTest
war
0.0.1-SNAPSHOT
ssmTest Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
ssmTest
修改为:
4.0.0
com.bdao
ssmTest
war
0.0.1-SNAPSHOT
ssm Maven Webapp
http://maven.apache.org
ssmTest
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
右击项目--Maven--Update Project
选择要更新的项目,点击OK
修改pom.xml内容
4.0.0
com.bdao
ssmTest
war
0.0.1-SNAPSHOT
ssm Maven Webapp
http://maven.apache.org
4.3.8.RELEASE
org.springframework
spring-core
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.aspectj
aspectjrt
1.8.0
org.aspectj
aspectjweaver
1.8.0
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
8.0.11
com.alibaba
druid
1.1.10
org.mybatis
mybatis-spring
1.2.3
javax.servlet
jstl
1.2
log4j
log4j
1.2.17
org.slf4j
slf4j-api
1.7.21
junit
junit
3.8.1
test
ssmTest
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
保存后可以看到相关依赖已经被加载
因为服务端maven项目的标准结构有四个子包:src/main/java、src/main/resources、src/test/java、src/test/resources,
这里缺少了src/test/resources,所以手动补上。
右击test目录--new--Folder
输入resources,点击FInish
在src--main-resource下右击--new--File
输入log4j.properties
内容如下:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.how2java=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
在 src--main-resource下右击--new--Other
选择XML下的XML File,点击next
名字是mybatis-config.xml ,点击Finish。
在这里我们只配置一个别名,使用typeAliases标签,类型别名,就是一个实体类的名字太长,而且使用频率比较高时,
就给这个全限定的类名起了一个别名。 配置别名是为了在对象映射文件中接受参数类型和返回参数类型时使用。
1.如果是设定单个类的别名:
alies:取的别名。
type:这个别名所对应类的Java类。
2.如果是设置这个包下的所有类的别名:
默认是类名小写。
3.mybatis-config.xml 内容
同上也在此目录下新建spring-mvc.xml
1.启用自动扫描
代码:
讲解:
自动扫描该包,使SpringMVC认为该包下使用了@Controller 注解的是控制器
2.注册MVC注解驱动
代码:
讲解:
这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持,@NumberFormatannotation支持,
@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能。
3.设置静态资源可访问
代码:
讲解:
在springMVC-servlet.xml中配置
如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。
如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:
4.配置视图解析器
代码:
讲解:
VIewResolver的作用是根据viewName找到view对象,SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。
ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。
其中name="prefix,配置的前缀,因为这里的jsp文件是放在WEB-INF下的新建的jsp目录.
name="suffix" ,配置后缀,解析以.jsp结尾的.
这样SpringMVC就能在Controller中根据返回的字符串找到要跳转的视图,比如在Controller中:
@RequestMapping("listUser")
public ModelAndView listUser(){
ModelAndView mav = new ModelAndView();
List cs= userService.selectAllUser();
// 放入转发参数
mav.addObject("userList", cs);
// 放入jsp路径
mav.setViewName("listUser");
return mav;
那么视图就能解析为WEB-INF下的jsp目录下的listUser.jsp
5.完整spring-mvc.xml代码
同上也在此目录下新建spring-mybatis.xml,这是Spring整合Mybatis时的配置文件。
1.定义数据源Bean
代码:
讲解:
①关于Druid连接池的概念以及属性和使用等参照以下
SSM中使用Druid连接池:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85120936
②如果项目运行后提示:
对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。
参照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554028
③关于配置文件中url中useSSL=false
参照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554488
④关于配置文件中url中&
参照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554028
2.注册SqlSessionFactoryBean
代码:
讲解:
SqlSessionFactoryBean有一个必须属性dataSource。
mapperLocations 属性使用一个资源位置的 list。 这个属性可以用来指定 MyBatis 的 XML 映射器文件的位置。
configLocation指定mybatis配置文件的位置。
3.接口转化为bean
代码:
讲解:
如果数据映射接口很多的话,需要在Spring的配置文件中对数据映射接口做配置,相应的配置项会很多了。
为了简化配置,在MyBatis-Spring中提供了一个转换器MapperScannerConfig它可以将接口转换为Spring容器中的Bean,
在Service中@Autowired的方法直接注入接口实例。MapperScannerConfigurer将扫描basePackage所指定的包下的所有接口类(包括子类),如果它们在SQL映射文件中定义过,则将它们动态定义为一个Spring Bean,这样,我们在Service中就可以直接注入映射接口的bean。
4.spring-mybatis.xml完整代码
在main下java下新建包com.badao.pojo
在此包下新建User.java
package com.badao.pojo;
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
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;
}
}
同理再新建包com.badao.mapper
此包下新建UserMapper.java接口
package com.badao.mapper;
import java.util.List;
import com.badao.pojo.User;
public interface UserMapper {
public List selectAllUser();
}
再在此包下新建UserMapper.xml
同理新建包com.badao.service
在此包下新建UserService.java接口
package com.badao.service;
import java.util.List;
import com.badao.pojo.User;
public interface UserService {
List selectAllUser();
}
再新建包com.badao.service.impl
在此包新建UerServiceImpl.java作为上面的实现类
package com.badao.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.badao.mapper.UserMapper;
import com.badao.pojo.User;
import com.badao.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
public List selectAllUser() {
// TODO Auto-generated method stub
return userMapper.selectAllUser();
}
}
同理新建包com.badao.controller
在此包下新建UserController.java
package com.badao.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.badao.pojo.User;
import com.badao.service.UserService;
// 告诉spring mvc这是一个控制器类
@Controller
@RequestMapping("")
public class UserController {
@Autowired
UserService userService;
@RequestMapping("listUser")
public ModelAndView listUser(){
ModelAndView mav = new ModelAndView();
List cs= userService.selectAllUser();
// 放入转发参数
mav.addObject("userList", cs);
// 放入jsp路径
mav.setViewName("listUser");
return mav;
}
}
在webapp下的WEB-INF下新建jsp目录,再在jsp目录下新建listUser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
查询所有用户
id
name
age
${u.id}
${u.name}
${u.age}
打开web.xml,配置spring的配置文件以及spring mvc的配置文件
contextConfigLocation
classpath:spring-mybatis.xml
org.springframework.web.context.ContextLoaderListener
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
mvc-dispatcher
/
在项目上右键,找到Maven下的Update Project
然后点击OK,不出现异常就是正常。
然后再项目上右键,选择run as --maven install
会在控制台输出以下信息:
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.bdao:ssm:war:0.0.1-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 115, column 16
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ----------------------------< com.bdao:ssm >----------------------------
[INFO] Building ssm Maven Webapp 0.0.1-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ssm ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 4 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ssm ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ssm ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ ssm ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ssm ---
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ ssm ---
[INFO] Packaging webapp
[INFO] Assembling webapp [ssm] in [F:\EcpliseWorkspace\ssm\target\ssm]
[INFO] Processing war project
[INFO] Copying webapp resources [F:\EcpliseWorkspace\ssm\src\main\webapp]
[INFO] Webapp assembled in [683 msecs]
[INFO] Building war: F:\EcpliseWorkspace\ssm\target\ssm.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ ssm ---
[INFO] Installing F:\EcpliseWorkspace\ssm\target\ssm.war to D:\Maven\maven-repository\com\bdao\ssm\0.0.1-SNAPSHOT\ssm-0.0.1-SNAPSHOT.war
[INFO] Installing F:\EcpliseWorkspace\ssm\pom.xml to D:\Maven\maven-repository\com\bdao\ssm\0.0.1-SNAPSHOT\ssm-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.241 s
[INFO] Finished at: 2019-02-20T23:06:15+08:00
[INFO] ------------------------------------------------------------------------
如图:
则说明构建成功,前面的配置没有问题。
右击项目,选择debug as --debug on server
然后选择前面配置的Tomcat
然后点击Finish,控制台没报异常,启动Tomcat成功。
打开浏览器输入:
http://localhost:8080/ssm/listUser