在业务逻辑的层面上分析一波网页运转中的servlet(不涉及代码,是对结构的描述)(小白写作,欢迎指正)

今天上课老师用一个小小的例子给给我们分析了一波如何使用servlet书写代码结构,感觉老师讲的非常生动,于是嘿,晚上来一个复盘,加深一下印象!


首先明确servlet的功能(只有三个!):

第一个:接收请求
这个接收的请求我认为呀,就是主要来自两方面嘛,一个是来自别的servlet的请求转发,另一个是在servlet中接收来自HTML等其他静态动态页面的请求。(当然是针对现阶段来说的,我并没有学的很深入)
第二个:完成业务逻辑(主要是从数据库中查询相关数据,宏观调控等)
当然我的认识很浅薄,老师给我们提了提了MVC模型,其中servlet就是位于其中的C:controller,用于调控,其中还提到了高聚合低耦合,在写servlet业务逻辑的时候,能将功能细化就功能细化,不要将所有的业务逻辑代码都写到一个servlet中,这样虽然可以实现,但是代码的可维护性和可读性都太低,所以接下来的分析就会用到多个servlet类。(可能这一段文字中我有错误,应该是我记忆的问题,不要说老师讲的不好呀铁子们,欢迎指正)
第三个:返回请求
返回请求我想也就是页面跳转或者将查询到的数据封装成为对象再次请求转发。

来了!例子来了!

1.以infoq这个网站为例,在地址栏里面输入路径,就会给这个路径绑定的servlet发送一个请求

在这里插入图片描述
servlet接收到一个请求后(我认为这个servlet是一个统筹调度的servlet),就会调用request的setAttribute()方法,将这个请求访问主页的请求转发给一个专门在数据库中查询数据封装对象的servlet中,就命名为ShowServlet吧。(虽然是初学者,但是不可能将所有servlet散乱放置,于是我大胆猜想有一个showservlet类用来作为一个小型的控制中心,收到不同的请求就会将请求转发给不同的servlet)
那有一个问题,一共有四种方式共享数据,从小到大分别是page, request, session, servletContext, 为什么偏偏选择这个呢?老师提到,在写代码的过程中,最好是将作用域范围从小到大,当然page是不可能的,因为这个不是提交给当前页面就能解决的,是必须提交到服务器上才可以的,所以最合适的是提交给request,当然,因为这个不是每个用户独特的访问,所以不需要会话机制就可以。
因为前面提到,一个servlet完成3件事情就可以啦!因为我们是动态页面的原因,ShowServlet将这个请求转发给ShowIndexServlet,然后在ShowIndexServlet中实现一个在数据库中查询数据并且返回数据封装成对象的类SearchData(当然这个类也是拥有多个方法),并且调用其中的searchIndexData()方法,当然这个方法的返回值是Boolean类型的,根据true或者false的返回值将不同的信息写进request中,然后转发到一个ShowIndex.jsp页面中显示信息。这样初始访问就完成啦!

2.点击一个超链接在这里插入图片描述

点击其中的一个轮播图,其中当然这个轮播图也是对应一个超链接的,我才想呀(因为不知道背后人家是怎么写的,我就只能猜了呀!哈哈!),每一个可以点击的超链接在HTML标签里面都有一个信息:对应超链接在数据库中的代号,也就是数据库表里面的主码,然后点击之后会重定向到ShowServlet这个类中,使用getParameter()获取对应的id,然后转发请求进入ShowIndexItemServlet这个类中,使用getParameter()获取对应的id,实现SearchData这个类,调用searchIndexItemData()这个方法,将获取到的信息封装成为一个对象,根据方法返回的true或者false分别转发给不同的jsp

当当当当,我进来啦!

在这里插入图片描述

最后看一下我的框架图吧:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值