笔者接触struts2之时,对于web开发甚至还没有概念,仅有的知识是如何利用HTML、CSS和简单的JS进行静态网页的编写。对于开发一个网站所必需的后台、数据库基本没有了解。
因此这篇博文,可以说不单单是笔者利用struts2框架进行web开发的经验汇总,也是对目前为止web开发的一个简单梳理。
作为一名初学者,在没有系统学习计算机网络以及任何web实战经验的前提下,不断搜索成为了开发过程中至关重要的一环。因此本文在陈诉经验与学习脉络的基础之上,将罗列出一篇篇对我有帮助的文章,将基于struts2的web开发中遇到的一系列细节问题加以重现,希望为struts2以及web开发的初学者提供一定的借鉴。
一、web开发基本流程
我的理解中,基于struts2的web开发其实和它的运作机理相同,也十分很简单:
前端(网页)--------(接收用户的输入)-------->
后台(java写的action类)----(响应用户在网页中做出的输入,将必要的数据存储到数据库中)---->
数据库(通常以MySql数据库中的表的形式存在)------(返回响应所需的数据)-------------->
后台(与前一个java写的action类是同一个)---(处理从数据库中返回的数据,加工后送到前端网页,显示给用户)----->
前端(可能是同一个网页,也可能是不同的,显示的内容与用户之前的输入有关)。
以上的语言都比较好理解,大概只有后台里面的“java写的action类”令人费解。所谓action类,是struts2框架中处理前端网页和数据库的“大脑”,也是我们的网站能够处理一系列业务的核心。通常一个网站会有不同的action类来处理不同的请求/业务。它的主要功能是对接收并处理加工(通常要将新的数据存储到数据库中)来自前端网页的数据(用户的请求、输入的数据等待),并访问数据库,取出所需的数据,根据业务需求,返回前端网页展示所需要的数据。之所以叫做action类,其一,它是由java代码写成的一个class,其二,其作用在于take action according to request from front end and respond with data in database.(希望这段中英文夹杂不会让人感到难堪...)
没错,即使是肤浅的大白话,相信你很有可能一个字也看不下去,但是对于像我之前一样的菜鸟来说,基本的概念却必须提前建立起来,脑子里有了这么个框架,以后再往里面填东西就简单得多。(其实struts2本身也是这么一个填坑的过程)
二、MVC模型
在之前介绍的网页开发流程中,其实我已经不自觉地把web框架构成分成了三部分:前端、后台和数据库,并将他们与实体联系在一起:网页、java代码和数据库数据。
这背后事实上蕴含着这样一个广为人知的MVC模型,M--Model--Java对象,V--View--网页--HTML/CSS/Javascript,C--Control--Java控制类。
网上有很多关于MVC模型的介绍与入门教程,请读者自行搜索、阅读相关内容,想必定会加深读者对web开发流程的认识,形成初步的印象。
相关链接:
从MVC框架看MVC架构的设计 – 码农网 www.codeceo.com/article/mvc-framework-mvc-design.html
Servlet和JSP开发入门教程 | 天码营 - 新一代技术学习服务平台 https://course.tianmaying.com/servlet-and-jsp
三、前端入门
前端在第一部分中,我们将其对应为网页;在第二部分MVC模型中,对应着View部分。顾名思义,即用户通过浏览器所见的网页及其内容,便是前端。
学习前端,我们需要掌握HTML、CSS和Javascript三大神器。
通俗来说,HTML告诉浏览器显示什么内容,以怎样的格式(比如大小、位置等等)显示。因此HTML中包含着需要显示的文本以及为了标记文本格式的标签。除了文本,HTML还可以通过一系列标签引入图像、视频、音频甚至画图板等诸多功能。
更详细的介绍,请通过w3s网站学习。该网站覆盖了web开发的整套学习材料,是广为推崇的web学习网站。
w3s http://www.w3school.com.cn/
HTML 系列教程 www.w3school.com.cn/h.asp
虽然HTML能够指定文本的大小和位置,但功能十分有限。CSS则对HTML中的元素施加魔法,使之能够呈现出更多的样式,以更好的效果展现在用户面前。
CSS教程 http://www.w3school.com.cn/css/index.asp
如果你的网页是一成不变的,那么HTML和CSS足以做出令人惊艳的网页。但是一个静态的、难以响应用户输入的网页功能就大打折扣了。Javascript能操纵HTML和CSS,改变它们的展现方式,达到动态效果。
Javascript教程 http://www.w3school.com.cn/js/index.asp
四、Java入门
Java是广为使用的面向对象的编程语言,具有多平台的可移植性,附有齐全的库,也是struts框架中的后台语言。
struts框架中使用的java代码并无特殊要求,故在此不对Java做特别介绍,如果读者对Java语言不了解,请自行搜索相关资料阅读。在此推荐一个简明的Java入门教程,有过编程经验的读者应该能够在两三天的时间掌握基本的Java编程要求。
Java入门教程 https://course.tianmaying.com/java-basic
五、开始你的struts2 Hello World
接触一个新的框架/软件,配置问题往往既麻烦,又耗时,有时需要反复试验才能成功。如何在网页上显示一个HelloWorld呢?以下两篇文章可能会对你有所帮助。(如果遇到问题,请不要着急,stackoverflow、csdn以及分布各处的热心网友会答疑解难的,用好搜索引擎是成功的快捷通道)
为Struts 2.0做好准备 - Max On Java - BlogJava www.blogjava.net/max/archive/2006/10/10/74353.html
搭建一个简单的struts2.0的web工程 - joy_zhao988的专栏 - 博客频道 - CSDN.NET blog.csdn.net/joy_zhao988/article/details/8684283
六、实现一个struts2 CRUD
所谓CRUD,是Create、Remove、Update、Delete 4个英文单词的缩写,这代表着我们的网站不再只是一个能够显示Hello World的静态网站了,而必须能够根据用户的操作,在网页上反应出对应的结果。
CRUD操作的对象是数据库里面的数据,因此我们的网站必须能够连接到数据库。CRUD指令是用户在前端网页发出的请求,因此我们的后台java程序将发挥用处,一个个action类将根据用户输入的数据,访问数据库取出数据,经过处理后将结果重新存到数据库里,并返回我们希望用户看到的结果。
笔者的另一篇博客记录了如何实现一个具有CRUD功能的图书管理系统,内附有大量的配置与代码截图,希望能够对读者有所帮助。
struts2 CRUD 入门 配置 - zhangnf - 博客园 http://www.cnblogs.com/zhangnf/p/struts2.html
与之前的Hello World相比,大量的技术细节问题将逐渐暴露出来。笔者认为,最关键的问题是前端页面与后台java类的数据传递。再次附上链接:
struts2中action接收参数的方法 - 大陶陶 - 博客园 www.cnblogs.com/bukudekong/archive/2012/03/29/2423064.html
struts2从action向jsp传参数 - saobchj - 博客园 www.cnblogs.com/saobchj/archive/2012/05/09/2491641.html
其次便是jsp的如何有效显示数据。对jsp以及struts2背后的servlet的深入了解,可以参考以下教程:
Servlet和JSP开发入门教程 | 天码营 - 新一代技术学习服务平台 https://course.tianmaying.com/servlet-and-jsp
这篇文章也提供了jsp显示数据的有用信息:
Struts2 数据标签(四)s:param标签的三种赋值方法 - - ITeye技术网站 wl-ldy.iteye.com/blog/860169
当然,还会有很多的技术问题出现,请各位读者用好手边的书和手上的搜索引擎,自力更生,丰衣足食。
七、struts进阶——拦截器
有人说拦截器是struts2框架的核心,不假。拦截器提供了在前端页面与后台action类之间施加额外操作的重要手段。一个最典型的例子便是非法登陆浏览页面检测:
防止未登录用户操作—struts2拦截器简单实现 - - 博客频道 - CSDN.NET blog.csdn.net/zhutulang/article/details/38351629
有关struts2拦截器的相关知识覆盖了struts2的整套工作原理,感兴趣的读者可以自行查阅资料学习。
八、web进阶
想要做好一个网站,自然可以从web运作流程中的每个环节都加以考虑。比如,一个十分赏心悦目的前端,定会更加吸引别人的眼球。bootstrap便是一个十分优秀的前端框架,为前端开发者提供了许多有用的布局、组件、插件支持。使用bootstrap作为前端框架,可以实现现代化的网站布局,效果十分美观。
bootstrap中文文档 http://v3.bootcss.com/
如何高效实现一个动态响应的网站呢?jQuery是Javascript的封装,被誉为写的更少,做的更多的Javascript。值得一提的是,jQuery中还封装了ajax,可以实现在不刷新网页的前提下执行后台action类操作,并更新网页内容的强大功能。jQuery的编写十分容易上手,且功能强大,强烈推荐学习。
jQuery教程 http://www.w3school.com.cn/jquery/
利用JQuery实现Struts2的Ajax功能 - 编程记录 - 博客频道 - CSDN.NET blog.csdn.net/yongh701/article/details/44279635
九、小结
近三个月的学习,我从web小白一步步变成中白,期间推动我不断学习的动力,正是来自于网上流传各处的丰富的前人经验。出于此,我才有了将自己学习经验发表出来的想法。所以在此,向我文中引用到的各位作者表示感谢。
在此附上小组web开发的github项目,与各位读者共勉。
https://github.com/py100/project-staples