2009-12-22 传智播客——Struts1 (转载)

 今天是Sturts1的最后一天,老佟下午做了一个综合性练习,十分经典!通过这个练习也让我感觉到了老佟的功力深厚。这个练习明天我再做。

 

         今天的重点内容有:MappingDispatchAction、动态的ActionForm、预显表单、struts国际化和文件上传!

 

一、MappingDispatchAction

         我们知道一个DispatcherAction可以处理多个用户请求(通过sturts-config.xml配置),但一个DispatchAction只能有一个ActionForm。这就是它的最大缺点,所以Sturts为我们提供了一个折中的处理办法——MappingDiapatchAction(位于ActionDispatchAction之间)。

         我们在工程中新添加一个MappingDispathAction

import javax.servlet.http.*;

import org.apache.struts.action.*;

import org.apache.struts.actions.MappingDispatchAction;

 

public class TestMappingDispatchAction extends MappingDispatchAction {

    // add处理

    public ActionForward add(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response)

           throws Exception {

       System.out.println("TestDispatchAction.add");

       return mapping.findForward("success");

    }

    // find处理

    public ActionForward find(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response)

           throws Exception {

       System.out.println("TestDispatchAction.find");

       return mapping.findForward("success");

    }

}

 

         struts-config.xml添加:

<action path="/add"

           type="cn.itcast.cc.actions.TestMappingDispatchAction"

           parameter="add"

           name="AddActionForm">

</action>

<action path="/find"

           type="cn.itcast.cc.actions.TestMappingDispatchAction"

           parameter="find"

           name="FindActionForm">

</action>

 

         此时JSP页面中的请求连接必须修改为:

<html:link action="/add">add</html:link>

<html:link action="/find">find</html:link>

        

老佟推荐使用MappingDispatchAction。在特殊情况下使用DispatchedAction吧!

 

二、动态的ActionForm

         我们在使用ActionForm时,我们必需手动添加代码。如果ActionFrom非常多时我们就需要手动添加大量代码。动态的ActionForm则不老板娘我们手动添加代码。

 

         例,处理用户登陆的动态ActionForm,向struts-config.xml中添加:

<form-beans>

       <form-bean name="dynaAction" type="org.apache.struts.action.DynaActionForm">

           <form-property name="username" type="java.lang.String" />

           <form-property name="password" type="java.lang.String" />

       </form-bean>

</form-beans>

         不需要手动编写ActionForm,“type="org.apache.struts.action.DynaActionForm"”是struts中自带的ActionForm。“name="username"”必须与表单的字段名称相对应。“type="java.lang.String"”字段值的类型,需要指定全类名。

 

三、预显表单

         比如用户修改自己的信息,当用户修改并提交了错误信息里。表单页面需要给出提示,并回显用户提交的数据(而不是显示空表或修改之前的原表),因为用户可能修改了五个地方,确只有一个地方的数据不合法。

         这个解决方法很简单,只需要使用strutsHTML标签即可。比如显示用户名的标签“<html:text property="username"/>”。因为我们在struts-config.xml中配置了这个页面的namescope属性,所以,struts先去到scope指定的域中查找名称为name的属性指定的ActionForm

         当请求派发到指定的页面之前,Strtus会取出ActionForm中对应的字段值,并生成value=”字段值添加到<input …>中。

         除了使用插件结合html标签进行校验外,这个回显的功能也是strutshtml标签的一大特色!

 

四、Struts国际化

         还记得以前学习的WEB应用的国际化吗?(使用的是JAVA国际化组件)回忆一下,我们需要编写一个属性文件,比如名为“language.properties”它是默认的文件如果国际化组件找不到与本地语言对应的配置文件就会使用这个默认文件。中文的文件名应该为“language_zn_CN.properties”、英文的文件名为“language_en_US.properties”,它们的键名称相同,但值是相应国家的同义文字。然后我们需要调用ResourceBundle.getBundle(“language”);返回一个ResourceBundle对象,它根据计算机本地默认语言加载对应的配置文件。之后根据需要调用ResourceBundle.getString(String key); 返回需要的值。

 

         嗯嗯,Struts中的国际化与此相同。比如我们之前使用的错误信息资源文件“MessageResources.properties”我们在struts-config.xml指定了它被做为struts的资源:

<message-resources parameter="MessageResources"></message-resources>

同样,我们定义中文的资源文件为“MessageResources_zh_CN.properties”、英文的资源文件为“MessageResources_en_US.properties”,它们的键名相同,但值是相应国家的同义文字。struts-config.xml不需要修改。这样,Struts在加载struts-config.xml文件时,也会自动根据本地默认语言加载相应的资源文件。这样在以后的应用直,直接使用键名即可获取本地语言的值。比如:

new ActionMessage("username.exist")

如果本地默认语言是中文,则信息值为:“用户已存在!”。如果本地默认语言是英文,则信息值为:“user name already exist!”。

 

五、文件上传

         这个也很简单哦~~(说着简单,看着也简单,做就是另一回事儿了!)。

我们以前的文件上传是怎么实现的?需要加载“commons-fileupload”和“commons-io”两个jar包,在处理文件上传表单的servlet中调用“ServletFileUploadObj.parseRequest(request);”方法解析request,然后遍历它返回的List并调用“FileItemObj.isFormField()”判断这一项是表单字段还是文件上传,如果是文件上传则保存文件

 

Struts中的文件上传也需要使用“commons-fileupload”和“commons-io”两个jar包。我们设计的表单必须使用strutshtml标签,在文件上传标签处使用“<html:file…>”:

file: <html:file property="file"></html:file>

 

         在对应的ActionForm中需要添加一个“FormFile”类型的成员,它用于存放提交的文件信息和文件输入流。Ok,这样我们就可以在处理表单的Action中直接获取文件提交字段了!

 

         今天做一下简单的总结,没有添加代码详细说明。框架是简单了程序的开发,这是十分有意义的,它可以节省很多不必要的工作,利于项目的扩展与维护。它使得程序员可以节省更多的时间用于学习或做项目研究,怎么能说成是毁程序员的饭碗呢?!

 

         今天下午的那个练习十分经典,这个我明天来做一下。突然从WEB基础跳到框架的学习,多少有些不习惯,尤其是第一天。不过现在好些了,也更期待学习hibernate框架和spring框架,并将他们应用于项目中!

 

         加油!

 

我总给自己加油,当然也有那些关心我的亲人和朋友们,感谢他们!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《JavaWeb程序开发入门》是由传智播客出版的一本介绍JavaWeb开发的教程,主要面向初学者。这本教程详细介绍了JavaWeb开发的基本概念、常用技术和实践方法。 首先,这本教程提供了JavaWeb开发的基础知识。它介绍了JavaWeb开发的基本原理,如Servlet、JSP等技术的概念和使用方法。它还讲解了JavaWeb开发中的MVC架构模式,帮助读者理解Web应用程序的组织和开发方式。 第二,教程介绍了JavaWeb开发中常用的技术和工具。例如,它讲解了如何使用JavaWeb开发中常用的框架,如Struts、Spring和Hibernate。同时,它还介绍了JavaWeb开发中的数据库设计和访问技术,如MySQL和JDBC等。 第三,教程提供了大量的实例和案例。通过这些实例,读者可以学习如何搭建一个完整的JavaWeb应用程序,包括前端页面的设计和开发,后端业务逻辑的实现以及数据库的设计和使用。 总的来说,《JavaWeb程序开发入门》是一本适合初学者学习JavaWeb开发的教材。它清晰地介绍了JavaWeb开发的基本原理和常用技术,通过实例的演示,帮助读者掌握JavaWeb开发的基本技能。这本教程简洁明了,容易理解,是学习JavaWeb开发的好选择。 ### 回答2: javaweb程序开发入门指的是学习使用Java语言开发Web应用程序的基础知识和技能。而传智播客是一个培训机构,有提供相关的教材,其中也包括了javaweb开发的PDF版本文档。 对于想要学习javaweb开发的人来说,传智播客的PDF文档是一种非常便利的学习资源。这些文档涵盖了javaweb开发的各个方面,包括基础的Java编程语法、常用的开发工具和框架、数据库的使用和设计以及常用的服务器配置等内容。它们提供了一个系统的学习路径,帮助学习者逐步了解和掌握javaweb开发的基本知识和技巧。 通过传智播客的PDF文档,学习者可以按照自己的进度和需求,有针对性地学习相关知识。这些文档也可以很好地配合传智播客的课程使用,帮助学员更好地理解和应用所学知识。 总的来说,传智播客的javaweb开发入门PDF文档是一种非常有用的学习资源,可以帮助初学者系统地学习javaweb开发,并为他们打下坚实的基础。 ### 回答3: 传智播客的Javaweb程序开发入门PDF是一本很受欢迎的教材,对于想要学习Javaweb开发的初学者来说,是一本很好的资源。这本PDF全面介绍了Javaweb的基础知识、开发环境搭建、Servlet、JSP、数据库操作等内容,几乎涵盖了Javaweb开发的方方面面。 在这本PDF中,你将学习到如何搭建Javaweb开发环境,包括下载和安装Java JDK、Eclipse IDE、Tomcat服务器等。之后,你将学习到Servlet的基本概念和使用方法,如何处理HTTP请求和响应,如何使用Servlet来编写后台逻辑代码等。接下来,你将学习到JSP的基础知识,包括JSP的语法、常用标签和表达式的使用方式等。在学习这些基础知识之后,你将学习到如何使用JDBC进行数据库操作,包括连接数据库、执行SQL语句、处理结果集等。 通过阅读这本PDF,你将对Javaweb程序开发的整个流程和步骤有一个全面的了解,并能够独立地开发简单的Javaweb应用程序。当然,这只是入门级别的学习资源,如果你希望进一步深入学习Javaweb开发,还需要进一步学习其他相关的知识,如框架的使用、前端开发等等。 总的来说,传智播客的Javaweb程序开发入门PDF是一本很好的学习资源,对于初学者来说是入门的重要材料。希望通过学习这本PDF,你能够对Javaweb开发有一个良好的基础认识,并能够进一步深入学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值