零距离接触struts

        Struts今天学习完了,与上个学习项目相比,这个的学习慢了很多,主要还是自己懈怠了。

        Struts是一个很经典的MVC框架。

ActionServlet

        ActionServlet俗称前端控制器,对URL进行截取,由截取到的URL获取到struts-config中配置的以此URL为path的Action。

        ActionServlet还利用BeanUtils对request中的parameter的获取进行了封装成了一个ActionForm,从而使得获取参数这个环节简单了很多。

        此类是有Struts进行的实现,无需修改。

ActionForm

        ActionForm是对页面参数获取进行的封装。此类编写要求:属性要有getter和setter方法,名称一般与表单上name要求一致。

        获取参数用的方法是getElementsByName,所以获取到的是一个数组,所以如果要获取多个(checkbox),那么在ActionForm中用一个数组接收即可。

        如果获取的是上传数据,那么用FormFile参数接收即可,多文件上传在后续博客会进行详细叙述。

        ActionForm的存在,从另一方面减少了开发的工作:转换器。在ActionForm如果设置参数为int类型的,那么会直接将页面参数转成int类型的,这些都归功于转换器。需要注意的是java.util.Date在ActionForm没有转换器,所以如果要用这个类型那么转成字符串或者自定义一个转换器。

Action

        Action就是业务控制器了,主要完成参数的获取,Model的调用,转向这三个功能。

        在参数获取方面,有ActionForm收集表单数据,还可以自己通过request进行获取

        在转向方面,struts提供了ActionForward这个类,可以通过ActionMapping获取,也可以自己手动new一个。

        需要注意的是:Action是单实例的,所以会存在线程安全问题。

ActionForward

        ActionForward封装了转向信息,在配置Action时对forward标签进行配置(非forward属性)。

ActionMapping

        每一条Action的配置信息,都以path为key,值为ActionMapping在Map中进行了存储,在访问时,如果Map中没有以path为key的记录,那么就返回有unknown属性的mapping,如果没有,那么就将此异常交给tomcat来处理。

        关于Action的配置,都在ActionMapping中有所体现,例如type可以用可以用它getType()进行获取,在ActionServlet中也是通过这个方法获取到类名从而实现动态加载然后放到Map中的。

ForwardAction

        这个是一个Action,如果没有特别需要,他等价于Action配置forward属性。

        二者区别:

        在ActionServlet中,processForward方法是用来判断是否设置了forward属性的,如果设置了,那么就会直接返回,Action不会进行实例化。

        而ForwardAction的的转向页面是配置在parameter中的,而type统一配置成org.apache.struts.actions.ForwardAction,此Action会进行实例化。

        如果在Action没有处理,那么上面两种方法都没有区别,但如果需要处理,就要用到后者,新建一个类继承ForwardAction,然后重写execute方法,进行完自己的处理后,然后调用父类execute方法,不需要自己写转向语句,因为在ForwardAction实现的execute方法中,有转向操作。

DispatchAction

        DispatchAction也是一个Action,它的出现是因为之前的写法Action的数量太多了,有些Action可能就是3-4行有效代码,但是就是一个类,对类的维护带来了不便。

        集成DispatchAction的类,不需要重写execute方法,只需要写与execute方法同参数同返回值的一个方法

        在配置DispatchAction时,配置一下parameter这个属性,然后在调用的时候,附带parameter设置的参数值为要调用的方法名(完全一样),那么就会调用到相应的方法上面去了。

其他边缘知识点:

        国际化、异常、模式匹配、标签库等就不做罗列了,我把他们归结为用的时候再详细学习的知识,现在知道就行了。

        本文书写目的旨在在今后再碰到MVC框架时,将新知识点往此框架上靠拢,所以主要是原理上的说明,如果只是实际使用,感觉还是很容易上手的,因为框架的出现带来的是项目开发的简单便捷以及规范。

        有不全,不对之处欢迎交流~~

《餐馆点餐管理系统——基于Java和MySQL的课程设计解析》 在信息技术日益发达的今天,餐饮行业的数字化管理已经成为一种趋势。本次课程设计的主题是“餐馆点餐管理系统”,它结合了编程语言Java和数据库管理系统MySQL,旨在帮助初学者理解如何构建一个实际的、具有基本功能的餐饮管理软件。下面,我们将深入探讨这个系统的实现细节及其所涉及的关键知识点。 我们要关注的是数据库设计。在“res_db.sql”文件中,我们可以看到数据库的结构,可能包括菜品表、订单表、顾客信息表等。在MySQL中,我们需要创建这些表格并定义相应的字段,如菜品ID、名称、价格、库存等。此外,还要设置主键、外键来保证数据的一致性和完整性。例如,菜品ID作为主键,确保每个菜品的唯一性;订单表中的顾客ID和菜品ID则作为外键,与顾客信息表和菜品表关联,形成数据间的联系。 接下来,我们来看Java部分。在这个系统中,Java主要负责前端界面的展示和后端逻辑的处理。使用Java Swing或JavaFX库可以创建用户友好的图形用户界面(GUI),让顾客能够方便地浏览菜单、下单。同时,Java还负责与MySQL数据库进行交互,通过JDBC(Java Database Connectivity)API实现数据的增删查改操作。在程序中,我们需要编写SQL语句,比如INSERT用于添加新的菜品信息,SELECT用于查询所有菜品,UPDATE用于更新菜品的价格,DELETE用于删除不再提供的菜品。 在系统设计中,我们还需要考虑一些关键功能的实现。例如,“新增菜品和价格”的功能,需要用户输入菜品信息,然后通过Java程序将这些信息存储到数据库中。在显示所有菜品的功能上,程序需要从数据库获取所有菜品数据,然后在界面上动态生成列表或者表格展示。同时,为了提高用户体验,可能还需要实现搜索和排序功能,允许用户根据菜品名称或价格进行筛选。 另外,安全性也是系统设计的重要一环。在连接数据库时,要避免SQL注入攻击,可以通过预编译的PreparedStatement对象来执行SQL命令。对于用户输入的数据,需要进行验证和过滤,防止非法字符和异常值。 这个“餐馆点餐管理系统”项目涵盖了Java编程、数据库设计与管理、用户界面设计等多个方面,是一个很好的学习实践平台。通过这个项目,初学者不仅可以提升编程技能,还能对数据库管理和软件工程有更深入的理解。在实际开发过程中,还会遇到调试、测试、优化等挑战,这些都是成长为专业开发者不可或缺的经验积累
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值