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层用来连接mapper.xml文件的,而直接用mapper.xml做sql语句的开发就行了,而什么数据库连接的和存储的过程都直接由mybatis负责了,我们只需要负责传递形参和接收返回数据就行了,这样就完成了一次完整的数据库交互!
整合步骤:
第一步:整合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="职业生涯信息"
/>
3、使用js实现跳转
var deptid = document.getElementById("deptid").value;
alert(deptid);
window.location.href = '../department/findById?deptid='+ deptid
4、使用form表单,按钮要提交
type="submit"
5、出现404,一般都是路径错误,或者配置文件错误等等。出现500,一般是代码错误。还有tomcat端口号占用、mysql字符集出错等。遇到错误不要太担心,可以一点点根据报错内容,一点点解决。
需要注意的地方:
1、mapper.xml里的sql语句要确保在数据库中运行过一遍,mapper.xml里的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=user.getUsername();
password=user.getPassword();
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.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ehr(数据库名)
jdbc.username=root(数据库用户名)
jdbc.password=123456(数据库密码)
4、web.xml里面的开始界面要改成自己建的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>
|
|