王崟
摘要:基本的JavaWeb开发分成Modell和Model2两种模式。本文分析了基于Moddl模式的Javaweb项目驱动教学的优点,以及这种模式对于后续框架课程支撑的不足。详细介绍了基于Mode12模式的教学设计以及实施时面临的问题。关键词:Javaweb;项目驱动式教学;M0dell模式;M0del2模式
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2019)28-0171-02
1引言
Java服务端开发课程是从Javaweb开始的,逐渐进阶到一些第三方的框架。基本的Java Web开发分成Modell和Model2两种模式。Modell方式下JSP页面承担了控制逻辑、部分业务处理和数据表现。Model2方式是一种MVC架构,Servlet作为控制器,而JSP页面负责数据表现。Java web项目驱动式教学也经历了从Moddl到Modd2方式的转变,本文介绍了Modell模式下的教学现状,以及转变为Modd2模式时的教学设计和面临的问题。
2Modell和Model2模式
(1)Moddl模式
Modell模式使用了两种技术:JSP和JavaBean。在Modell模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求进行处理并向客户端发回响应。业务逻辑可以完全放在JSP页面中,也可以放在JavaBean中。Mod-e11模式架构图如图l所示。
Modell方式中,JSP页面既充当控制器又作为表现层,大量Java代码和页面代码同时存在于JSP页面中,不利于扩展和维护。但是Model架构简单,初学者更容易入门,
(2)Modd2模式
Mode12方式是一种MVC架构,使用了三种技术JSP、Servlet和JavaBean。Servlet作为控制器,负责响应客户端请求,调用业务逻辑、转发或重定向到JSP页面。JSP负责数据表现。Java-Bean主要负责处理业务逻辑。Modell模式架构图如图2所示。
Modd2方式将控制层和视图层分离,代码结构清晰,易于维护,对于开发人员有更高的要求。
3Modell模式下的项目式教学带来的几点问题
Moddl模式下用户的请求直接提交给JSP页面处理,页面处理请求后向客户端返回响应。这种方式的处理逻辑相对简单,对初学者来说比较容易入门,只需要在JSP页面中写Java语句即可。在以前的教学中,商品展示、用户登录、注册、购物车、结账功能均使用Moddl模式来实现,只是在最后的订单模块使用servlet来完成请求的处理和分发。虽然这种方式学生可以比较轻松地完成一个购物网站的开发,也比较有成就感,但这种项目开发方式对于Java服务端开发的基本知识积累和后续框架课程带来了一些不利的影响。
3.1Servlet API的基础不扎实
由于Moddl方式中处理请求、请求转发等代码都是在JSP中完成的,这导致学生更多地使用JSP中的隐含对象,例如re-quest、session等,甚至使用JSP指令来完成。这些对象对应的服务端核心类和接口,学生不太熟悉,甚至不清楚这些对象究竟是什么类型,还可以执行哪些操作。请求转发操作对应的Java代码也不清楚。这对于以后的MVC框架课程中使用服务端对象会带来不利的影响。
3.2服务端配置不熟悉
Moddl方式的JSP页面,几乎不用任何服务端的配置,web.xml文件中无须特殊的配置,这导致学生不能体会配置在web开发的重要性。而Java web开发实际是需要大量的配置文件和注解的,在第一门入门课程,就应让学生关注配置。虽然引人Servlet之后,也只有一些Servlet的配置,但可以让学生在开发每一个功能的时候都知道配置的重要性。
3.3对于请求地址的认识停留在文件路径上
Web页面中存在大量超链接、表单提交地址,而Modell模式下请求都提交给JSP頁面,写地址时都是写页面地址,也就是页面文件的路径。页面文件的路径写法比较直观,也不易写错。但以后的MVC框架课程中有大量请求控制器的地址,这类地址是用户自定义的,和配置有关,无法从工程目录结构直接看出。学生缺乏这方面的训练,以后会难以适应。引入Serv-let作为控制器之后,学生就会学着根据servlet配置的url-pat-tern来访问servlet。
3.4不利于以后MVC框架的学习
Modell模式下,JSP页面既充当控制器又作为表现层,请求提交给JSP页面,JSP页面调用JavaBean完成了大部分工作。适应了这种模式之后,转为MVC模式开发会遇到困难。学生需要重新去认识JSP页面应只负责数据展现,而不应去参与控制和业务处理。学生还需理解请求应先到达控制器,由控制器解析请求,调用业务层或者持久层完成数据处理之后,再将要展现的数据保存在适当的模型中,转发到页面进行展示。
4Model2模式下的项目式教学理论知识模块改进方案
保持Modell模式下的理论知识教学顺序不变,课程的知识部分依旧分成Web服务器原理和Http协、Servlet技术、JSP技术、维护会话几个模块。
4.1加强Servlet API教学
在Servlet技术入门中,除了servlet的创建、配置、生命周期、获取请求参数和发回响应。还要强化ServletAPI的使用,将HttpServletRequest和HttpServletResponse的使用在servlet技术入门中讲透,特别是请求转发、重定向、在请求中保存/取得属性的方法。
在维护会话模块中,以前介绍cookie,session,applicmion对象时,均使用JSP范例,改革后范例必须结合servlet和JSP,学生要知道如何在servlet中使用上述对象,如何维护会话,也要知道在JSP页面中如何使用。
4.2Servia注解式配置和XML式配置均要强化
现在Servlet可以使用传统的XML方式的配置,也支持注解式的配置。虽然注解式的配置简单易懂,但注解只能加在自己开发的Servia类上,如以后使用第三方的servlet,还是得使用XML方式的配置。所以在教学中这两种方式都得要求学生掌握,每次练习,均要求学生用两种方式进行配置。
4.3弱化JSP访问JavaBean
由于JSP主要用于数据展示,JSP技术模块需要讲解JSP工作原理,JSP指令、JSP声明、Java程序片段、Java表达式、JSP注释。着重讲解如何取得请求中的参数和属性,一些不太常用的隐含对象只需要了解即可。
Mode12模式下请求都是提交给Servlet处理,如请求参数较多,需使用多句request.getParameter语句来取得参数值。虽然暂时有点麻烦,但以后的MVC框架都有请求绑定到控制器方法参数的手段。因此,JSP中的useBean标签几乎没有机会使用,这部分内容在JSP技术中可以不再介绍。
5Mode12模式下的项目开发案例改进方案
项目开发案例依旧采用购物网站,包括商品展示、用户管理、购物车管理、结账、查看订单和订单明细几大模块。网站将使用Model2模式开发,主要模塊的设计如下:
(1)商品展示模块仅有一个页面
原来的Modell模式商品展示有4个页面组成:全部商品、特价商品、商城新品、商品搜索。改进后,只有一个展示页面,由servlet根据用户的请求查询出商品列表后,存储在request中,转发到商品展示页面进行展现。
(2)用户管理中所有业务处理均移至Servlet中
登录中判定用户名、密码是否正确;注册中的判定用户名是否重复、插入数据库等功能均在由Servlet处理,处理后根据处理结果跳转到不同的页面。
(3)购物功能包含一个购物车展示页面和一个提交订单页面
添加商品到购物车、删除购物车商品、修改数量、清空购物车、提交订单功能均由Servlet处理。只有一个购物车展示页面,用来展示用户当前的购物车,一个填写订单收货地址页面。
(4)订单查看
查询订单功能由Servlet处理,查询出结果后转发到查看订单、查看订单明细页面。
6结语
本文探讨了Java web项目驱动式教学从Modell到Model2模式的改进,介绍了Modell模式的不足,给出了Model2模式的改进方案。