笔者接触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

struts开发经验汇总的更多相关文章

  1. iOS 音频开发经验汇总

    一.音乐播放类概念 iOS 下能支持歌曲和声音播放的的类有几个: SystemSound AVFoundtion库中的AVAudioPlayer #重要 MediMPMusicPlayerContro ...

  2. Python开发经验汇总

    1.工具 (1)编代码用“JetBrains PyCharm”: (2)要想编写的脚本能够直接双击运行,还需要用pyinstaller打包工具: (3)要下载pyinstaller就用Python自带 ...

  3. React项目开发经验汇总

    博客来源 小寒的博客   定义好全局配置信息 环境变量不要提取出来,配置信息提取出来 UI样式变量 定义好变量的作用不用多说 样式库建设 工具样式,复用性强的样式,这些class成为会是真个网站样式的 ...

  4. python网页抓取练手代码

    from urllib import request import html.parser class zhuaqu(html.parser.HTMLParser): blogHtml = " ...

  5. Struts学习之流程汇总

    struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...

  6. Apache Struts 2 漏洞汇总

    Apache Struts2 是一个基于MVC设计模式的Web应用框架,会对某些标签属性(比如 id)的属性值进行二次表达式解析,因此在某些场景下将可能导致远程代码执行. Struts2特征: 通过页 ...

  7. struts,hibernate,spring配置时问题汇总及解决办法

    1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor 缺少asm-3.3.jar 2.java.lang.NoClassDe ...

  8. ASP.NET MVC4入门到精通系列目录汇总

    序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...

  9. C#开源系统大汇总(个人收藏)

    C#开源系统大汇总 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...

随机推荐

  1. Android多媒体--MediaCodec的实例化方法

    *由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec的实例化方法主要有两种: 1.使用 ...

  2. 内核源码分析之进程地址空间(基于3.16-rc4)

    所谓进程的地址空间,指的就是进程的虚拟地址空间.当创建一个进程时,内核会为该进程分配一个线性的地址空间(虚拟地址空间),有了虚拟地址空间后,内核就可以通过页表将进程的物理地址地址空间映射到其虚拟地址空 ...

  3. syscolumns、sysconstraints、sysobjects

    1.根据表名查询对象ID SELECT OBJECT_ID('Production.Product') 结果:1429580131 不能作为输入参数:列名.约束名 能作为输入参数:表名 2.根据对象I ...

  4. nservicebus教程-目录

    表的内容 开始 坚持NServiceBus 扩展 每天 举办 管理和监控 发布订阅 长时间运行的流程 定制 版本控制 常见问题解答 样品 开始 概述 NServiceBus一步一步向导 架构原则 事务 ...

  5. Codeforces Educational Codeforces Round 15 A. Maximum Increase

    A. Maximum Increase time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. MANACHER---求最长回文串

    求最长回文串,如果是暴力的方法的话,会枚举每个字符为中心,然后向两边检测求出最长的回文串,时间复杂度在最坏的情况下就是0(n^2),为什么时间复杂度会这么高,因为对于每一个作为中心的字符的检测是独立的 ...

  7. SaltStack 最新版WebUI部署

    saltstack web uiweb平台界面 saltapi项目主页:http://salt-api.readthedocs.org/en/latest/ halite 项目主页:https://g ...

  8. error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案

    首先,卸载相关的软件,然后删除所有和virtual studio相关的目录 然后如果还出现该问题,则: Mark一下,解决方法:将嵌入清单设置为"否" 发生场合:在用 C++写一个 ...

  9. DataSource , DataSink, DataSourceLoop

    Script assertion in login:

  10. socket.io+angular.js+express.js做个聊天应用(一)

    node,express开发环境等安装如果已经搞好了. justhacker@justhacker-ThinkPad-Edge-E440:~/projects/nodejs$ express -e c ...