上一篇我们讲了Struts的配置以及运行环境,这一篇我们通过一个实例来说明Struts实现MVC的过程和Struts开发WEB应用的一般方法。
(1)实例介绍
这是《论文在线提交》系统的用户注册部分,用户填入用户名(userid)和Email地址(email)后,如果Email和userid在数据库中不存在,则注册成功,将系统生成的8位密码发送到用户的信箱里。数据表定义如下:
CREATETABLEpasswd(
useridvarchar(20)DEFAULT''NOTNULL,#用户id
passwordvarchar(16)DEFAULT''NOTNULL,#密码使用PASSWORD()加密后的
emailvarchar(50)DEFAULT''NOTNULL,#email
PRIMARYKEY(userid),
KEYpassword(password)
);
(2)不使用MVC模式的实现
有过ASP设计经验的开发人员,如果看到这样一个功能,那简直是太简单了。只要设计一个表单,然后post给一个asp页面,在这个页面中实现数据检查(检查email和用户名是否存在)及数据插入和email发送的功能。如果纯用jsp实现,基本流程也是一样的。这样做有什么不好呢?我们先看使用Struts的MVC来实现这样的功能,然后我们再做一下比较。
(3)使用Struts MVC实现
如果使用框架,我们就必须按照框架进行编程,而不是“自由”的编程,我们必须在实现中有M,有V、有C。下面看一下Struts实现MVC的一般流程。
i.这是HTML中表单的定义,action指定要将表单中的数据提交给谁进行处理,看以下几种情况:1. 纯用jsp,action肯定是一个jsp文件;2.使用jsp/JavaBean方式,action也是一个jsp,但是它将form中的数据映射到javaBean中,然后在jsp文件中进行获取和处理;3. 采用MVC方式,这要转变一下思路,脑子中要时刻清醒,M是什么,V是什么,C是什么,并且要理解它们的用途,不可用错和滥用。下面我们看一下Struts中MVC的表现方式和使用方法。
ii 首先我们看M、V和C的表现。在Struts中,
首先看viewer,这是表现层,主要有jsp、servelt和javabean组成。也就是说我们将表单的数据放到javabean中,这个过程都是viewer的工作;
Controller,控制器主要是实现数据的验证,并且实现跳转,就是要将控制权交给“谁”。譬如:在用户注册中,当用户将数据传到bean,然后到action时,action去判断email是否存在,如果存在将页面跳转到error.jsp或者输出错误信息,如果不存在就跳转到注册成功的页面。
Model,这是业务逻辑,这在Struts中没有强制定义,主要功能就是实现业务逻辑,是功能体,譬如实现数据库的插入,删除等。可以是POJO,也可以是EJB等。
(4)用Struts实现用户注册。
第一步、实现viewer,有以下几个部分组成,signin.jsp(显示输入form和错误显示)、SignForm.java(一个javaBean,不过在Struts中要继承自ActionForm,实现数据映射和简单的验证)。一下是关键代码:
signin.jsp
<fontcolor=red>
<html:errors/>---错误处理详细信息见本blog《Struts中的错误处理流程》
font>
<html:formaction="/sign.do">
---sign.do是一个Action,在解释Struts-conf.xml时说明
<bean:messagekey="sign.userid"/><html:textproperty="userid"/><br>
<bean:messagekey="sign.email"/><html:textproperty="email"/>
<html:submit><bean:messagekey="login.signup"/>html:submit>
html:form>
说明:<bean:messagekey="sign.userid"/>从资源文件中读取数据,详细信息见本blog的《struts中资源文件的使用》SignForm.java
1packageuser;
2
3importjavax.servlet.http.HttpServletRequest;
4
5importorg.apache.struts.action.ActionError;
6importorg.apache.struts.action.ActionErrors;
7importorg.apache.struts.action.ActionForm;
8importorg.apache.struts.action.ActionMapping;
9
10/**//**
11*@authorhan
12*@companysoochowuniversity
13*注册bean
14*/
15publicclassSignFormextendsActionForm{
16privateStringuserid=null;
17privateStringemail=null;
18privateStringpassword=null;
19
20
21/**//**
22*@returnReturnsthepassword.
23*/
24publicStringgetPassword(){
25returnpassword;
26}
27/**//**
28*@parampasswordThepasswordtoset.
29*/
30publicvoidsetPassword(Stringpassword){
31this.password=password;
32}
33/**//**
34*@returnReturnstheemail.
35*/
36publicStringgetEmail(){
37returnemail;
38}
39/**//**
40*@paramemailTheemailtoset.
41*/
42publicvoidsetEmail(Stringemail){
43this.email=email;
44}
45/**//**
46*@returnReturnstheuserid.
47*/
48publicStringgetUserid(){
49returnuserid;
50}
51/**//**
52*@paramuseridTheuseridtoset.
53*/
54publicvoidsetUserid(Stringuserid){
55this.userid=userid;
56}
57
58publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
59userid=null;
60email=null;
61}
62//验证
63publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){
64ActionErrorserrors=newActionErrors();
65
66if(this.userid==null||this.userid.length()<1){
67errors.add("userid",newActionError("userid.required"));
68}
69
70if(this.email==null||this.email.length()<1){
71errors.add("email",newActionError("email.required"));
72}
73
74returnerrors;
75}
76}
从代码我们可以看出,SignForm除了实现bean的getter和setter功能外还实现了简单的验证,即验证userid和email是否为空,若空则出错!
关于form的action,我们在讲action和编辑struts-config.xml文件时会进行说明。
分享到:
相关推荐
总的来说,这份压缩包可能是一个宝贵的资源,即便资料年代稍久,但对于初学者来说,理解Struts的基础概念、实践开发流程以及MVC架构仍然是非常有价值的。通过这些资料,你可以逐步掌握Struts的使用,并为深入学习...
《J2EE-Spring-Stucts-Hibernate架构-经典》是一门深度剖析J2EE平台技术的课程,总共435页,旨在为学习者提供一个清晰、全面的J2EE技术框架理解,并通过实际操作训练提升其在J2EE Web应用开发中的编程能力。...
在这个学生信息管理系统中,Struts2主要负责接收用户请求,控制应用程序流程,并将处理结果返回给用户。 **Hibernate框架** Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,...
此外,订单管理是系统的核心部分,包括订单创建、查询、支付处理和状态跟踪,确保了从购票到出票的完整流程。 在实际运行过程中,系统还需要考虑并发控制、事务管理以及错误处理等问题,以应对多用户同时操作的场景...
这简化了开发流程,提高了代码的可读性和维护性。 3. **Result组件**:该组件主要用于整合第三方视图技术,如JSP、FreeMarker等。通过Result组件,开发者可以灵活地选择最适合项目需求的视图技术,增强了框架的适应...
这种方式简化了用户登录流程,同时增强了安全性。 接下来,我们关注Structs框架。Structs是一个轻量级的MVC(Model-View-Controller)Web开发框架,它简化了Java Web应用的构建。集成Structs到CAS客户端意味着我们...
在论坛管理系统项目中,UML可能包括用例图(描述用户与系统交互)、类图(表示系统中的类及其关系)、序列图(展示对象间的交互顺序)、状态图(描述对象生命周期中的状态变化)等,帮助设计者理解系统结构和流程。...
#### 3. 实例分析 文章中提到,通过一个具体的例子来介绍如何使用Struts实现MVC机制的Web应用。尽管原文没有给出具体的示例代码,但我们可以想象这样一个场景:一个简单的在线购物系统,其中包括商品列表、购物车...
总的来说,Struts2-2.5.16的jar包和源码提供了一个全面的学习资源,涵盖了MVC设计模式、请求处理流程、拦截器机制、结果类型和配置等多个方面。通过深入研究,开发者不仅能掌握Struts2框架的使用,还能提高对Java ...
3. **DAO(Data Access Object)**: 用于与数据库交互的接口或抽象类,通常包含增删查改等基本操作。Hibernate的Session接口可用于实现这些操作。 4. **Service层**: 业务逻辑处理层,调用DAO实现具体业务功能,如...
3. **Service层**:定义业务逻辑,封装DAO操作,提供给Action层调用。 4. **Action层**:实现Struts2的Action,接收前端请求,调用Service层的方法,处理业务逻辑后返回结果。 5. **DWR配置**:在DWR配置文件中声明...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为开发者提供了构建可维护、可扩展的Web应用程序的...通过这个例子,你可以了解Struts2的基本工作流程,为后续的Web开发打下基础。
3. 购物车模块:用户可以添加商品到购物车,修改数量,进行结算。 4. 订单模块:处理订单的创建、支付、状态跟踪等流程。 5. 支付模块:与第三方支付平台接口对接,实现在线支付。 6. 客服模块:提供咨询、投诉、...
3. 订单处理:用户选购商品后形成订单,这涉及到订单状态的跟踪、支付处理、库存管理等。EJB可以帮助处理这些复杂的业务流程,确保数据的一致性和事务的完整性。 4. 购物车:购物车功能可能通过Session Bean实现,...