web应用的发展以及工作流程,spring在程序中的作用

web应用工作流程:

        tomcat遵循servlet规范,采用java原生socket对外提供服务,对请求流进行读取以及封装,编程人员可以继承HttpServlet进行服务的处理等操作,请求会进入service方法,编程点就在service方法

         假设所有的逻辑都在service方法里,举个例子

        登录:首先判断该请求是需要什么服务,然后进行相应的代码块选择,该代码块中,需要判断账号密码是否为空,然后去数据库查询是否有记录,接着返回给浏览器相应的正确或失败代码;

注册,首页展示,页面跳转,查询修改,逻辑删除,等等

一个service方法中,代码量极大,并且全部都是

If(登录){
  登录逻辑代码(操作数据库也在这)…
} else if(注册){
  注册逻辑代码(操作数据库也在这)…
}…else{}

这样一来不好读也不好编写以及维护,于是就想到了可以把服务模块化,登录抽取出来为单独的一个class,这样代码就变成了

If(用户操作){
UserHandler userHandler = new UserHandler();
If(登录){
userAction .login();
} else if(注册){
userAction .regist();
}…else{}
 } else if(其它操作){
其它Handler handler = new其它Handler();

}…else{}

这样就变成了service只需要new handler,其它代码在handler里编写即可,减少了service的代码量,使得service变得易读.同时逻辑清晰;

        这样的流程,每次service里边都要解析url和写很长的判断,一个if对应一个classclass里边代码冗余量还是很大,转发、逻辑代码、操作数据库全都在一个class中,代码很不友好,于是struts诞生了,它是对mvc开发模式的实现,使得开发人员不需要自己解析url,只需要按照约定定义class即可,将开发的重心放在了业务逻辑上边。

        为了使代码更加的清晰以及快速开发,我们经常将model层对数据的处理与封装再次细分为controllerservicedao三层,dao层通常使用框架(hibernate,mybatis)来做处理,使得程序更加健壮。当我们controller层调用service层的时候,需要new一个service层的类来使用,service层又调用了dao层的一个类,所以new service得时候,得把service层的dao new出来并给service来用,这样做使得代码很啰嗦,每次new的时候连锁反应,需要new很多必须使用到的类。

        而Spring正是解决了此类问题, ioc(控制反转),有了Spring,我们不用自己去管理类new类了,只需要按照约定配置好,我们只需要去使用就行了。Springtomcat服务器启动的时候,会把配置文件里边的东西执行一遍,将我们需要装载的controller全部实例化一遍,并且将里边的需要赋值的属性全部赋值(例如service层的类),如果该属性需要其他属性的支持,则该属性内其他属性的值也会赋值好(例如service层需要dao层的支持,dao层需要框架模板的支持)。我们只关心调用即可!

        以上便是学习java的三大框架,ssh,当然,实现mvc模式的框架还有springmvcspringmvc更加符合mvc开发模式,并且与spring无缝结合,形成了现在比较流行的框架ssm

        Spring工作流程

        Spring做了map映射,也就是ioc容器,它在内存中维护着一个巨大的hash表,表中key是路径,value是对象,也就是我们的controller层的一个类。在程序启动的时候,spring生成hash表,并等待请求的到来。

        浏览器发出http/https请求后,tomcat服务器解析出请求路径,struts或者springmvc框架进一步解析请求的是哪个类对象的路径,然后向spring要这个类对象根据key的路径,然后框架再解析出调用哪个方法,根据该对象获取里边的方法,进行调用处理参数数据,返回响应数据,struts或者springmvc框架再根据响应的数据进行页面的渲染以及返回,一次请求完成.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值