引言:ssm框架作为现在比较流行的一种框架被广泛使用,但搭建过程中难免出现很多错误,让一些初学者很头疼。
环境:eclipse、 jdk1.8、tomcat9.0、mysql5.7
一、eclipse下创建maven工程的web项目
1、项目架构
2、创建maven工程,点击File创建maven project,都勾上,直接next
3、groupId是包名,artifactId是项目明,packging我们选war,然后next,这个命名随意。
4、创建成功后,我们看到以下的目录,项目名称报错,我们把src/test/java和src/test/resources删除掉。
5、右击项目点击properties或点击Windows里的preference,找到Project Facets选项,
6、我们把Dynamic Web Module的对号去掉,点击apply
7、点击apply之后,再勾选上Dynamic Web Module,出现下面的Futher configuration avaible。。。点击它
8、会弹出一个对话框、我们把WebContent改为webapp,然后点击ok,再点击原来那个界面的apply。
9、点击apply之后,会发现左侧的ssm-o2o的错误信息没了,记得把两个没用的src/test/java和src/test/resource删除掉。
10、 把那个两个src/test/java和src/test/resource删除掉,之后再ssm-o2o下创建一个src/main/test,方便我们以后做测试,当然你不想建也可以,到时候再src/main/java下创建一个test的包即可。
11、创建好之后、我们把webapp的WEB-INF下的lib这个文件夹改魏views,方便以后做视图层,到此maven的web工程创建完毕。
二、maven工程整合mybatis和spring
1、创建数据库o2o,创建数据库表user,并任意添加一条数据。比如liqz,123456
2、依次创建以下包名、并且再src/man/resouce下建以下名称的空txt和xml文件、以及一个showUser.jsp
3、配置pom文件,注意前提一定要装maven的apache-maven环境,推荐3.5.0以上版本,如果你的pom文件加载过慢,在你的setting.xml里加上阿里云的镜像,这样你的下载的速度就很快,如果下载速度很慢,说明你没有配置好,在你的本地maven的conf包setting.xml的mirrors里加上这段镜像,这样下载速度就很快,另外打开windwos里的preferences选项里Maven,记得配置本地的maven环境,这个也是比较复杂的,具体我就不再详解了。
4、配置pom文件,下载jar包,反正我的是很快的,几秒钟就全下好了,如果你的还在慢悠悠下载,那我建议你还是先配置好镜像吧,负责进行下一步很难。
5、配置web.xml,把代码拷贝过去即可,记得保存。
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
6、配置jdbc.properties文件、把数据库和你的用户密码改成你的。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
initialSize=0
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000
7、配置logj4.properties文件,这个是打印日志用的。
log4j.rootLogger=INFO,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
log4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = logs/ssm.log
log4j.appender.File.MaxFileSize = 10MB
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
8、配置spring-mvc.xml文件,注意换成你的包名。
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
9、配置spring-mybatis.xml文件,记着改包名。
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
10、创建User实体类
package cn.school.model;
public class User {
private Integer userid;
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String username;
private String password;
}
11、写UserDao接口
User selectById(int userid);
12、写实现类UserService,有人喜欢用Autowired,这个也是可以的额。
package cn.school.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.school.dao.UserDao;
import cn.school.model.User;
@Service
public class UserService implements UserDao{
@Resource
UserDao userDao;
@Override
public User selectById(int userid) {
// TODO Auto-generated method stub
return userDao.selectById(userid);
}
}
13、编写UserMapper.xml文件,注意改成你的包名
14、编写单元测试,我们再src/main/test里建一个TestMybatis的测试类,或者你在cn.school.test建也可以。
package com.shcool.testMbatis;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.alibaba.fastjson.JSON;
import com.shcool.model.User;
import com.shcool.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class) //表示继承了SpringJUnit4ClassRunner类
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class TestMbatis {
private static Logger logger = Logger.getLogger(TestMbatis.class);
@Resource
private UserService userService = null;
@Test
public void test() {
User user = userService.getUserById(1);
System.out.println(user.getUsername());
logger.info(JSON.toJSONString(user));
}
}
15、我们点击方法test右击run as 进行junit Test,我们可以看到,单元测试是成功的。下面打印出了liqz也就是我。
16、编写UserController.
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.school.model.User;
import cn.school.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/showUser")
public String toIndex(HttpServletRequest request,Model model){
int userId = Integer.parseInt(request.getParameter("userid"));
User user = this.userService.selectById(userId);
model.addAttribute("user", user);
return "showUser";
}
}
17、编写showUser.jsp,我们做一个测试。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
18、然后部署项目、我们点击server里的add和remove,添加到右侧,说明部署到服务器了,然后finsh再点击start,
18、 最后我们在谷歌浏览器里输入localhost:8080/ssm-o2o/user/showUser?userid=1
稍后我把项目上传到github上
https://github.com/1728608455/ssm-curd