搭建SSM环境步骤

概述

Spring MVC是一个优秀的Web框架,MyBatis是一个ORM数据持久化层框架,它们是两个独立的框架,之间没有直接的联系。由于Spring 框架提供了IoC 和Aop等功能,若把Spring MVC和MyBatis的对象交给Spring容器进行解耦合管理,不仅能大大增强系统的灵活性,便于功能扩展,还能通过Spring提供的服务简化代码,减少工作开发量,提高开发效率。

一、搭建Spring MVC+Spring+MyBatis框架

1、新建WebProject,加入Spring、Spring MVC、MyBatis、数据库驱动等相关jar文件
搭建SSM环境步骤_第1张图片
2、编写配置文件

  • 配置数据库连接database.properties文件
	driver=com.mysql.jdbc.Driver
	url=jdbc:mysql://localhost:3306/smbms
	user=root
	pwd=1898

注:其它属性根据实际情况设置

  • 配置日志文件log4j.properties
	log4j.rootLogger=debug,CONSOLE,file
	#log4j.rootLogger=ERROR,ROLLING_FILE
	
	log4j.logger.cn.easybuy=debug
	log4j.logger.java.sql.Connection=debug
	log4j.logger.java.sql.Statement=debug
	log4j.logger.java.sql.PreparedStatement=debug
	log4j.logger.java.sql.ResultSet=debug
	
	######################################################################################
	# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
	######################################################################################
	log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
	log4j.appender.Threshold=debug
	#log4j.appender.CONSOLE.DatePattern=yyyy-MM-dd
	log4j.appender.CONSOLE.Target=System.out
	log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
	log4j.appender.CONSOLE.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
	
	######################################################################################
	# Rolling File  \u6587\u4ef6\u5927\u5c0f\u5230\u8fbe\u6307\u5b9a\u5c3a\u5bf8\u7684\u65f6\u5019\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6
	######################################################################################
	#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
	#log4j.appender.ROLLING_FILE.Threshold=INFO
	#log4j.appender.ROLLING_FILE.File=${baojia.root}/logs/log.log
	#log4j.appender.ROLLING_FILE.Append=true
	#log4j.appender.ROLLING_FILE.MaxFileSize=5000KB
	#log4j.appender.ROLLING_FILE.MaxBackupIndex=100
	#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
	#log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
	
	######################################################################################
	# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
	######################################################################################
	log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
	#log4j.appender.file.DatePattern=yyyy-MM-dd
	log4j.appender.file.File=${EasyBuy.root}/logs/log.log
	log4j.appender.file.Append=true
	log4j.appender.file.Threshold=debug
	log4j.appender.file.layout=org.apache.log4j.PatternLayout
	log4j.appender.file.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
  • 编写MyBatis配置文件mybatis-config.xml
	
	
	
		
		
			
		
	
	
  • 编写Spring配置文件applicationContext-mybatis.xml


        
	
	
	
		
	    		classpath:database.properties
		
	
	
	
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	
    
    
    
        
        
        
        
		
		
			
				classpath:mappers/*.xml
			
		
    
    
    
    
        
    	
    
    
    
    
    
       
    
    
    

  • 编写Spring MVC配置文件springmvc-servlet.xml


        
	
	

	
	
		
		 	
			 
				
				
					
						application/json;charset=UTF-8
					
				
			 
			
			
			
				
					
						text/html;charset=UTF-8
						application/json
					
				
				
					
						
						WriteDateUseDateFormat
					
				
			
		
	
	
	
	
		
			
				
					
				
			
		
	
	
	
	

	
	
		
		
		
			
				
				
				
			
		
		
		
			
				
					
					
				
			
			
	
	
	
	
		
			
			
			
		
	
	
	
	
		
			
				login
			
		
	
	
	
	
	
		
		
		
		
			
	



  • 编写web.xml文件


	
	
	
		/WEB-INF/jsp/login.jsp
	

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

	
	
		encodingFilter
		
			org.springframework.web.filter.CharacterEncodingFilter
		
	
		
			encoding
			UTF-8
		
	
		
			forceEncoding
			true
		
	
	
		encodingFilter
		/*
	
	
	
	
	
	
		contextConfigLocation
		classpath:applicationContext-*.xml
	
	
	
	
		
			org.springframework.web.context.ContextLoaderListener
		
	

注1: 由于Spring需要启动容器才能为其他框架提供服务,而Web应用程序的入口是被Web服务器控制的,因此无法在main()方法中通过创建ClassPathXMLApplicationContext 对象来启动容器。Spring提供了一个监听器类org.springframework.web.context.ContextLoaderListener,该监听器实现了 ServletContextListener 接口,可以在Web容器启动的时候初始化Spring容器。

注2: 如果没有指定 contextConfigLocation 参数,ContextLoaderListener 默认会去查找/WEB-INF/applicationContext.xml。即如果我们将配置文件命名为 ContextLoaderListener 并存放在WEB-INF目录下,可不指定contextConfigLocation 参数。

3、数据对象模型(cn.smbms.pojo)

4、DAO访问数据接口(cn.smbms.dao)

5、系统服务接口(cn.smbms.service)

6、前端控制层Controller(cn.smbms.controller)

7、系统工具类(cn.smbms.tools)

8、前端页面(WEB-INF/jsp)和静态资源文件(/WebRoot/statics)


二、静态资源文件引用

开发Web应用时,有时会出现css样式无法应用的情况,若有引用js文件,此时js也是无法起效的。这是由于web.xml中配置的DispatcherServlet请求映射为"/",则Spring MVC将捕捉Web容器的所有请求,这其中也包括了静态资源的请求。Spring MVC会将他们当成一个普通请求处理,但是由于找不到对应处理器,所以按照常规方式引用静态资源文件将无法访问。所以需要采用标签解决静态资源的访问问题。

  • 为了方便配置管理,此处将所有的静态资源文件放在一个文件夹statics下,如下图
    搭建SSM环境步骤_第2张图片
  • 然后在Spring MVC配置文件springmvc-servlet.xml中加入以下配置即可解决
	
	

注:
mapping:将静态资源映射到指定的路径(/statics)
location:本地静态资源文件所在的目录

三、Spring MVC中的异常处理

Spring MVC通过 HandlerExceptionResolver 处理程序异常,包括处理器异常,数据绑定异常以及处理器执行时发生的异常。当发生异常时,Spring MVC会调用 resolveException() 方法,并转到ModelAndView 对应的视图中,作为一个异常报告页面反馈给用户。

1、局部异常处理
仅能处理指定Controller中的异常。使用@ExceptionHandler注解实现。

	//验证登录
	@RequestMapping(value = "/exlogin.html", method = RequestMethod.GET)
	public String exLogin(@RequestParam String userCode, @RequestParam String userPassword) {
		logger.debug("exLogin=============");
		User user = userService.login(userCode, userPassword);
		if (null == user) {		//登录失败
			throw new RuntimeException("用户名或密码不正确!");
		}
		return "redirect:/user/main.html";
	}
	
	@ExceptionHandler(value={RuntimeException.class})
	public String handlerException(RuntimeException e,HttpServletRequest req){
		req.setAttribute("e", e);
		return "error";
	}

注: 当用户发送请求进行登录时,调用处理器的exLogin()方法,该方法用于验证登录信息,当user==null也就是登录失败的情况下,方法会抛出 RuntimeException 运行时异常,并指定了错误信息;而使用@ExceptionHandler(value={RuntimeException.class})注解表示被注解的方法会拦截所有抛出的 RuntimeException ,并进行处理,在handlerException() 方法中将异常对象存放到了request作用域中,并转发到了error.jsp,error.jsp页面即可从request对象中获取错误信息并展示给用户。

2、全局异常处理

全局异常处理可使用 SimpleMappingExceptionResolver 来实现。它将异常类名映射为视图名,即发生异常时使用对应的视图报告异常。

  • springmvc-servlet.xml 中配置全局异常。
	
	
		
			
				error
			
		
	
  • 在方法中定义抛出异常信息
	@RequestMapping(value = "/exlogin.html", method = RequestMethod.GET)
	public String exLogin(@RequestParam String userCode, @RequestParam String userPassword) {
		logger.debug("exLogin=============");
		User user = userService.login(userCode, userPassword);
		if (null == user) {		//登录失败
			throw new RuntimeException("用户名或密码不正确!");
		}
		//重定向URL请求,该请求用于进入login.jsp登录页面
		return "redirect:/user/main.html";	
	}
  • 在异常页面使用${exception.message}获取异常信息

THE END

关注微信公众号【程序媛琬淇】,专注分享Java干货,给你意想不到的收获。

搭建SSM环境步骤_第3张图片

你可能感兴趣的:(SSM)