java mvc框架系列总结ssh,ssm,servlet
2016年10月3日 10:36:40
一直以来都很想写属于自己的博客,一来可以分享自己的学习经验,二来可以及时总结,毕竟博客是写给所有人看的,需要更加仔细的注意每个细节,而不是仅仅让自己看懂。
学了java也有6个月左右,感觉有必要把所学的总结一下,因为以后有可能从事.net。三层架构+servlet:首先启动项目,由于servlet3.0 版本新特性,不需要配置web.xml(没使用spring),我目前使用的是@注解形式。前端通过form表单,或者地址链接,或者ajax,发出请求,如<a href=”SubjectServlet?method=modifysubject&id=${subject.id}”>修改</a>匹配到对应的servlet【@WebServlet("/SubjectServlet") @webServlet 用于将一个类声明为servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为servlet。】执行servlet中被重写的doget()或dopost()方法【函数体都会执行自己的方法】如下doEcho() 函数
服务器通过request获取前端数据(request.getParameter)。通过set方法将存在request中的数据转化成对象。再通过对应的method变量判断执行对应的函数块。例如显示全部,method对应的函数块会调用dao层的显示全部函数,返回list<subject>,将值存入session中,最后再通过response完成跳转页面。在jsp页面同样可以通过session获取数值。最后完成显示。(注意以上后端通过将值存入session,前端再从session中取值,只是在jsp页面)【一句话概括:servlet作用就是接受请求及,作出相应】
Dao层的调用:①调用dao层的save()方法,save()方法里,将传递进来的对象信息转化成sql语句。调用数据链路层来执行sql语句。②调用findall()方法,先new出list集合用以存放返回的数据库记录。执行sql语句得到数据库结果集。遍历结果集,将每一条记录存入new出的对象中,并将该对象存入list集合。返回list集合。
SSH:Struts和servlet最大区别就是struts采用的是多例,而servlet采用的是单例模式。SSH中需要配置web.xml。①配置拦截器,此处设置拦截所有url(“/*”),将权限交给struts处理。②配置spring加载路径及监听器。这样web.xml必备配置就完成了,不过在实际运行项目中应该配置<welcom-file>用于项目启动加载页(其实所有都应该配置,前面没有介绍,后面也不再打算赘述,这点很重要,容易忽略,提醒下。第一次配置环境的时候,可能会因为这点让你误以为是其他配置错了)。struts.xml中配置根据url的值匹配到对应的action。以及根据返回值跳转到对应页面。(struts.xml会自动加载,这点不用考虑url被拦截后是怎么找到具体action路径的。还有application也是在某一路径下自动加载,这些默认加载项大家了解下,最少暂时不会疑虑了。)现在客户端输入添加信息,点击提交form表单到服务器。过滤器拦截所有url。在action中,将上传上来的数据通过set转换成对象,然后再根据method值匹配对应的方法,执行相应的dao层(hibernate)代码,将记录的对象型数据存入session.最后根据return的值和strut.xml的值跳转到相应页面(现在发现strus.xml还有这一功能,其实还可以设置成json数据返回)。其中比较servlet,我们可以看出数据的获取已经不需要通过request方法来获取,而是通过前端的name匹配传输具体值。还是相对较简便一些。
Hibernate:通过session工厂获取session。开始事务。执行方法(hibernate封装好的orm方法,对数据库进行操作,修改或读取),提交事务,关闭session。
其中sessionfactory需要加载hibernate.cfg.xml文件(连接数据库和指定映射文件路径)。映射文件主要配置数据库和实体类之间的映射关系。
Spring:spring主要负责对象的产生和管理。其注入方式主要包括三种(构造函数方式目前没用过)。一种通过属性setter方式注入(<property>标签元素,其中name属性对应的是要注入的变量名,type属性值对应的该变量的类型,可以自定义类或者包装类型。Value属性对应的是相应的值,还有一个ref属性,该属性对应的是相应的bean),和注解方式@Autowired注入。其中@Autowired方式我个人比较喜欢,因为.xml文件比较简单,但同时也造成依赖关系不清晰。在这里提供一个学习连接:http://www.imooc.com/article/1309
以及:http://blog.csdn.net/qiulongtianshi/article/details/7748227(带有代码)
SSM:spring和SSH一样,不过在SSH中需要注意scope属性
对于SSM中web.xml文件的配置和SHH配置差不多,都要配置spring路径,不过,在SSH需要配置过滤器,将请求交给struts处理,而在SSM中则不需要配置过滤器,而是配置DispatcherServlet前端控制器,为不同请求配置相应的spring-mvc路径(下面是一个工作流的web.xml文件代码,比较能反映DispatcherServlet使用及配置)
Spring-mvc当接受到请求后,(或者项目启动时如这里设置了<load-on-startup>1</load-on-startup>),不同的url请求会匹配到相应的spring-mvc配置文件(配置组件扫描,或者可以配置controller请求及跳转的前后缀)
Spring-mvc配置文件在相应的包检测到@Controller会产生相应的controller对象,url请求根据匹配到对应的@RequestMapping,并传递数据(SSM简单粗暴不用担心数据怎么传过来的,怎么存入对象的)。其作用和struts一样,不再赘述。
Mybatis:首先是利用spring产生的sqlSessionTemplate对象,并获取其中的dao方法。其中mybatis配置文件mybatis-config.xml主要配置映射文件路径,以及为类设置别名。数据库的连接配置在sring-mvc.xml(实质spring)配置中
http://blog.sina.com.cn/s/blog_4550f3ca0100ubmt.html
在mybatis的xml文件中不再多说,主要注意resultType和resultMap区别,很有用哦
以下图片参考文档:
http://si shuok.com/forum/blogPost/list/5188.html16436
java mvc框架系列总结ssh,ssm,servlet的更多相关文章
- Java MVC框架性能比较
Java MVC框架性能比较 - by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框 ...
- java日志框架系列(4):logback框架xml配置文件语法
1.xml配置文件语法 由于logback配置文件语法特别灵活,因此无法用DTD或schema进行定义. 1.配置文件基本结构 配置文件基本结构:以<configuration>标签开头, ...
- 从零开始实现一个简易的Java MVC框架(三)--实现IOC
Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...
- Java集合框架系列大纲
###Java集合框架之简述 Java集合框架之Collection Java集合框架之Iterator Java集合框架之HashSet Java集合框架之TreeSet Java集合框架之Link ...
- 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...
- 简单的JAVA MVC框架模式--Java-servlet-JavaBean
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- java日志框架系列(3):logback框架配置详解
1.Logback配置 1.配置步骤及默认配置 logback即可以通过编程式配置,也可以通过xml的形式配置. logback配置步骤: 1. 尝试在 classpath 下查找文件 logback ...
- java日志框架系列(1):slf4j框架简介及依赖
1.slf4j日志框架 1.简介 slf4j只是是日志规范,即只定义了接口,并没有实现这些接口. SLF4J的全称是Simple Logging Facade for Java,即简单日志门面.SLF ...
- java日志框架系列(2):logback框架详解
1.logback介绍 1.什么是logback Logback 为取代 log4j 而生. Logback 由 log4j 的创立者 Ceki Gülcü设计.以十多年设计工业级记录系统的经验为基础 ...
随机推荐
- [洛谷P2580]于是他错误的点名开始了
洛谷P2580的一个水题,用啥都能过,不过为了练习一下刚刚学会的字典树,还是认真做一下吧. #include <cstdio> #include <cstring> using ...
- URL解析器urllib2
urllib2是Python的一个库(不用下载,安装,只需要使用时导入import urllib2)它提供了一系列用于操作URL的功能. urlopen urllib2.urlopen可以接受Requ ...
- NodeJS+express+mogondb学习笔记01
0.准备工作 安装nodejs环境 官网地址:https://nodejs.org/en/ 下载好了 直接一路安装 也没有什么可以说的 不得不说nodejs对于新手上手还是很友好的,再加上现在n ...
- clear-fix清除浮动的两种写法
1. [代码]clearfix 清除浮动 .clearfix:after { content: "."; display: block; height: 0; font-size: ...
- bootstrap快速入门笔记(四)-less用法指南, mixin和变量
一,less变量,less文件 1.bootstrap.less 这是主要的 Less 文件.该文件中导入了一些其他的 less 文件.该文件中没有任何代码. 2.forms.less 这个 Less ...
- 线段树区间更新操作及Lazy思想(详解)
此题题意很好懂: 给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c. 需要用到线段树的,update:成段增减,query:区间求 ...
- .bind.apply() 解决 new 操作符不能用与 apply 或 call 同时使用
背景: 小明想要用数组的形式为 Cls.func 传入多个参数,他想到了以下的写法: var a = new Cls.func.apply(null, [1, 2, 3]); 然而浏览器却报错Cls. ...
- JavaScript中变量、参数、函数之间的关系
------------------------------ 废话不多说,直接开始. 我们看一段代码(参考其他资料所得) <script type="text/javascript&q ...
- 程序员要拥抱变化,聊聊Android即将支持的Java 8
WeTest 导读 Java 9预计今年也会正式发布,Java 8这个最具变革性且变革性最适于GUI程序的版本,Android终于准备正式支持.从自己开发JavaFx的感受,说一说Java 8应该使用 ...
- Spring框架入门
技术分析之什么是Spring框架 1. Spring框架的概述 * Spring是一个开源框架 * Spring是于2003 年兴起的一个轻量级的Java开发 ...