SSM血泪史

2 篇文章 0 订阅
2 篇文章 0 订阅
本文记录了作者在配置和学习SSM(Spring MVC + Spring + Mybatis)框架过程中遇到的挑战与解决方法,包括数据库和服务器配置、Maven环境搭建、Mybatis、Spring的理解与应用,以及Spring MVC的学习。通过踩坑与解决,作者总结了配置细节和学习资源,强调了细心配置和理解框架的重要性。
摘要由CSDN通过智能技术生成

SSM血泪史

软件体系架构后,老师说按照质量驱动编程,于是我信了——然后我们组选用了SSM构架,四个星期铺就一部狂赶ddl的血泪史

SSM——Spring MVC + Spring + Mybatis为组合的构架,Mybatis负责数据库读取的代码简化、Spring负责读取数据之后的代码简化,而Spring MVC负责前后端响应的代码简化。

代码不难,配置细心!!!

一、首先配置数据库和服务器

这个比较简单,网上基本上都有报错的解决方案,我选用的Mysql和Tomcat这种中小型建站方案

菜鸟上有比较详细的教程:

Mysql数据库搭建,当然现在有更简洁的方式,在Mysql官网上下载web community 一键安装,当然如果要选择路径的话,需要用custom模式安装

Tomcat安装及配置,这里需要注意jre和Tomcat的版本问题,当然全部下载最新的大概率是没有问题的(当时我就在这里踩了坑,jre用一年前的,Tomcat用最新的就有不兼容的问题)

如果原来没有接触过网页服务器编程的话,这些教程快速浏览一下也很不错

二、接下来配置Maven环境

在这种需要大量jar包调用的开发中,用完Maven之后,必定真香。。。花了三天时间配置Maven,但是之后不停的失败后新建项目可真是方便,特别是有了Maven repository,找jar包再也不发愁了呢,在团队之间建项目也很方便了。

Maven目前来讲,我觉得最最方便的就是包管理器 pom.xml,在上面的Maven repository有如何写jar包依赖的代码,直接复制粘贴就好。如果用的是eclipse的话。。。注意pom.xml代码格式在这里
在这里插入图片描述

同样贴上几个教程:(我真的是把所有的坑都踩了一遍。。。。)

如果可以看英文教程的话,官网的入门指导真的不错!!能少走很多弯路:Maven users center

如果只是想看如何在eclipse上配置的话,还是菜鸟上面的两篇就够用了:Maven配置Maven Eclipse

Maven还可以设置很多东西,比如远程仓库镜像、本地仓库等等,在{your-maven-address}/config/setting.xml中都有如何配置的详细注释,当然,在eclipse中也可以修改windows->preferance

阿里Maven镜像:http://maven.aliyun.com/nexus/content/groups/public/
在这里插入图片描述
如何在eclipse上建项,这一篇博主真的讲得非常细致了

SSM需要建立的webapp,同样很重要的是版本配置的问题,不知道为什么,【jre1.7】、【dynamic web Module 3.1】、【JS 1.0】就是比其他配置方案要稳定一些,不怎么随意报错(有些报错就是抽风,随便validation一下就可以了)

这里是解决dynamic web Module 版本不能修改的问题

  1. 需要更高版本的java:更改jre的版本添加Maven编译的插件

  2. 没有办法更改web版本:是不是runtime设置问题手动更改


配置完上面的东西之后,我就直接在GitHub上面找到简单的SSM项目看了起来,然后发现这种学习方法真的不适合对于Spring和数据库一无所知的人。按照Github上面的项目盲写代码,到时候报错都看不懂。

不过,如果对这些有一点点了解的,我觉得GitHub上这些项目不错:整合优雅的SSM项目(这个项目的整理确实很好看,但是没有太多前端的东西)、SSM demo(内容较为全面)、SSM(这个就有点复杂了)

还有一点,其中关于Mybatis部分的代码是可以自动生成的!!!

三、Mybatis学习

由于我用的数据库Mysql是8.XX版本,connector也选择的是8.XX版本,所以一切包都是选择的最高版本,我先用一个小项目来则是Mybatis和Mysql之间的版本问题,参照的是这一篇教程:Mybatis入门

这里踩坑最多的其实是Mysql在Mybatis中的配置问题

  1. 首先我原来的数据库设置成了不需要用户密码登录(我也忘了我是怎么做到的。。。),然后在小项目中可不用密码,但到了web项目中怎么也通不过,所以我重装了一遍Mysql

  2. 用高版本的connector所用的jbdc驱动不一样,应该换为:value="com.mysql.cj.jdbc.Driver"

  3. 有些时候url后面加上两个以上的参数&会识别不出来,需要改成:jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
    连接换成&

maven自动生成这一部分的代码我参照了四篇教程pom中plugin配置,不好好配置没有办法执行generator

Maven generator的具体操作generatorConfig.xml如何理解以及generatorConfig.xml的参考

还有什么关于Mybatis不理解的,可以参照Mybatis中文官方文档

关于Mybatis的理解:减少了很多关于数据库SQL语言的代码,但是在从sqlsession中取数据依旧很麻烦,这就需要Spring登场了~~

四、Spring的理解与学习

之前真的是不理解Spring是个啥玩意,啥Ioc啥注入的,看不懂。但是这篇教程把我讲懂了

于是根据这篇教程Mybatis+Spring配置以及编程和测试,把Spring和Mybatis一起搭建起来了,运用了里面第二个方法对配置之后的项目进行测试,中间遇到了不少问题,最后好像是因为generate太多次,导致xxmapper.xml文件中内容重复,导致报错。
博主后面用的好像不是Spring MVC做的测试,我就没有做web的测试,直接进入下一个环节

目前所有在resource文件夹中除了mapper和log4j之外的xml配置的格式是按照那个格式特别好的GitHub项目配置的,当然在内容上根据Mybatis+Spring配置以及编程和测试进行了修改

五、Spring MVC

Spring MVC本想看英文教程的,可是真的是实在看不进去,也看不懂,完全没有接触过,在这个时候能理解大多数代码的基础上,我将专门Spring MVC教程GitHub上的项目—>有点复杂的那个结合来看

中间关于web.xml出现了些问题,一个是关于configLocation多值的问题,还有一个是由于我的spring-Mybatis配置都是分开写的,如果只是按照单个值来写会出现报错:BeanFactory无法生成、找不到.xml文件等等

这是我写的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
	version="4.0">
	<display-name>hustxk</display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
		classpath:spring/spring-*.xml,
		classpath:mybatis-config.xml
		</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>webs</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/spring-*.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>webs</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!-- 汉字编码问题 -->
	<filter>
		<filter-name>setEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>setEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

以及我的部分文件路径视图:
在这里插入图片描述

到现在我还是不太明白为什么在教程中一直强调命名的{DispatcherServlet}-servlet.xml,我一直都没写,我的Spring-web中倒是有相似的内容,难道这个是我的servlet吗?

-----------------更新------------------------------------------------------------------------------------------------

这是因为加了listener吗?

you can customize this file name and location by adding the servlet listener ContextLoaderListener in your web.xml file as follows −

<web-app...>

   <!-------- DispatcherServlet definition goes here----->
   ....
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
   </context-param>

   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>
   
</web-app>

----------------------------------------------------------------------分割线-----------------------------------

之后写好根据这个简单但是全面的GitHub项目,把对应的controller和jsp文件写好,就可以配置server进行运行测试啦

感悟:虽然最后只出来小小的一行,但是代表所有的都配置成功了不是吗

SSM这个框架中包含的东西太多,这是三天速成这些难免很多东西都理解不到位,用我们软件体系结构老师的话来说就是:“没有金刚钻就不要揽瓷器活”,这些东西在ddl之后肯定要认真看看哇!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值