SSM框架体会和⼩结(短学期实训)
短短两周的⼩学期的实训,我对ssm框架有了初步的认识。所谓ssm就是指spring+springMVC+mybatis 。spring⽤于实现业务的对
象,springMVC负责转发请求和视图,⽽mybatis是对jdbc的封装,负责数据库的操作。
Spring是⼀个开源框架,Spring是于2003年兴起的⼀个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍⽣⽽来。它是为了解决企业应⽤开发的复杂性⽽创建的。Spring使⽤基本的JavaBean 来完成以前只可能由EJB完成的事情。然⽽,Spring的⽤途不仅限于服务器端的开发。从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java 应⽤都可以从Spring中受益。简单来说,Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow⾥⾯。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的⾓⾊,这种分离让它们更容易进⾏定制。
MyBatis本是apache的⼀个开源项⽬iBatis, 2010年这个项⽬由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是⼀个基于Java的持久层框架。iBATIS提供的持久层框架
包括SQL Maps和Data Access Objects(DAO)MyBatis消除了⼏乎所有的JDBC代码和参数的⼿⼯设置以及结果集的检索。MyBatis 使⽤简单的 XML或注解⽤于配置和原始映射,将接⼝和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
SpringMVC基础知识:
什么是SpringMVC:
1、前端控制器DispatcherServlet
作⽤:接收请求,响应结果,相当于转发器。
2、处理器映射器HandlerMapping
作⽤:根据请求的URL查Handler。
3、处理器适配器 HandlerAadpter
作⽤:将各种Controller适配成DispatcherServlet可以使⽤的Handler,通过特定规则(HandlerAdapter要求的规则)去执⾏Handler。
4、处理器Handler(需要⼯程师开发)
注意:编写Handler时需要HandlerAdapter的要求去做,这样HandlerAdapter才可以正确执⾏Handler。
5、视图解析器 view resolver
作⽤:进⾏视图解析,根据逻辑视图名解析成真正的视图(View)
6、视图view(需要⼯程师开发jsp、html)
View是⼀个接⼝,实现类⽀持不同的类型(jsp、html、freemarker、pdf等)。
SpringMVC的⼯作原理:
第⼀步:发送请求到前端控制器(DispatcherServlet)
第⼆步:处理器映射器HandlerMapping查Handler,可以根据xml配置,或者注解进⾏查。
第三步:处理器映射器HandlerMapping想前端控制器返回Handler。
第四步:前端控制器去调⽤处理器适配器,再通过url去寻相应的Handler
第五步:处理器适配器去执⾏handler
第六步:Handler执⾏完成适配器并返回ModelAndView。
第七步:处理器适配器向前端控制器返回ModelANdView。ModelAndView是SpringMvc框架的⼀个底层对象,包括两个⼦类Model和view 类。
第⼋步:前端控制器请求视图解析器去视图解析,根据逻辑视图解析成真正的视图(jsp)
第九步:视图解析器想前端控制器返回⼀个view
第⼗步:前端控制器进⾏视图渲染
第⼗⼀步:前端控制器向⽤户返回结果。
springmvc+mybaits的系统架构:
SSM整合的问题和对框架的理解
学习了框架之后编写代码的效率提⾼了,框架封装了普通项⽬中程序员需要重复书写的代码和简化了调⽤过程,就⽐如说在传统的jsp项⽬中,我们的controller接收到前端的请求然后程序员就需要去开发Dao层,⾥⾯还涉及数据库的连接和存储过程的代码,⼤部分都是冗余的代码,⽽有了SSM框架后就极⼤的简化了controller以下层的开发,只需要⼀个service层和mapper层就⾏了,mapper层⽤来连接
整合步骤:
第⼀步:整合dao层
mybatis和spring整合,通过spring管理mapper接⼝。
使⽤mapper的扫描器⾃动扫描mapper接⼝在spring中进⾏注册。
第⼆步:整合service层
通过spring管理 service接⼝。
使⽤配置⽅式将service接⼝配置在spring配置⽂件中。
实现事务控制。
第三步:整合springmvc
由于springmvc是spring的模块,不需要整合。
错误及⼼得总结:
1、css⽆法显⽰
在springmvc配置⽂件中配置⼀段解决静态资源访问的代码:
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<mvc:resources location="/js/" mapping="/js/**" />
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/image/" mapping="/image/**" />
<mvc:resources location="/images/" mapping="/images/**" />
<mvc:resources location="/imagess/" mapping="/imagess/**" />
2、jsp中多值传送⽅法:⽤&连接,例如:
<input type="submit" value="职业⽣涯信息"
οnclick="location='CareerPage?PageNo=1&cname=${employee.name}'" />
3、使⽤js实现跳转
var deptid = ElementById("deptid").value;
alert(deptid);
jsp用什么前端框架window.location.href = '../department/findById?deptid='+ deptid
4、使⽤form表单,按钮要提交
type="submit"
5、出现404,⼀般都是路径错误,或者配置⽂件错误等等。出现500,⼀般是代码错误。还有tomcat端⼝号占⽤、mysql字符集出错等。遇到错误不要太担⼼,可以⼀点点根据报错内容,⼀点点解决。
需要注意的地⽅:
1、l⾥的sql语句要确保在数据库中运⾏过⼀遍,l⾥的id要与mapper.java的函数名对应。
2、jsp⾥⾯调⽤的跳转要与controller⾥的对应。例如:
<form name="form1" action="user/login" method="post">⾥的user/login与controller.javal⾥的对应。
@RequestMapping(value="/user")
public class UserController {
@RequestMapping(value="/login")
public ModelAndView success(User user,String username,String password)throws Exception {
Username();
Password();
int count = userService.login(username, password);
ModelAndView mv = new ModelAndView();
if(count==1)
{
mv.setViewName("OK");
}
else {
mv.setViewName("RSGL_loginFailed");
}
return mv;
}
3、数据库配置要与⾃⼰的数据库对应。
jdbc.sql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ehr(数据库名)
jdbc.username=root(数据库⽤户名)
jdbc.password=123456(数据库密码)
4、l⾥⾯的开始界⾯要改成⾃⼰建的jsp的名字。
<welcome-file-list>
<welcome-file>RSGL_index.html</welcome-file>
<welcome-file>RSGL_index.htm</welcome-file>
<welcome-file>RSGL_index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
本次⼩学期对SSM框架的理解主要是以上这些,但其实还有很多深⼊的知识我还没有搞清楚,例如多表链接查询等。相信我可以利⽤暑假的时间将其学会。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。