maven搭建ssm项目讲解

第一部分:构建一个简单的maven工程

1.新建maven project

maven搭建ssm项目讲解_第1张图片

2.创建maven项目基本结构

maven搭建ssm项目讲解_第2张图片

3.项目命名与打包方式,这里选择打成war包

maven搭建ssm项目讲解_第3张图片

4.创建完项目后,但是缺失WEB-INF目录以及web.xml文件

maven搭建ssm项目讲解_第4张图片

解决方案: 右击该项目 —>  JAVA EE TOOLS —>  Generate Deployment Discripor Stub

此时,第一部分完成。maven项目结构搭建好。

 

第二部分 pom文件

  这里的pom配置文件,主要分三块,

    第一模块:用于定义全局变量,一般用来规定jar包版本

    第二模块:用于定义所依赖的jar包,具体每个jar包的作用在下面配置文件中已经说明

      但这里需要注意:

       1.比如在日志jar包中,我们使用log4j和slf4j,需要的基本jar包有:log4j.jar, slf4j-api.jar, slf4j-log4j12.jar,但是我们只配置了slf4j-log4j12的依赖。是因为maven的传递依赖功能,当我们配置了slf4j-log4j12.jar的依赖,而slf4j-log4j12.jar会依赖log4j.jar以及slf4j-api.jar;如下图所示

maven搭建ssm项目讲解_第5张图片

        2.我们在servlet-api以及jsp-api中将作用域设置成provided表示我们仅在编译和测试阶段使用这两个jar包,在实际项目部署时我们不会使用该jar包,因为我们的项目最终会部署在tomcat容器里,而tomcat本身就包含了这两个jar包,为了避免jar包冲突,我们将这两个jar包的作用域设置为provided

    第三模块: 用于添加项目所依赖的插件。比如maven项目默认是使用jdk5编译的,在这里我们需要添加jdk1.8来编译。此外添加打包时跳过单元测试的maven插件

最后,我们配置完pom文件后,需要maven update一次,可以让我们主动添加所配置的依赖的jar包以及插件


	4.0.0
	com
	ssm-maven
	0.0.1-SNAPSHOT
	war

	
		4.12
		1.7.7
		1.2
		2.0
		2.5
		2.8.5
		1.5.4
		4.3.8.RELEASE
		3.3.1
		1.3.0
		5.1.36
		1.0
		5.0.1
		1.4
	

	
	
		
		
			junit
			junit
			${junit.version}
		

		
		
			org.slf4j
			slf4j-log4j12
			${slf4j.version}
		

		
		
			org.springframework
			spring-core
			${spring.version}
		
		
			org.springframework
			spring-context-support
			${spring.version}
		
		
			org.springframework
			spring-web
			${spring.version}
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
		
			org.springframework
			spring-oxm
			${spring.version}
		
		
			org.springframework
			spring-jdbc
			${spring.version}
		
		
			org.springframework
			spring-test
			${spring.version}
		

		
		
			com.fasterxml.jackson.core
			jackson-core
			${jackson.version}
		
		
			com.fasterxml.jackson.core
			jackson-databind
			${jackson.version}
		
		
			com.fasterxml.jackson.core
			jackson-annotations
			${jackson.version}
		

		
		
			org.aspectj
			aspectjrt
			${aspectj.version}
		
		
			org.aspectj
			aspectjweaver
			${aspectj.version}
		

		
		
			javax.servlet
			jsp-api
			${jsp.version}
			provided
		

		
			javax.servlet
			servlet-api
			${servlet.version}
			provided
		

		
		
			jstl
			jstl
			${jstl.version}
		

		
		
			org.mybatis
			mybatis
			${mybatis.version}
		

		
		
			org.mybatis
			mybatis-spring
			${spring.mybatis.version}
		

		
		
			mysql
			mysql-connector-java
			${mysql.collection.version}
		

		
		
			aopalliance
			aopalliance
			${aopalliance.version}
		

		
		
			org.ow2.asm
			asm
			${asm.version}
		

		
		
			commons-dbcp
			commons-dbcp
			${dbcp.version}
		
	


	
		
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.0
				
					1.8
					1.8
				
			
			
			
				org.apache.maven.plugins
				maven-surefire-plugin
				
					true
					
					true
				
			
		
	

 

第三部分 配置文件

1.配置web.xml文件

  web.xml文件中一共有四个组件

  第一个:监听器


	org.springframework.web.context.ContextLoaderListener

    作用:在web容器启动时,注册ServletContext监听器的实现类对象ContextLoaderListener,读取spring配置文件,创建Spring容器及将创建好的Spring容器对象放入到ServletContext的域属性空间中,确保整个应用中spring容器的唯一性。

   第二个:spring配置文件位置



	contextConfigLocation
	classpath:spring-config/spring-*.xml

      作用:这里指定了spring的主配置文件,是ssm框架的总的容器。其中会注册数据源,事务管理,service,dao的注册等。但是要注意,这里的主配置文件和springmvc的配置文件是不同的,springmvc的配置文件中主要用于springmvc“四器”的注册,即映射器处理器,适配器处理器,处理器,视图解析器。在这里我们配置的是classpath下spring-config/spring-*.xml。所以我们在src/main/resources目录下创建spring-config目录,spring相关配置文件放在该目录下,且文件名命名以spring-开头。

  第三个:字符集过滤器


  characterEncodingFilter
  org.springframework.web.filter.CharacterEncodingFilter
  
  	encoding
  	utf-8
  
  
  	forceEncoding
  	true
  


  characterEncodingFilter
  /*

设置请求和响应字符集为utf-8

  第四个: DispatchetrServlet中央调度器


	springMVC
	org.springframework.web.servlet.DispatcherServlet
	
		contextConfigLocation
		classpath:spring-config/springmvc-config.xml
	
	1


	springMVC
	/
 

    在中央调度器里读取springmvc配置文件,即读取“四器”

综上,具体配置如下:



	
	
	
		contextConfigLocation
		classpath:spring-config/spring-*.xml
	
	
	
	
		org.springframework.web.context.ContextLoaderListener
	
	
	
	
		springMVC
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:spring-config/springmvc-config.xml
		
		1
	
	
		springMVC
		/
	 
	
	
  	
  		characterEncodingFilter
  		org.springframework.web.filter.CharacterEncodingFilter
  		
  			encoding
  			utf-8
  		
  		
  			forceEncoding
  			true
  		
  	
  	
  		characterEncodingFilter
  		/*
  	

2.spring主配置文件

注意:我们在web.xml中配置的spring文件应位于src/main/resources目录下的spring-config下以spring-开头的配置文件。所以我们在这里新建spring-context.xml主配置文件,并创建proerties-config目录下存放properties配置文件,如下图:

maven搭建ssm项目讲解_第6张图片

在spring-context.xml主配置文件中,我们需要配置六个组件

  第一个:引入properties配置文件

    我们一般将数据库连接四要素写入properties配置文件中,在spring文件中引入。所以此时,我们在上图properties-config目录下创建jdbc.properties文件,并将数据库连接四要素写入其中,如下图所示:

maven搭建ssm项目讲解_第7张图片

  在创建并配置好properties文件后,接下来就需要在spring中引入properties配置文件,如下:

  注意:我们一般写的是*.properties,表示引入properties目录下所有文件名以properties结尾的文件,这样方便以后创建其他properties配置文件并引入。一方面是因为代码简洁,另一方面也是因为标签只能使用一次

  第二个:注册数据源(这里我们使用的是dbcp连接池)


	
	
	
	

注意:此时数据源中的字段,读取了jdbc.properties配置文件

第三个:注册SqlSessionFactoryBean(这个bean是mybatis的核心)


	
	

主要有两个参数:dataSource数据源以及mapperLocations,mapperLocations指的是我们的mybatis的mapper映射文件的类路径

(对应的,我们的mapper.xml映射文件需要在src/main/resources下的mapper-config目录下,且以-mapper.xml文件结尾)

此外,还有一个参数:configLocation,这个参数是表示mybatis主配置文件的类路径,因为我们这里已经将sqlSessionFactoryBean放在了spring主配置文件中,所以mybatis的主配置文件可有可无。

  第四个:注册Mapper扫描器


	
	

该扫描器的作用是扫描Mapper接口,便于后面动态代理生成对应的sqlSession对象。有两个参数,第一个即sqlSessionFactoryBean,另一个是basepackage表示Mapper接口所在的包

以上四个配置了数据源等相关,已经可以实现增删查改操作了,接下来的两个组件是事务管理相关

  第五个:注册事务管理器


	

  第六个:配置事务注解驱动

注:spring的其他aop功能,在此不做演示。以上六个组件已经可以实现基本要求

综上,具体配置如下:


	
	
	
	
	
	
		
		
		
		
	
	
	
	
		
		
	
	
	
	
		
		
	
	
	
	
	
	
		
	
	
	
	

			

 

3.springmvc.xml

  在web.xml配置文件的中央调度器中,我们已经规定好springmvc的配置文件应放在src/main/resources下的spring-config目录下,且文件名为:springmvc-config.xml,配置文件的路径如下图:

maven搭建ssm项目讲解_第8张图片

springmvc配置文件主要是用于配置“四器”,在这里只用配置三个组件

  第一个: 静态资源处理器

  第二个:注解驱动

  第三个: Controller包扫描器

	

以上,就可以满足基本需求。如下所示:


	
	
	
	
	
	
	
	
		

综上,ssm框架基本搭建完成。

4. 在类路径下配置并添加log4j.properties配置文件

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/opt/faeapp/logs/test/test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%-8.8t] %-20.20c{1}[%-20.20M]:%-3L - %m%n
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=30
log4j.appender.file.encoding=UTF-8

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=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%-8.8t] %-20.20c{1}[%-20.20M]:%-3L - %m%n

log4j.rootLogger=debug, console

综上,整个ssm框架基本搭建完成

maven搭建ssm项目讲解_第9张图片

 

 

接下来,我们写一个简单的用户注册的例子让ssm框架运行起来。

1.首先创建好数据库表t_student:

maven搭建ssm项目讲解_第10张图片

2.创建对应的Bean,放在com.tca.beans包内

package com.tca.beans;

import java.io.Serializable;

public class Student implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private Integer sid;
	
	private String sname;
	
	private Integer sage;
	
	private String sgender;
	

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Student(String sname, Integer sage, String sgender) {
		super();
		this.sname = sname;
		this.sage = sage;
		this.sgender = sgender;
	}

	public Integer getSid() {
		return sid;
	}

	public void setSid(Integer sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public Integer getSage() {
		return sage;
	}

	public void setSage(Integer sage) {
		this.sage = sage;
	}

	public String getSgender() {
		return sgender;
	}

	public void setSgender(String sgender) {
		this.sgender = sgender;
	}

}

3.写对应的Mapper接口和mapper映射文件

  3.1 Mapper接口放在com.tca.dao包中

package com.tca.dao;

import org.springframework.stereotype.Component;

import com.tca.beans.Student;

@Component("com.tca.dao.IStudentDao")
public interface IStudentDao {
	
	/**
	 * 
	 * @param sname
	 * @return
	 */
	int countBySname(String sname);
	
	/**
	 * 
	 * @param student
	 */
	void insertStudent(Student student);
	
	
}

  3.2 mapper映射文件放在mapper-config目录下




	
	
	
	
		insert into t_student (sname, sage, sgender) values (#{sname}, #{sage}, #{sgender})
	
	

以上dao层已经全部写好。

4.Controller层

注意,因为本例业务逻辑比较简单,因此,没有单独写Service层

package com.tca.controller;

import org.apache.log4j.Logger;
import org.slf4j.impl.Log4jLoggerFactory;
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.tca.beans.Student;
import com.tca.dao.IStudentDao;

@Controller
@RequestMapping("/register")
public class RegisterController {
	
	@Autowired
	private IStudentDao studentDao;
	
	private Logger logger = Logger.getLogger(RegisterController.class);
	
	/**
	 * 跳转到注册页面
	 * @return
	 */
	@RequestMapping("/toRegisterPage")
	public ModelAndView toRegisterPage(){
		logger.info("准备跳转到注册界面..");
		return new ModelAndView("/jsp/register.jsp");
	}
	
	/**
	 * 注册
	 * @param student
	 * @return
	 */
	@RequestMapping("/doRegister")
	public ModelAndView doRegister(Student student){
		ModelAndView mv = new ModelAndView();
		
		//判断用户名是否使用
		String sname = student.getSname();
		if (studentDao.countBySname(sname) > 0){
			logger.info("该用户名已经注册..");
			mv.addObject("errorMsg", "该用户名已使用");
			mv.setViewName("/jsp/register.jsp");
			return mv;
		}
		
		//注册成功,则跳转到注册成功页面
		studentDao.insertStudent(student);
		logger.info("注册成功..");
		mv.addObject("student", student);
		mv.setViewName("/jsp/welcome.jsp");
		return mv;
	}

}

5.最后,我们在WEB-INF目录下创建jsp目录,并创建基本的页面

注意:因为本例比较简单,所以没有实现前后端分离,我们将前端页面以jsp的方式展示

分别创建和添加register.jsp注册页面,welcome.jsp注册成功后欢迎页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


	
		
		用户注册
	
	
		
${errorMsg}
用户注册
用户名
密码
密码确认
生日
年龄
性别   女  保密 
你感兴趣 html  css  JS  Jquery 
Ajax  Json  Servlet  JSP 
你感兴趣
你来自哪
自我介绍
       
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


	
		
		欢迎界面
	
	
		

你好,${student.sname}!


恭喜您,注册成功!

以上,例子也搭建完毕。接下来使用tomcat运行该项目。

 

接下来,看效果

1.在浏览器输入url:http://localhost:8080/ssm-maven/register/toRegisterPage

2.进入注册页面,并填写,提交

maven搭建ssm项目讲解_第11张图片

3.注册成功,进入欢迎页面

至此,整个框架搭建成功并验证成功!

你可能感兴趣的:(ssm)