学习了ssm框架后,一直想要自己亲自搭建一个,最近尝试了一下,效果还行,算是一个微型的ssm框架吧。介绍一下,我使用的IDE是idea。
首先,创建一个maven的web工程,如下:
然后点击next,添加groupId,artifactId和version,这个随便起不过groupId表示你的包名,artifactId表示你的项目名,如下:
然后一路next,这里要注意一下,可能有的小伙伴下载maven项目奇慢无比,这是由于如果你没添加任何配置的话,你的maven依赖默认是从中央仓库下载的,而中央仓库在国外,所以慢是可以理解的,那么,有什么可以解决的呢?有,那就是在你的"settings.xml"文件中添加阿里巴巴的镜像即可:如下:
创建好的maven目录结构如下:
但是我们需要把它配置成标准的maven项目机构,如下:
这里,我们还需要将java标记为源文件,resouces标记为配置文件,如下所示:
然后在pom.xml文件中引入相关的spring的依赖,如下:
UTF-8
1.7
1.7
5.0.3.RELEASE
3.4.4
junit
junit
4.11
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-test
${spring.version}
javax.servlet
javax.servlet-api
3.0.1
provided
javax.servlet.jsp
jsp-api
2.2
provided
javax.servlet
jstl
1.2
taglibs
standard
1.1.2
com.fasterxml.jackson.core
jackson-databind
2.9.4
mysql
mysql-connector-java
5.1.38
com.mchange
c3p0
0.9.5.2
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.1
ch.qos.logback
logback-classic
1.1.1
然后在resources配置中创建如下xml文件:
这里的applicationContext-dataSource.xml文件中添加和数据库相关的配置信息,如下:
true
那么,就需要配置连接数据库的配置了,我们放在jdbc.properties中,如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/bjpowernode?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
#最大连接数
c3p0.maxPoolSize=30000
#最小连接数
c3p0.minPoolSize=10
#关闭连接后不自动commit
c3p0.autoCommitOnClose=false
#获取连接超时时间
c3p0.checkoutTimeout=10000
#当获取连接失败重试次数
c3p0.acquireRetryAttempts=2
其中,这里:
是你自己的数据库库名,自己根据自己的情况酌情而定。
然后在applicationContext-springMVC,xml中配置有关springMVC相关的配置信息:
再然后,在applicationContext.xml总配置文件中引入其他的配置文件:
其中mapper中的emp.xml中是写sql的如下:
然后在web.xml文件中配置一些servlet和其他信息:
index.jsp
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext*.xml
1
true
SpringMVC
/
contextConfigLocation
classpath:applicationContext*.xml
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
30
再然后是源文件目录如下:
至于源文件中的内容如下:
首先是domain层:
package com.Jevin.domain;
import java.util.Date;
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptno;
public Emp(){};
public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Double sal, Double comm, Integer deptno) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptno = deptno;
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
@Override
public String toString() {
return "Emp{" +
"empno=" + empno +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", mgr=" + mgr +
", hiredate=" + hiredate +
", sal=" + sal +
", comm=" + comm +
", deptno=" + deptno +
'}';
}
}
然后是dao层:
package com.Jevin.dao;
import com.Jevin.domain.Emp;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface EmpDao {
public List getEmp();
}
然后是service层:
package com.Jevin.service;
import com.Jevin.domain.Emp;
import java.util.List;
public interface EmpService {
public List getEmp();
}
package com.Jevin.service.inpl;
import com.Jevin.dao.EmpDao;
import com.Jevin.domain.Emp;
import com.Jevin.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpDao empDao;
@Override
public List getEmp() {
return empDao.getEmp();
}
}
最后第controller层:
package com.Jevin.controller;
import com.Jevin.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/emp")
public class EmpController {
@Autowired
private EmpService empService;
@RequestMapping(value="/query")
public Object getEmp(){
return empService.getEmp();
}
}
好了,至此代码已经都写完了,接下来配置tomcat容器:
这里,还需要将你的项目打包成jar包,或者是war包,尽管idea已经替你打好了,但是你还需要学会自己打包:如下:
然后就是将项目部署到tomcat中去:
好了,至此项目已经结束,可以启动tomcat跑项目了:
浏览器中有如上的json信息,表明配置成功了!